如何在 Python Pandas 回归模型中使用滞后时间序列变量?

Posted

技术标签:

【中文标题】如何在 Python Pandas 回归模型中使用滞后时间序列变量?【英文标题】:How to Use Lagged Time-Series Variables in a Python Pandas Regression Model? 【发布时间】:2017-02-11 22:42:27 【问题描述】:

我正在创建时间序列计量经济学回归模型。数据存储在 Pandas 数据框中。

如何使用 Python 进行滞后时间序列计量经济学分析?我过去使用过 Eviews(它是一个独立的计量经济学程序,即不是 Python 包)。要使用 Eviews 估计 OLS 方程,您可以编写如下内容:

equation eq1.ls log(usales) c log(usales(-1)) log(price(-1)) tv_spend radio_spend

注意滞后相关和滞后价格条款。正是这些滞后变量似乎难以使用 Python 处理,例如使用 scikit 或 statmodels(除非我错过了什么)。

创建模型后,我想执行测试并使用该模型进行预测。

我对 ARIMA、指数平滑或 Holt Winters 时间序列预测不感兴趣 - 我主要对时间序列 OLS 感兴趣。

【问题讨论】:

【参考方案1】:

pandas 允许您在不移动索引的情况下移动数据

df.shift(-1)

将创建 1 个索引滞后行为

df.shift(1)

将创建 1 个索引的前向滞后

因此,如果您有每日时间序列,则可以使用 df.shift(1) 在您的价格值中创建 1 天的延迟

df['lagprice'] = df['price'].shift(1)

之后,如果你想做 OLS,你可以在这里查看 scipy 模块:

http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.linregress.html

【讨论】:

谢谢 - 这看起来不错。在估计模型之前,我是否需要创建所有滞后序列?或者有没有办法创建一个模型,在需要时计算滞后值? 普通最小二乘回归通常不需要任何滞后。您应该刚刚过去 X 和 Y 值来估计您的 Beta 以最小化错误。那么您可以在给定新 X 值的情况下估计任何 Y。如果您需要滞后模型。我们通常在 Xt-1 与 Xt 相关的“自回归”模型中引入滞后值,但这将是一个不同的模型 但是假设您想估计 Xt-1 和 X 之间的 beta,您可以使用 scipy 并将 df['price'].shift(1) 作为 X 和 df['price']作为 Y,这将校准具有 Xt = B*Xt-1 的 beta 谢谢,这很有帮助。顺便说一句,在许多计量经济时间序列模型中,使用了滞后变量(以及滞后因变量)。例如,价格项可能会滞后。 你救了我。真的。上帝祝福你。所有的祝福与你同在。 ;)

以上是关于如何在 Python Pandas 回归模型中使用滞后时间序列变量?的主要内容,如果未能解决你的问题,请参考以下文章

python多元线性回归怎么计算

如何在 Python Pandas 中输出回归表

回归模型 Pandas

使用Pandas数据读取器进行Python回归建模

Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读

python回归预测数据怎么导出?