带有 d>0 但具有自动arima 的 ARIMA 的异常预测值



所以我试图获得 5 个 arima 模型(预测未来 1 到 5 天(。使用统计模型,如果我使用 d>0 或 q>0,arima 类不知何故不起作用。 与自动有马它的工作(pmdarima(。

例如(统计模型(

p,d,q = 1, 1, 0
models = []
for dayidx in range(0,5):
models.append(ARIMA(exog=X_train[dayidx], endog=y_train[dayidx],order=(p,d,q)).fit())
models[0].forecast(exog=X_test[0],steps=157)[0]

如果我使用 p>0、d>0 和 q=0 的预测,我得到的不是预期的目标值(值只是增加,就像 x2-x10 更高(。如果我使用预测 p>0、d=0、q=0,我会得到可执行的值。如果我对 q 使用任何值,我会收到以下错误,它告诉我数据是非平稳的,为什么 im 使用 d>0 的情况下使用 q>0 它应该有效,但它不...

The computed initial AR coefficients are not stationary
You should induce stationarity, choose a different model order, or you can
pass your own start_params.

这里是 pmarima 模型的代码

auto_arima = {'adf': [], 'kpss': []}
stattests = ('adf','kpss')
for stattest in stattests:
print(stattest)
for dayidx in range(0,5):
auto_arima[stattest].append(pm.auto_arima(y=y_train[dayidx], exogenous=X_train[dayidx],
stepwise=True,
suppress_warnings=True, 
error_action="ignore",
test=stattest,
start_p=0,
start_d=0,
start_q=0,
max_p=6,
max_d=3,
max_q=3,
max_order=None, 
trace=False))
print('done')

使用自动有马(pmdarima(可以正常工作(我从d -> d>0中获得了值(

Training with adf
(1, 0, 1)
(4, 0, 1)
(1, 0, 1)
(2, 0, 2)
(2, 0, 0)
Training with kpss
(1, 1, 2)
(1, 1, 2)
(2, 1, 1)
(1, 1, 2)
(2, 1, 1)

这些是训练 arima 模型的参数 (pmarima(。所以 q 应该是>0

有谁知道为什么来自统计模型的 ARIMA 对我不起作用,而来自 pmarima 的 autoarima 对我有用?

pmdarima使用 Statsmodels 类sm.tsa.SARIMAX而不是类sm.tsa.ARIMA类。

目前,建议所有 ARIMA 型号使用sm.tsa.SARIMAX类,因为sm.tsa.ARIMA类不再接收功能更新,并将在下一个版本 (v0.12( 中弃用。

(还有一个新类,sm.tsa.arima.ARIMA,这将是下一个Statsmodels版本中的推荐版本,因为它包含sm.tsa.SARIMAX的所有功能,但也包括拟合模型的替代方法。

最新更新