matlab中的分位数注册码

时间:2017-03-26 14:40:03

标签: matlab quantile

这是我的代码

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

但我收到了这个错误:

  

矩阵的大小不一致。我附上了声明的图像

enter image description here

1 个答案:

答案 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