Модель ARIMA не работает должным образом в новых моделях состояния ARIMA для python

#python #time-series #statsmodels #arima

#python #временные ряды #модели состояния #arima

Вопрос:

Ранее я использовал

 from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(log_air_passengers, order=(2, 1, 0))  
results_AR = model.fit(disp=-1)  
plt.plot(log_air_passengers_diff)
plt.plot(results_AR.fittedvalues, color='red')
plt.title('RSS: %.4f'% sum((results_AR.fittedvalues-log_air_passengers_diff)**2))
  

Сюжет, который я бы получил, был:
введите описание изображения здесь

Но теперь у них есть более новая версия ARIMA, а более старая версия будет удалена после выпуска 0.12. Итак, я пробую более новую:

 from statsmodels.tsa.arima.model import ARIMA as ARIMA2
model = ARIMA2(log_air_passengers, order=(2, 1, 0), missing='drop')  
results_AR = model.fit()  
plt.plot(log_air_passengers_diff)
plt.plot(results_AR.fittedvalues, color='red')
plt.title('RSS: %.4f'% sum((results_AR.fittedvalues-log_air_passengers_diff)**2))
  

И сюжет тоже искажен:
введите описание изображения здесь
Но это не работает. Я пытался с этим повозиться, но это не очень помогает. Как мне изменить код, чтобы заставить его работать?

Комментарии:

1. не могли бы вы предоставить некоторые образцы данных для воспроизведения?

2. Здесь есть один набор данных: github.com/ikding/pycon_time_series/blob/master/data /…

3. это может быть связано с вашей установкой, я воспроизвожу ваш пример и получил еще лучшие результаты с новой версией модели, не могли бы вы попробовать это с !pip install --upgrade statsmodels ?

Ответ №1:

Вы должны использовать SARIMAX

 from statsmodels.tsa.statespace.sarimax import SARIMAX

model = SARIMAX(log_air_passengers,order=(1,1,0),simple_differencing=True)
result_AR = model.fit()
plt.plot(log_air_passengers_diff)
plt.plot(result_AR.fittedvalues,color='red')
plt.title('RSS: %.4f'%sum((result_AR.fittedvalues[1:] - log_air_passengers_diff)**2))  

Комментарии:

1. simple_differencing по-прежнему не соответствует точно старой версии ARIMA, необходимо добавить константу c ‘model= SARIMAX(log_air_passengers, order=(1,1,0), simple_differencing=True, trend=’c’, trend_offset=log_air_passengers[0])’