这是我的代码
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
但我收到了这个错误:
矩阵的大小不一致。我附上了声明的图像
答案 0 :(得分:0)
n
中有X
个数据点,但您的Y
只是一个数字。您的Y
应该是长度为n
的向量(即n
行和1列)。因此,对于每个数据点,您都将拥有适当的目标。
在打印屏幕上,u_i
的作用并不完全清晰。
如果同时给出u_i
(也就是说,如果您知道它的值),则应将其移至另一侧并将Y
定义为Y-u
。
如果另一方面u_i
代表一个未知错误(似乎是这种情况,因为没有给出关于它的信息),那么它就不会参与OLS代码。
因此,对于第一个场景(已知u_i
),这将完成工作(我将n=10000
替换为n=1000
,因为后者写在打印屏幕中):
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