Как исправить выбросы, обнаруженные при прогнозировании данных временных рядов?

10

Я пытаюсь найти способ исправить выбросы, как только я найду / обнаружу их в данных временных рядов. Некоторые методы, такие как nnetar в R, дают некоторые ошибки для временных рядов с большими / большими выбросами. Мне уже удалось исправить пропущенные значения, но выбросы все еще разрушают мои прогнозы ...

Mila
источник
что вы подразумеваете под "исправлением"?
rbatt
Подставляя или заменяя ... Или это должно быть просто вычитание ...?
Мила
3
Являются ли выбросы "реальными"? Я имею в виду, что выбросы вызваны неспособностью модели предсказать экстремальные события или шоки? Или это «ошибки», такие как проблемы с вводом данных?
вероятностная

Ответы:

9

Теперь в пакете прогноза для R имеется средство для выявления и замены выбросов. (Он также обрабатывает пропущенные значения.) Поскольку вы, очевидно, уже используете пакет прогноза, это может быть удобным решением для вас. Например:

fit <- nnetar(tsclean(x))

tsclean()Функция будет соответствовать надежной тенденции с использованием лесс (для несезонной серии) или устойчивую тенденцию и сезонные компоненты с использованием STL (для сезонной серии). Вычисляются невязки и вычисляются следующие границы:

U=q0.9+2(q0.9q0.1)L=q0.12(q0.9q0.1)
где и - 10-й и 90-й процентили остатков соответственно.q0.1q0.9

Выпадающие определяются как точки с остатками более крупными , чем или меньше , чем .UL

Для несезонных временных рядов выбросы заменяются линейной интерполяцией. Для сезонных временных рядов сезонный компонент из соответствия STL удаляется, а сезонно скорректированные ряды линейно интерполируются для замены выбросов перед повторной сезонизацией результата.

Роб Хиндман
источник
1
Ваша разработка здесь также полезна: stats.stackexchange.com/questions/1142/… (tsclean вызывает tsoutliers)
4

Когда вы идентифицируете модель ARIMA, вы должны одновременно идентифицировать импульсы / сдвиги уровней / сезонные импульсы и / или тенденции местного времени. Вы можете получить некоторые материалы для чтения по процедурам обнаружения вмешательств по адресу http://www.ebay.com/ctg/Time-Series-Analysis-Univariate-and-Multivariate-Methods-David-P-Reilly-and-William-Wei-1999 - / 85697 и http://www.unc.edu/~jbhill/tsay.pdf . Возможно, вам придется воспользоваться коммерческим программным обеспечением, таким как SAS / SPSS / AUTOBOX, чтобы получить какие-либо полезные результаты, поскольку я хотел видеть бесплатное программное обеспечение. Попутно я внес значительные технические улучшения в эту область в AUTOBOX.

РЕДАКТИРОВАТЬ:

Еще лучшим подходом является выявление выбросов с использованием строгого метода ARIMA плюс процедуры обнаружения вмешательств, которые позволяют получить надежные параметры ARIMA и хороший прогноз. Теперь рассмотрим разработку симулированных прогнозов, включающих повторные выборки остатков без влияния импульсов. Таким образом, вы получаете лучшее из обоих миров, а именно хорошую модель и более реалистичные заявления о неопределенности для прогнозов, которые не предполагают, что оцениваемые параметры модели являются значениями совокупности.

IrishStat
источник
1

Я согласен с @Aksakal. Вместо того, чтобы удалять выбросы, лучшим подходом было бы использование некоторой статистической процедуры для борьбы с выбросами. Я предлагаю вам улучшить ваши данные. При правильной реализации винсоризация может быть относительно устойчивой к выбросам. На этой странице: http://www.r-bloggers.com/winsorization/ , вы найдете R-коды для реализации Winsorisation. Если вы подумаете о том, чтобы улучшить ваши данные, вам нужно будет тщательно продумать все аспекты распространения. Ожидается, что выбросы будут чрезвычайно низкими, или они должны быть чрезвычайно высокими, или, может быть, и то, и другое. Это будет влиять на то, будете ли вы worsorise, например, на уровне 5% или 10% и / или 95% или 99%.

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

В контексте прогнозирования удаление выбросов очень опасно. Например, вы прогнозируете продажи продуктового магазина. Допустим, в соседнем здании произошел взрыв газа, который заставил вас закрыть магазин на несколько дней. Это был единственный раз, когда магазин был закрыт за 10 лет. Итак, вы получаете временные ряды, обнаруживаете выбросы, удаляете его и прогнозируете. Вы молчаливо предполагали, что ничего подобного не произойдет в будущем. В практическом смысле вы сжимали наблюдаемую дисперсию, а коэффициент дисперсии уменьшался. Таким образом, если вы покажете полосы достоверности для своего прогноза, они будут уже, чем если бы вы не удалили выброс.

Конечно, вы можете сохранить выбросы и действовать как обычно, но это тоже не очень хороший подход. Причина в том, что этот выброс будет искажать коэффициенты.

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

Полосы доверия передают очень важную информацию. Если вы прогнозируете, что продажи в этом месяце составят 1 000 000 долларов , но есть вероятность 5%, что они составят 10 000 долларов, это влияет на ваши решения о расходах, управлении денежными средствами и т. Д.

Аксакал
источник
-1

Выполнение прогнозирования с использованием (или нет) модели с удаленными выбросами зависит от вероятности появления выбросов в будущем и ожидаемого распределения его воздействия, если оно действительно произойдет. Достаточно ли данных обучения для освещения этого? Байесовский подход должен помочь ...

Рикардо Кокейро
источник
1
Это неверно Ваш прогноз может быть неточным, если вы не учитываете выбросы, особенно если ваши выбросы находятся в конце ряда.
синоптик