Я установил модель ARIMA (5,1,2), используя auto.arima()
функцию в R, и, посмотрев порядок, мы можем сказать, что это не лучшая модель для прогнозирования. Если в рядах данных существуют выбросы, каков метод для подгонки модели к таким данным?
Я установил модель ARIMA (5,1,2), используя auto.arima()
функцию в R, и, посмотрев порядок, мы можем сказать, что это не лучшая модель для прогнозирования. Если в рядах данных существуют выбросы, каков метод для подгонки модели к таким данным?
Ответы:
Майкл Черник указывает вам в правильном направлении. Я бы также посмотрел на работу Рюи Цая как на добавление к этой совокупности знаний. Подробнее здесь .
Вы не можете конкурировать с современными автоматизированными компьютерными алгоритмами. Они смотрят на многие способы приблизиться к временным рядам, которые вы не рассматривали и часто не документировали ни в одной статье или книге. Когда спрашивают, как сделать ANOVA, можно ожидать точного ответа при сравнении с различными алгоритмами. Когда кто-то задает вопрос, как мне сделать распознавание образов, возможны многие ответы, когда речь идет об эвристике. Ваш вопрос связан с использованием эвристики.
Лучший способ соответствовать модели ARIMA, если в данных существуют выбросы, - это оценить возможные состояния природы и выбрать тот подход, который считается оптимальным для конкретного набора данных. Одним из возможных состояний природы является то, что процесс ARIMA является основным источником объясненных изменений. В этом случае можно было бы «предварительно определить» процесс ARIMA с помощью функции acf / pacf, а затем проверить остатки на возможные выбросы. Выбросы могут быть импульсами, то есть одноразовыми событиями ИЛИ сезонными импульсами, о которых систематически свидетельствуют выбросы с некоторой частотой (скажем, 12 для месячных данных). Третий тип выбросов состоит в том, что каждый имеет непрерывный набор импульсов, каждый из которых имеет один и тот же знак и величину, это называется скачком или сдвигом уровня. После изучения остатков в предварительном процессе ARIMA можно предварительно добавить эмпирически идентифицированную детерминированную структуру, чтобы создать предварительную комбинированную модель. Также, если основным источником вариации является один из 4-х видов или «выбросов», то лучше было бы обслужить их идентификацию ab initio (сначала), а затем использовать остатки из этой «регрессионной модели» для идентификации стохастической (ARIMA) структуры. , Теперь эти две альтернативные стратегии становятся немного более сложными, когда у одной есть «проблема», когда параметры ARIMA изменяются со временем или дисперсия ошибки изменяется со временем из-за ряда возможных причин, возможно, из-за необходимости взвешенных наименьших квадратов или преобразования мощности как логи / взаимные ссылки и т. д. Другая сложность / возможность заключается в том, как и когда формировать вклад предложенных пользователем предикторов для формирования бесшовно интегрированной модели, включающей память, причинно-следственные связи и эмпирически идентифицированные фиктивные ряды. Эта проблема еще более усугубляется, когда ряд трендов лучше всего моделируется сериями индикаторов вида, Или 1 , 2 , 3 , 4 , 5 , . , , N и комбинации рядов сдвига уровня, такие как , Вы можете попробовать написать такие процедуры на R, но жизнь коротка. Я был бы рад на самом деле решить вашу проблему и продемонстрировать в этом случае, как работает процедура, пожалуйста, опубликуйте данные или отправьте их на sales@autobox.com
Дополнительный комментарий после получения / анализа данных / ежедневных данных для курса обмена валют / 18 = 765 значений, начиная с 01.01.2007
Данные имели следующие значения:
После идентификации модели arma вида и количества выбросов, acf остатков указывает случайность, так как значения acf очень малы. AUTOBOX выявил ряд выбросов:
Финальная модель:
включал необходимость усиления стабилизации дисперсии в виде TSAY, где изменения дисперсии в остатках были идентифицированы и включены. Проблема, с которой вы столкнулись при автоматическом запуске, заключалась в том, что используемая вами процедура, подобно бухгалтеру, доверяет данным, а не оспаривает данные с помощью Intervention Detection (иначе, Outlier Detection). Я разместил полный анализ здесь .
Нет готового использования надежного аналога функции арима в R (пока) ; если он появится, он будет указан здесь . Возможно, альтернативой является снижение веса тех наблюдений, которые отличаются от простого однофакторного правила обнаружения выбросов, но я также не вижу готовых использовать пакеты для запуска взвешенной регрессии ARMA. Другой возможной альтернативой будет Winsorize отдаленные пункты:
#parameters
para <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796))
#outliers
out <- sample(1:100, 20)
#contaminated series
y1[out] <- rnorm(20, 10, 1)
plot( y1, type="l")
lines(y0, col="red")
#winsorized series
y2 <- rep(NA, length(y1))
a1 <- (y1-median(y1)) / mad(y1)
a2 <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}
Существует много литературы о надежных моделях временных рядов. Мартин и Йохай являются одними из основных участников. Их работа восходит к 1980-м годам. Я сам поработал над обнаружением выбросов во временных рядах, но Мартин действительно был одним из многих, кто внес вклад как в обнаружение выбросов, так и в оценку параметров в присутствии выбросов или остатков с тяжелыми хвостами во временных рядах.
Какова цель вашей модели для прогноза или анализа истории? если это не для прогнозирования, а вы знаете, что это выбросы, просто добавьте фиктивную переменную, которая равна 1 в эти даты и 0 в другие даты. таким образом, фиктивные коэффициенты будут заботиться о выбросах, и вы сможете интерпретировать другие коэффициенты в модели.
если это для прогнозирования, то вы должны задать себе два вопроса: произойдут ли эти выбросы снова? если они будут, я должен отчитываться за них?
Например, предположим, что у ваших рядов данных есть выбросы, когда братья Леман пошли вниз. это событие, которое вы не можете предсказать, очевидно, но вы не можете просто проигнорировать его, потому что нечто подобное должно произойти в будущем. если вы добавляете пустышку для выбросов, то вы фактически удаляете неопределенность этого события из дисперсии ошибки. Ваш прогноз будет недооценивать риск хвоста - возможно, не очень хорошая вещь для управления рисками. однако, если вы хотите создать базовый прогноз продаж, манекен сработает, потому что вас не интересует хвост, вас интересуют наиболее вероятные сценарии - поэтому вам не нужно учитывать непредсказуемое событие для эта цель.
Следовательно, цель вашей модели влияет на то, как вы справляетесь с выбросами.