首页 > 解决方案 > statsmodel 时间序列分析 - 使用内生变量和外生变量之间具有不同滞后的 AR 模型

问题描述

我正在尝试在 python 中构建一个 ARDL 模型,其中我有一个模型如下:

y = b0 + b1^t-1 + b2^t-2 + ... b5^t-5 + a1^x-1

换句话说,一个具有 5 个自回归滞后项和 1 个外生滞后项的时间序列模型。

我尝试使用 statsmodels.tsa.arima_model.ARMA,它允许外生变量,并且我得到了包含以下变量的输出:

常量,x1,ar.L1.y,ar.L2.y,ar.L3.y,ar.L4.y,ar.L5.y

我用来获取这些变量的代码是

模型 = ARMA(endog=returns, order=(ar_order, 0, exog_order), exog=exog_returns)

model_fit = model.fit()

打印(model_fit.summary())

基于 x1 的系数值,我假设这不是 1 时间滞后,而是外生变量的值作为一个整体影响。

无论如何要指定我只希望模型对模型中的外生变量使用 1 时间滞后?

标签: pythontimestatisticsseriesstatsmodels

解决方案


不要使用ARMA它是否已弃用。使用SARIMAXAutoReg

使用 exog 变量的关键是确保它们与它们影响的 y 数据对齐。在这里,我移动x了 1,这样就好像 x 的滞后在驱动 y。

如果使用 AutoReg,你可以做

from statsmodels.tsa.api import AutoReg
import numpy as np
import pandas as pd

rg = np.random.default_rng(0)
idx = pd.date_range("1999-12-31",freq="M",periods=100)
x = pd.DataFrame({"x":rg.standard_normal(100)}, index=idx)
x = x.shift(1) # lag x
y = x @ np.ones((1,)) + rg.standard_normal(100)
# Drop first obs which is NaN
y = y.iloc[1:]
x = x.iloc[1:]

# 5 lags and exogenous regressors
res = AutoReg(y,5, exog=x, old_names=False).fit()

# Summary
res.summary()

这产生

                            AutoReg Model Results
==============================================================================
Dep. Variable:                      y   No. Observations:                   99
Model:                   AutoReg-X(5)   Log Likelihood                -127.520
Method:               Conditional MLE   S.D. of innovations              0.940
Date:                Mon, 01 Mar 2021   AIC                              0.046
Time:                        14:57:44   BIC                              0.262
Sample:                    06-30-2000   HQIC                             0.133
                         - 03-31-2008
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.0500      0.098     -0.512      0.609      -0.241       0.141
y.L1          -0.0342      0.070     -0.486      0.627      -0.172       0.104
y.L2           0.0621      0.070      0.884      0.377      -0.076       0.200
y.L3          -0.0715      0.071     -1.009      0.313      -0.210       0.067
y.L4          -0.0941      0.070     -1.347      0.178      -0.231       0.043
y.L5          -0.0323      0.071     -0.453      0.651      -0.172       0.107
x              1.0650      0.103     10.304      0.000       0.862       1.268
                                    Roots
=============================================================================
                  Real          Imaginary           Modulus         Frequency
-----------------------------------------------------------------------------
AR.1            1.1584           -1.0801j            1.5838           -0.1194
AR.2            1.1584           +1.0801j            1.5838            0.1194
AR.3           -1.3814           -1.7595j            2.2370           -0.3559
AR.4           -1.3814           +1.7595j            2.2370            0.3559
AR.5           -2.4649           -0.0000j            2.4649           -0.5000
-----------------------------------------------------------------------------


推荐阅读