Python Statsmodels ARIMA:如何在模型中添加/组合特性(变量)

Python Statsmodels ARIMA:如何在模型中添加/组合特性(变量),python,statsmodels,Python,Statsmodels,您好,我正在使用statsmodels在Python中建模ARIMA 代码如下: p = d = q = range(0, 2) # Generate all different combinations of p, q and q triplets pdq = list(itertools.product(p, d, q)) # Generate all different combinations of seasonal p, q and q triplets seasonal_pdq

您好,我正在使用statsmodels在Python中建模ARIMA

代码如下:

p = d = q = range(0, 2)

# Generate all different combinations of p, q and q triplets
pdq = list(itertools.product(p, d, q))

# Generate all different combinations of seasonal p, q and q triplets
seasonal_pdq = [(x[0], x[1], x[2], 1) for x in list(itertools.product(p, d, q))]

print('Examples of parameter combinations for Seasonal ARIMA...')
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[1]))
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[2]))
print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[3]))
print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[4]))

warnings.filterwarnings("ignore") # specify to ignore warning messages

for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            mod = sm.tsa.statespace.SARIMAX(y,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()

            print('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
        except:
            continue


mod = sm.tsa.statespace.SARIMAX(y,
                                order=(1, 1, 1),
                                seasonal_order=(1, 1, 1, 12),
                                enforce_stationarity=False,
                                enforce_invertibility=False)

results = mod.fit()

print(results.summary().tables[1])
作为模型的结果,我得到以下诊断表:

==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
ma.L1         -0.6255      0.077     -8.165      0.830      -0.376      -0.475
ar.S.L12      -0.0010      0.001      1.732      0.003      -0.000       0.002
ma.S.L12      -0.8769      0.026    -33.811      0.000      -0.928      -0.826
sigma2         30.0972      0.004     22.634      0.000       0.089       0.106
==============================================================================

为了改进模型,我想去掉ma.L1,并想添加一个由我创建的特性(一个新变量)。但我不知道如何在这个模型中添加一个变量。特别是,我有一个类似于[2.34,3.22,2.11,…]的数字列表,其长度与我用于此ARIMA的数据集的长度相同。我想将这个列表作为变量添加到ARIMA模型中,或者说将这个新变量与ARIMA模型结合起来。你知道我该怎么做吗?

使用
exog
获取更多解释变量。太好了。我刚检查过它是否需要数组。这个exog在模型中是如何被感知的?我是说在代码的背后,这个exog是如何处理的?在回归中?如果是回归,那么什么样的回归?我可以在这个exog中加入多个变量吗?
exog
与其他模型类似,比如OLS。当我们使用
numpy.asarray(exog)
时,它需要有行中的观察值和列中的变量。(如果它是一维的,那么它将在内部进行重塑。)