双用于循环 MATLAB



我需要对n时间序列(nT观测值的向量)进行估计过程。我有公式来评估我的变量(使用 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 矩阵。

考虑到您已经设置的内容,这似乎很简单:

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的所有列都相同,因为每个系列的thetaresiduals都相同!

使用您更新的代码以及此答案中的更新代码,这已得到修复。

最新更新