#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])’