Отрицательные значения в прогнозе временных рядов

#python #statistics #time-series #arima

#python #Статистика #временные ряды #arima

Вопрос:

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

Мой набор данных имеет вид:

ГОДОВОЕ КОЛИЧЕСТВО ОСАДКОВ

2000-01-01 0

2000-02-01 128.2

2000-03-01 0

2000-04-01 289.3

.
.
.

У меня две проблемы.

1) Результаты моего прогноза имеют отрицательные значения, хотя в обучающем наборе их нет, и логически значения осадков не должны быть отрицательными. Мой исходный график данных выглядит следующим образом.

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

Ниже приведен график тестовых данных и прогнозируемых значений. Как вы можете видеть, красная кривая прогнозируемых значений простирается ниже 0.

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

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

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

1. Какое это имеет отношение к Python? Для меня это похоже на вопрос о статистике

2. Я реализую его с использованием Python, поэтому любые фрагменты кода python, помогающие решить проблему, были бы полезны. Но вы правы. Я добавил статистику к своим тегам.

Ответ №1:

Модель дает вам наилучшее предположение.

Это просто экстраполяция в отрицательное прогнозируемое значение на основе наблюдаемых входных данных. Вот тут-то и вступает в дело «внешняя логика». Просто передайте прогнозы через функцию, которая заменяет отрицательные значения на 0. Это обычная практика.

Так просто, как:

 df[df < 0] = 0