【问题标题】:Error in regression loop回归循环中的错误
【发布时间】:2017-05-17 19:26:17
【问题描述】:

下面的matlab代码是一个回归循环:

for j=1:size(X,2)
IdentityVector=ones((size(t,1)-1),1);
Y=X((2:end),j);
if j==1 
X2=[IdentityVector,X((2:end),((j+1):end)),Diff1X];
elseif j>1 & j<size(X,2)
X2=[IdentityVector,X((2:end),(1:(j-1))),X((2:end),((j+1):end)),Diff1X];
elseif j==size(X,2)
X2=[IdentityVector,X((2:end),(1:(j-1))),Diff1X];
end
[b(:,j)]= regress(Y,X2);
end

这对 beta 估计很有效,因为它对于每个 j 的 beta 尺寸都会相应调整,尽管如果我从估计中请求一些额外的特性/统计信息,例如[b,bint,r,rint,stats] = regress(y,X) 我为每个 j 尝试的调整不起作用。有什么帮助吗?

【问题讨论】:

  • 你能定义“不工作”吗?
  • 是的,正如马特所说,我试图将 bint 视为不是的向量。每个 j 都是一个 T*2 矩阵,这意味着最后我应该有一个 T*12 矩阵。似乎细胞更简单,所以我会坚持下去。当然欢迎任何其他建议!

标签: matlab loops regression


【解决方案1】:

我最好的猜测是您将所有输出视为向量,但事实并非如此。如果您阅读doc regress,您将看到bint 是p×2,r 是n×2,依此类推。这意味着您不能分配bint(:,j),因为bint 本身就是一个矩阵。而是尝试细胞。

[b{j}, bint{j}, r{j}, rint{j}, stats{j}]= regress(Y,X2);

【讨论】:

  • 非常感谢马特!那很有帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多