我在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循环的结果演变。
发布于 2019-04-17 22:18:34
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享受你的水果吧!
https://stackoverflow.com/questions/55729387
复制相似问题