2017-03-26 75 views
0

這裏是我的代碼位數REG代碼

n=10000; 
k=2; 
v=(n-k); 
Y=trnd(v); 
x1=ones(n,1); 
x2=randn(n,1); 
X=[x1 x2]; 
u=randn(n,1); 
Ols.Betahat=(X'*X)^(-1)X'*Y 

但我得到這個錯誤:

The size of the matrix is not consistent. I attached an image of the statement

enter image description here

回答

0

您在Xn數據點,但你的Y只是一個號碼。您的Y應該是長度爲n(即n行和1列)的矢量。因此,對於每個數據點,您都會有適當的目標。

從打印畫面來看,u_i的作用並不完全清楚。 如果還給出u_i(也就是說,如果它的值已知),則應將其移至另一端,並將Y定義爲Y-u

另一方面,如果u_i表示未知錯誤(似乎是這種情況,因爲沒有提供任何信息),所以它不參與OLS代碼。

所以對於第一個方案(稱爲u_i),這將做的工作(我n=1000取代n=10000因爲後者在打印屏幕上寫的):

n=1000; 
k=2; 
v=(n-k); 
u=randn(n,1); 
Y=trnd(v,n,1) 
Y=Y-u; 
x1=ones(n,1); 
x2=randn(n,1); 
X=[x1 x2]; 
Ols.Betahat=(X'*X)^(-1)*X'*Y 

如果u_i是未知的,只是將其刪除從代碼中執行以下操作:

n=1000; 
k=2; 
v=(n-k); 
Y=trnd(v,n,1) 
x1=ones(n,1); 
x2=randn(n,1); 
X=[x1 x2]; 
Ols.Betahat=(X'*X)^(-1)*X'*Y