Matlab 如何在AR(2)过程中缩放到特定方差

Matlab 如何在AR(2)过程中缩放到特定方差,matlab,variance,Matlab,Variance,我有一个AR(2)过程输出Z(t)=a*Z(t-1)+b*Z(t-2)+u(t),其中u(t)是加性高斯白噪声。假设过程Z(t)=aZ(t-1)+bZ(t-2)+c*u(t)是静止的(检查这里),我如何使输出观测值的方差Z为1 Matlab代码: Nt = 1000; Nseries = 10000; Zt = zeros(Nt,1); varZ = zeros(Nt,1); a = 0.95; b = -0.195; c = sqrt(1 - b^2 - a^2*(1+b)/(1-b) );

我有一个AR(2)过程输出
Z(t)=a*Z(t-1)+b*Z(t-2)+u(t)
,其中u(t)是加性高斯白噪声。假设过程Z(t)=aZ(t-1)+bZ(t-2)+c*u(t)是静止的(检查这里),我如何使输出观测值的方差
Z
为1

Matlab代码:

Nt = 1000; Nseries = 10000; 
Zt = zeros(Nt,1); varZ = zeros(Nt,1);
a = 0.95; b = -0.195; c = sqrt(1 - b^2 - a^2*(1+b)/(1-b) );

for i = 1 : Nseries
z = zeros(Nt,1);
z(1) = randn(1);  z(2) = randn(1);
for t = 3 : Nt
    z(t) = a * z(t-1) + b * z(t-2) + c * randn(1); 
end
Zt(i) = z(Nt);
varZ(i) = var(z);
end

% variance at time point Nt
var(Zt) 

%distr of variance estimator
[y,x] = hist(varZ,20);
bar(x,y)

您希望流程生成的Z(t)方差为1还是希望下一个Z(t)的方差为1?另外,您希望生成白噪声然后重新缩放它,还是希望白噪声产生正确的方差?这不是更大的问题吗?@LucBerthiaume:生成最后一个样本后整个过程的方差应为1。我认为这取决于噪声的方差,它控制着Z的var。我不确定噪声方差是否应该被重新调整。谢谢你的公式。但是,系数a=0.95和b=-0.195的真值。所以,如果我使用这个公式,那么我就不能用实际的系数来生成这个过程了。我明白了,一秒钟后,我会调整一个答案谢谢你,但是我认为有一个错误:你错误地在分子中写了(1-b^2)。相反,它应该是(1-b)^2Hmm,也许你是对的,让我今晚在家检查一下刚刚发布的测试Matlab代码。我认为您使用了var分布的一个小样本。
Nt = 1000; Nseries = 10000; 
Zt = zeros(Nt,1); varZ = zeros(Nt,1);
a = 0.95; b = -0.195; c = sqrt(1 - b^2 - a^2*(1+b)/(1-b) );

for i = 1 : Nseries
z = zeros(Nt,1);
z(1) = randn(1);  z(2) = randn(1);
for t = 3 : Nt
    z(t) = a * z(t-1) + b * z(t-2) + c * randn(1); 
end
Zt(i) = z(Nt);
varZ(i) = var(z);
end

% variance at time point Nt
var(Zt) 

%distr of variance estimator
[y,x] = hist(varZ,20);
bar(x,y)