2017-01-03 2 views
-2

следующего код 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 

это работает отлично для беты-оценки, как это для каждого J размеров беты имеют регулировки соответственно, хотя, если я потребовать от оценка некоторых дополнительных функций/статистики, например [b,bint,r,rint,stats] = regress(y,X) настройки, которые я пробовал для каждого j, не работают. Любая помощь?

+4

Можете ли вы определить, что «не работает»? – Suever

+0

Да, как сказал Мэтт, я пытался лечить 'bint' как вектор, которого нет. Это матрица T * 2 для каждого j, что означает, что в конце я должен иметь матрицу T * 12. Похоже, что с камерами проще, поэтому я буду придерживаться этого. Конечно, любые другие предложения приветствуются! – Whitebeard13

ответ

0

Мое лучшее предположение заключается в том, что вы обрабатываете все выходы как векторы, которых они не являются. Если вы прочитали doc regress, вы увидите, что bint является p-by-2, r является n-by-2, так далее и так далее. Это означает, что вы не можете назначить bint(:,j), потому что bint сам является матрицей. Вместо этого попробуйте ячейки.

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

Спасибо большое Мэтт! Это было полезно! :) – Whitebeard13