使用sklearn线性回归拟合时间序列+绘图

时间:2018-02-23 22:17:55

标签: python pandas plot

我有以下时间序列由get_DP()输出:

                DP
date              
1900-01-31  0.0357
1900-02-28  0.0362
1900-03-31  0.0371
1900-04-30  0.0379
...            ...
2015-09-30  0.0219

[1389 rows x 1 columns]

注意:从1900年到2015年,每个月都有一个DP值,我只是将它们排除在外以避免混乱

我想在此DataFrame上使用简单回归来计算alpha&这个金融变量的beta(截距和系数研究)。我有以下代码:

reg = linear_model.LinearRegression()
df = get_DP()
df=df.reset_index()
reg.fit(df['date'].values.reshape((1389,1)), df['DP'].values)
print("beta: {}".format(reg.coef_))
print("alpha: {}".format(reg.intercept_))
plt.scatter(df['date'].values.reshape((1389,1)), df['DP'].values,  color='black')
plt.plot(df['date'].values.reshape((1389,1)), df['DP'].values, color='blue', linewidth=3)

但是,我相信我的x轴数据(日期)的重塑会使整个回归变得混乱,因为情节看起来像这样: plot

我犯了错误吗?我不完全确定用于回归w / DataFrame的最佳工具是什么,因为pandas用0.20删除了他们的OLS函数。

1 个答案:

答案 0 :(得分:2)

试试这个

reg = linear_model.LinearRegression()
df = get_DP()
df=df.reset_index()
reg.fit(df.date.values.reshape(-1, 1), df.DP.values.reshape(-1, 1))
print("beta: {}".format(reg.coef_))
print("alpha: {}".format(reg.intercept_))
plt.scatter(df.date.dt.date, df.DP.values,  color='black')
plt.plot(df.date.dt.date, df.DP.values, color='blue', linewidth=3)

请参阅reshape documentation