考虑以下.m
代码
x_0 = x(start:start+size);
x_s1 = x(start-2:start+size-2);
x_s2 = x(start-4:start+size-4);
y_0 = y(start:start+size);
XX = [x_0 x_s1 x_s2];
beta = mvregress(XX,y_0);
之后beta
是......
beta =
0.0851
-0.0946
0.0102
但我认为它是一个大小为4
的列,因为回归类似于y_t = a + b_1 * x1_t + b_2 * x2_t + b_3 * x3_t
。所以我没有得到a
。
有人可以告诉我做错了吗?
答案 0 :(得分:0)
请注意,在Matlab中,size
是一个内置函数,因此您不应将其用作整数...
似乎没有错。我们没有看到x
和y
,所以我认为它们是列。
根据mvregress
文档,beta
的大小为3,因为XX
有3列。
如果将X指定为单个n×K设计矩阵,则mvregress返回beta作为长度K的列向量。例如,如果X是20×5设计矩阵,则beta是5 -by-1列向量。
我不确定您的x
数据,但是您写XX
的方式似乎没有常数项(您称为a
)。如果要计算常数项,可以在矩阵XX
的左侧添加一列。
XX = [ones(size, 1) x_0 x_s1 x_s2];
测试版的大小应为4,结果应类似于:
beta =
xxxxxx % this is a
0.0851 % b1
-0.0946 % b2
0.0102 % b3