我正在尝试对时间序列数据进行简单的乘法回归。为简单起见,我试图用仅两个自变量来证明概念。
我有4月30日至15-5 / 31/2019的月份,但已简化为3个月,因为此问题,我正在使用以下代码尝试复制statsmodels OLS样本。
example df:
X=pd.DataFrame({'ret1':[1,2,4]},['05/01/2019','05/02/2019','05/03/2019'])
y=pd.DataFrame({'ret1':[4,5,6],'ret2':[7,8,9]},['05/01/2019','05/02/2019','05/03/2019'])
model=sm.OLS(y,X)
results = model.fit()
#all of the above code works but when I try...
results.summary()
ValueError: shapes (3,2) and (3,2) not aligned: 2 (dim 1) != 3 (dim 0)
当我查看输出错误时,似乎在尝试对两个对象进行矩阵乘法而没有首先转置一个对象时失败了吗?当我尝试只使用数据帧的一列作为自变量来尝试相同的代码时,它就会通过。多元线性回归还需要做些额外的事情吗?
答案 0 :(得分:0)
除非我有误解,否则您似乎将X
和y
变量分配颠倒了。 y
应该是单个变量(列),而X
应该是单个变量(用于简单回归)或多个变量(用于多重回归)。
y=pd.DataFrame({'ret1':[1,2,4]},['05/01/2019','05/02/2019','05/03/2019'])
X=pd.DataFrame({'ret1':[4,5,6],'ret2':[7,8,9]},['05/01/2019','05/02/2019','05/03/2019'])
model=sm.OLS(y, X)
results = model.fit()
results.summary()
给出结果
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
ret1 3.2222 0.774 4.164 0.150 -6.610 13.054
ret2 -1.7222 0.487 -3.533 0.176 -7.916 4.472
请注意,如果需要,您需要使用X = sm.add_constant(X)
添加一个常数项。