почему предсказания Аримы быстро растут и колеблются? - PullRequest
0 голосов
/ 03 августа 2020

Я пытался использовать библиотеку python ARIMA (statsmodels.tsa.arima.model.ARIMA) для прогнозирования временных рядов. У меня есть 44 месяца на тренировочные баллы и на 16 месяцев вперед для прогнозов. Временной ряд выглядит так:

enter image description here

I used stationary test to find d, and acf+pacf to find best p&q. (p,d,q) = ([1,2,9],1,[1])

The predictions I get are oscillations that grow rapidly and explode:

enter image description here

This is very odd and doesn't seem to fit the pattern at all. The details of the fitted model are those:

введите описание изображения здесь

Вы можете видеть, что sigma2 (вариация терминов ошибки - эпсилон, насколько я понимаю) очень высока, поэтому я предполагал, что члены ошибки стали очень высокими, а остальная часть уравнения арима сроки были незначительны по сравнению. уравнение:

Y (t) = -Y (t-1) + Y (t-2) + Y (t-9) + E (t) + E (t-1)

(Я не включил Mu, потому что он не слишком сильно меняется, когда я это делаю)

Итак, я считаю, что это становится: Y (t) = E (t) + E (t-1 )

Прогнозируемое значение Y становится большим и также способствует взрыву. Я попытался найти и распечатать условия ошибки, но смог найти только условия ошибки для поезда с 44 точками. Когда я вошел в сам код, мне показалось, что уравнение включает только условия ошибок из набора поездов, и я не мог понять, как E (t) и E (t-1) задействованы / созданы.

Считаете ли вы, что ошибочные термины вызывают взрыв? Если да, то как этого избежать? Спасибо!

Код, который я использовал:

import pandas as pd
import numpy as np
%matplotlib inline
from statsmodels.tsa.arima.model import ARIMA, ARIMAResults
import matplotlib.pyplot as plt

date_range = pd.date_range('2015-01-01','2019-12-01', freq='MS')
quantity = [ 9, 11, 32,  0,  0,  1,  1, 11,  0,  0,  3,  4, 18, 18,  5, 24,  9,
   19,  7, 19, 23, 19, 12, 23,  8, 27, 20,  7, 25,  4, 27, 36,  3, 53,
   38, 27, 64, 39, 37, 30, 56,  2, 17, 12, 11, 33, 10, 18, 22, 14, 26,
    8, 22, 46, 10, 10, 56, 33, 36, 10]

df = pd.DataFrame({'Quantity':quantity},index=date_range)

df_test = df['2018-09':].copy()
df_train = df[:'2018-08'].copy()

prediction_period = 16
order = ([1,2,9],1,[1])

model_arima = ARIMA(df_train,order=order)
model_arima_fit = model_arima.fit(method = 'statespace')

results = model_arima_fit.get_forecast(steps=prediction_period)
pred = results.predicted_mean

1 Ответ

0 голосов
/ 09 августа 2020

Возможно, ошибка в старых моделях статистики. В мастере statsmodels, который скоро станет statsmodel 0.12,

                                 SARIMAX Results
==================================================================================
Dep. Variable:                   Quantity   No. Observations:                   44
Model:             ARIMA([1, 2, 9], 1, 1)   Log Likelihood                 -32.062
Date:                    Sat, 08 Aug 2020   AIC                             74.124
Time:                            23:28:49   BIC                             82.930
Sample:                        01-01-2015   HQIC                            77.371
                             - 08-01-2018
Covariance Type:                      opg
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
ar.L1         -0.4924      0.900     -0.547      0.584      -2.256       1.271
ar.L2          0.1467      1.264      0.116      0.908      -2.331       2.624
ar.L9          0.5921      0.691      0.856      0.392      -0.763       1.947
ma.L1          0.3137      2.104      0.149      0.881      -3.810       4.438
sigma2       176.1492    227.291      0.775      0.438    -269.333     621.632
===================================================================================
Ljung-Box (L1) (Q):                   0.01   Jarque-Bera (JB):                55.56
Prob(Q):                              0.94   Prob(JB):                         0.00
Heteroskedasticity (H):               0.44   Skew:                             0.17
Prob(H) (two-sided):                  0.14   Kurtosis:                         8.56
===================================================================================

Warnings:
[1] Covariance matrix calculated using the outer product of gradients (complex-step).

и

pred =
2018-09-01    -374.896081
2018-10-01     130.866666
2018-11-01    -707.873478
2018-12-01     388.816304
2019-01-01    -887.436575
2019-02-01     432.944032
2019-03-01    -813.519861
2019-04-01     259.802249
2019-05-01    -548.478481
2019-06-01     -92.398118
2019-07-01    -136.118320
2019-08-01    -544.271043
2019-09-01     299.615365
2019-10-01    -931.444478
2019-11-01     580.321099
2019-12-01   -1082.708818
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...