statespace.Модель SARIMAX: почему модель использует все данные для режима обучения и предсказывает диапазон модели поезда

я следовал учебнику для изучения модели SARIMAX: https://www.digitalocean.com/community/tutorials/a-guide-to-time-series-forecasting-with-arima-in-python-3 - ... Диапазон дат данных-1958-2001 годы.

mod = sm.tsa.statespace.SARIMAX(y,
                                order=(1, 1, 1),
                                seasonal_order=(1, 1, 1, 12),
                                enforce_stationarity=False,
                                enforce_invertibility=False)

results = mod.fit()

когда подходят модели временных рядов ARIMA, я нашел автора всех данных диапазона дат, чтобы соответствовать параметру модели. Но при проверке прогнозов автор использовал дату начала 1998-01-01 как часть диапазона дат данных для подгонки модели.

pred = results.get_prediction(start=pd.to_datetime('1998-01-01'), dynamic=False)

Я знаю, что в модели машинного обучения данные обучения и данные проверки(теста) отличаются, я имею в виду другой диапазон. Я имею в виду, что автор прав? почему это нравится(я имею в виду причину touse всех данных поезда), я новый для модели SARIMAX.

не могли бы вы, ребята, рассказать мне больше об этой модели, например, как предсказать дни или недели не только месяц, я имею в виду, как установить параметр order=(1,1,1), seasonal_order=(1, 1, 1, 12). Спасибо!

1 ответов


автор прав. Когда вы делаете регрессию (линейную, более высокого порядка или логистическую-не имеет значения) - абсолютно нормально иметь отклонения от ваших данных обучения (например, логистическая регрессия даже на данных обучения может дать вам ложноположительный).

то же самое означает временные ряды. Я думаю, что таким образом автор хотел показать, что модель построена правильно.

seasonal_order=(1, 1, 1, 12)

Если вы посмотрите на статистику tsa документация вы увидите, что если вы хотите работать с квартальными данными - вам нужно назначить последний параметр (ы) - значение 4. Ежемесячно - 12. Это означает, что если вы хотите работать с еженедельными данными seasonal_order должен выглядеть так

seasonal_order=(1, 1, 1, 52)

ежедневные данные будут

seasonal_order=(1, 1, 1, 365)

компонент order-это параметр, который отвечает за несезонные параметры p, d и q соответственно. Вы должны найти их в зависимости от вашего поведения

  • p. Вы можете интерпретировать его как wether enter image description here оказывает влияние на enter image description here. Или, другими словами, если у вас есть ежедневные данные, а p-6, Вы можете понять это, как данные во вторник будут влиять на данные в воскресенье.
  • d. Параметр дифференцирования. Он определяет уровень интеграции процесса. Это означает, сколько раз вы должны применять временные ряды разностный оператор для того, чтобы сделать ваш временной ряд стационарным
  • q. Вы можете интерпретировать это как многие предыдущие шумы (ошибки) влияют на текущее значение

вот хороший ответ как вы можете найти несезонные значения компонентов