Python 数据框中的滚动回归估计

新手上路,请多包涵

我有一个这样的数据框:

            Date         Y         X1         X2          X3
22   2004-05-12  9.348158e-09  0.000081  0.000028     0.000036
23   2004-05-13  9.285989e-09  0.000073  0.000081     0.000097
24   2004-05-14  9.732308e-09  0.000085  0.000073     0.000096
25   2004-05-17  2.235977e-08  0.000089  0.000085     0.000099
26   2004-05-18  2.792661e-09  0.000034  0.000089     0.000150
27   2004-05-19  9.745323e-09  0.000048  0.000034     0.000053

......

1000   2004-05-20  1.835462e-09  0.000034  0.000048     0.000099
1001   2004-05-21  3.529089e-09  0.000037  0.000034     0.000043
1002   2004-05-24  3.453047e-09  0.000043  0.000037     0.000059
1003   2004-05-25  2.963131e-09  0.000038  0.000043     0.000059
1004   2004-05-26  1.390032e-09  0.000029  0.000038     0.000054

我想运行一个滚动的 100 天窗口 OLS 回归估计,它是:

首先,对于第 101 行,我使用第 1 行到第 100 行对 Y-X1、X2、X3 进行回归,并估计第 101 行的 Y;

然后对于第 102 行,我使用第 2 行到第 101 行运行 Y-X1、X2、X3 的回归,并估计第 102 行的 Y;

然后对于第 103 行,我使用第 2 行到第 101 行运行 Y-X1、X2、X3 的回归,并估计第 103 行的 Y;

……

直到最后一行。

这该怎么做?

原文由 Cofeinnie Bonda 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 756
2 个回答
model = pd.stats.ols.MovingOLS(y=df.Y, x=df[['X1', 'X2', 'X3']],
                               window_type='rolling', window=100, intercept=True)
df['Y_hat'] = model.y_predict

原文由 Alexander 发布,翻译遵循 CC BY-SA 3.0 许可协议

statsmodels 0.11.0 添加了 RollingOLS(2020 年 1 月)

 from statsmodels.regression.rolling import RollingOLS

#add constant column to regress with intercept
df['const'] = 1

#fit
model = RollingOLS(endog =df['Y'].values , exog=df[['const','X1','X2','X3']],window=20)
rres = model.fit()
rres.params.tail() #look at last few intercept and coef

或者使用 R 式回归公式

model = RollingOLS.from_formula('Y ~ X1 + X2 + X3' , data = df, window=20)
rres = model.fit()
rres.params.tail()

原文由 user3226167 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题