#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