Python Statsmodels ARIMA:如何在模型中添加/组合特性(变量)
您好,我正在使用statsmodels在Python中建模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
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)
时,它需要有行中的观察值和列中的变量。(如果它是一维的,那么它将在内部进行重塑。)