我正在matlab中进行一些回归。
我想通过结构很好地存储变量。
以下是一些代码:
clc;
clear;
fruit_names={'Apple','Pear','Melon'};
Predictors.Apple = rand(500,11);
Predictors.Pear = rand(500,11);
Predictors.Melon = rand(500,11);
Returns.Apple = rand(500,1);
Returns.Pear = rand(500,1);
Returns.Melon = rand(500,1);
%%
kk=1;
for d = 1:length(fruit_names)
for i = [1,2,3,4,5,6,12,24,48,60]
for jj = 1:11
K = i;
xinit=[Predictors.(fruit_names{d})(:,jj)];
yinit=Returns.(fruit_names{d});
[b,bint,r,rint,stats] = regress(yinit,xinit);
Stats.(fruit_names{d})(kk+1)=stats(1);
kk=kk+1;%to help with reporting
end
end
end
说实话,这是我在一个简单示例中的最佳尝试。如果我没有记错的话,它确实需要计量经济学工具箱。
我遇到的问题是Stats结构存储我需要的结果,但是在第一个变量包含一些无用的零之后。
我已经发布并删除了一个较早的问题,该问题建议删除(kk,:)变量,但如果这样做,它仅包含最终结果,而不包含通过for循环进行的结果演变。
答案 0 :(得分:1)
它是问题所在的kk变量的位置。
似乎您需要从后两个循环中收集结果。
clc;
clear;
fruit_names={'Apple','Pear','Melon'};
Predictors.Apple = rand(500,11);
Predictors.Pear = rand(500,11);
Predictors.Melon = rand(500,11);
Returns.Apple = rand(500,1);
Returns.Pear = rand(500,1);
Returns.Melon = rand(500,1);
%%
for d = 1:length(fruit_names)
kk=1; %move the kk = 1 variable here.
for i = [1,2,3,4,5,6,12,24,48,60]
for jj = 1:11
K = i;
xinit=[Predictors.(fruit_names{d})(:,jj)];
yinit=Returns.(fruit_names{d});
[b,bint,r,rint,stats] = regress(yinit,xinit);
Stats.(fruit_names{d})(kk+1)=stats(1);
kk=kk+1;%to help with reporting
end
end
end
享受你的水果!