Модель Python ARIMA, прогнозируемые значения смещены

Я новичок в реализации Python ARIMA. У меня есть данные с частотой 15 минут за несколько месяцев. В моей попытке следовать методу Бокса-Дженкинса, чтобы соответствовать модели временных рядов. Я столкнулся с проблемой ближе к концу. График ACF-PACF для временного ряда (ts) и ряда разностей (ts_diff) дано. Я использовал ARIMA (5,1,2) и, наконец, нанес на график подогнанные значения (зеленый) и исходные значения (синий). Как видно из рисунка, наблюдается явный сдвиг (на единицу) в значениях. Что я делаю не так?

Прогноз плохой? Любое понимание будет полезно.


person Seetha Pothapragada    schedule 24.02.2016    source источник


Ответы (3)


Это стандартное свойство предсказания или прогнозирования на один шаг вперед.

Информация, используемая для прогноза, представляет собой историю до и включая предыдущий период. Пик, например, в периоде повлияет на прогноз на следующий период, но не может повлиять на прогноз на пиковый период. Это приводит к смещению прогнозов на графике.

Прогноз на два шага вперед создаст впечатление сдвига на два периода.

person Josef    schedule 24.02.2016

Просто чтобы подтвердить, я делаю это правильно тогда? Вот код, который я использовал.

from statsmodels.tsa.arima_model import ARIMA
model = sm.tsa.ARIMA(ts, order=(5, 1, 2))
model = model.fit()
results_ARIMA=model.predict(typ='levels')
concatenated = pd.concat([ts, results_ARIMA], axis=1, keys=['original', 'predicted'])
concatenated.head(10)
    original    predicted
login_time      
1970-01-01 20:00:00 2   NaN
1970-01-01 20:15:00 6   2.000186
1970-01-01 20:30:00 9   4.552971
1970-01-01 20:45:00 7   7.118973
1970-01-01 21:00:00 1   7.099769
1970-01-01 21:15:00 4   3.624975
1970-01-01 21:30:00 0   3.867454
1970-01-01 21:45:00 4   1.618120
1970-01-01 22:00:00 9   2.997275
1970-01-01 22:15:00 8   6.300015
person Seetha Pothapragada    schedule 24.02.2016

В модели, которую вы указываете (5, 1, 2), вы устанавливаете d = 1. Это означает, что вы различаете данные на 1, или, другими словами, выполняете сдвиг всего вашего диапазона связанных со временем наблюдений, чтобы минимизировать невязки подобранной модели.

Иногда установка d на 1 приводит к графику ACF/PACF с меньшим количеством и/или менее резкими пиками (т. е. менее экстремальными остатками). В таких случаях, если вы используете подобранную модель для прогнозирования будущих значений, ваши прогнозы будут менее резко отличаться от имеющихся у вас наблюдений, если вы примените дифференцирование.

Разность достигается через Y(differenced) = Y(t) - Y(t-d), где Y(t) относится к наблюдаемому значению Y в момент времени t, а d относится к порядку применения различий. Когда вы используете дифференцирование, весь ваш диапазон наблюдений в основном сдвигается вправо. Это означает, что вы теряете некоторые данные на левом краю вашего временного ряда. Сколько очков времени вы потеряете, зависит от порядка разности d, который вы используете. Вот откуда ваш наблюдаемый сдвиг.

На этой странице может быть более подробное объяснение (не забудьте немного щелкнуть и изучить другие страницы там, если вы хотите рассмотреть весь процесс подбора модели ARIMA).

Надеюсь, это поможет (или, по крайней мере, успокоит вас по поводу сдвига)!

Бестс,

Эверт

person Evert van Doorn    schedule 19.09.2016
comment
как вы думаете, было бы (или не было бы) разумно после создания окончательного набора данных с прогнозируемыми значениями сдвинуть прогнозируемые данные назад на 1, чтобы они соответствовали оригиналу? как вы думаете, есть что-то не так с этим? - person AK91; 27.11.2018