Сглаживание временных рядов, избегая пересмотров - PullRequest
3 голосов
/ 13 февраля 2012

На этот раз мой вопрос скорее методологический, чем технический.У меня есть еженедельные данные временных рядов, которые обновляются каждую неделю.К сожалению, временные ряды довольно изменчивы.Таким образом, я хотел бы применить фильтр / метод сглаживания.Я попробовал Ходрика-Прескотта и МЕНЬШЕ.Оба результата выглядят хорошо, с учетом того, что если следует новая точка данных, которая сильно отличается от исторических точек данных, более старые значения должны быть пересмотрены / изменяются.Кто-нибудь знает метод, который реализован в R, который может делать то, что я хочу?Имя метода / функции, вероятно, будет вполне достаточно.Однако это должно быть что-то более сложное, чем левостороннее скользящее среднее, потому что я не хотел бы терять данные в начале временного ряда.Каждый комментарий помощи приветствуется!Большое спасибо!

С уважением,

Андреас

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Я думаю (?), Что термин, который вы можете искать, это причинная фильтрация , то есть фильтрация, которая не зависит от будущих значений. В этой категории, вероятно, самый простой / самый известный подход - экспоненциальное сглаживание , которое реализовано в пакетах forecast и expsmooth (library("sos"); findFn("{exponential smoothing}")).

Это помогает?

3 голосов
/ 14 февраля 2012

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

Я думаю, вам будет трудно добиться большего успеха, чем loess(), но другие функции, нацеленные на надежное сглаживание, включают

  • smooth() для сглаживателей Тьюки;
  • supsmu() для супергладчика Фридмана;

Сглаживание Ходрика-Прескотта не является устойчивым к выбросам.

...