2017-01-03 1 views
-2

folgenden Matlab-Code ist eine Regressionsschleife:Fehler bei Regressionsschleife

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 

das funktioniert für die Beta-Schätzung, wie es in Ordnung für jeden j die Abmessungen der Beta entsprechend passen, obwohl, wenn ich von der Anforderung Schätzung einiger zusätzlicher Merkmale/Statistiken, z [b,bint,r,rint,stats] = regress(y,X) die Einstellungen, die ich für jedes j versucht habe, funktionieren nicht. Irgendeine Hilfe?

+4

Können Sie definieren "funktioniert nicht"? – Suever

+0

Ja, wie Matt sagte, ich habe versucht, "bint" als einen Vektor zu behandeln, der nicht ist. Es ist eine T * 2-Matrix für jedes j, was bedeutet, dass ich am Ende eine T * 12-Matrix haben sollte. Scheint mit Zellen einfacher zu sein, also bleibe ich dabei. Natürlich sind auch andere Vorschläge willkommen! – Whitebeard13

Antwort

0

Meine beste Schätzung ist, dass Sie alle Ausgaben als Vektoren behandeln, was sie nicht sind. Wenn Sie doc regress lesen, werden Sie sehen, dass bint ein p-by-2 ist, r ist n-by-2, so weiter und so fort. Das bedeutet, dass Sie bint(:,j) nicht zuweisen können, da bint selbst eine Matrix ist. Versuche stattdessen Zellen.

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

Vielen Dank Matt! Das war hilfreich! :) – Whitebeard13