我需要对n
时间序列(n
观察的T
向量进行估算。我有公式来评估我的变量(使用for循环),但我需要重复此n
次(向量的数量)。
h0 = var(residuals);
ht=zeros(T,n); ht(T,1)=h0;
for i=2:T
ht(i) = theta(1) + theta(2)*residuals(i-1)^2 + theta(3)*ht(i-1);
end
所以这个循环为第一个系列中的所有观察值计算ht
,但是我需要另一个for循环来帮助我在所有系列中使用这个公式。
编辑:这是我根据以下答案完成的工作:
function ht = VarEQ(theta,residuals)
[T,n] = size(residuals)
for k=1:n
h0 = var(residuals(:,k));
ht=zeros(T,n); ht(1,k)=h0;
for i=2:T
ht(i,k) = theta(1,k) + theta(2,k)*residuals(i-1,k)^2 + theta(3,k)*ht(i-1,k);
end
end
end
当前问题:
现在ht
是所有列的零,只是最后一列正确的值。
变量
var
是方差的1xn行向量。使用k
,我只需要每个残差的标量。
theta
是3xn参数矩阵。
residuals
是一个Txn矩阵。
答案 0 :(得分:1)
鉴于您已经设置的内容,这似乎很简单:
function ht = VarEQ(theta,residuals)
[T,n] = size(residuals)
ht=zeros(T,n); % Initialise matrix OUTSIDE loop so it isn't over-written!
for k=1:n % additional loop for series 1 to n
ht(1,k) = var(residuals(:,k));;
for i = 2:T
% Ensure you are referencing the kth series
ht(i,k) = theta(1,k) + theta(2,k)*residuals(i-1,k)^2 + theta(3,k)*ht(i-1,k);
end
end
end
注意:之前,ht
的所有列都相同,因为theta
和residuals
对于每个系列都相同!
使用您更新的代码以及此答案中的更新代码,已修复。