Цель : Я пытаюсь извлечь компонент сезонности и тренда из временного ряда, используя полосовой фильтр, из-за проблем с методами на основе лесса, о которых вы можете прочитать подробнее о здесь .
Данные : Данные представляют собой ежедневные измерения количества осадков за 10-летний период, который является высоко стохастическим и демонстрирует четкую ежегодную сезонность. Данные можно найти здесь .
Проблема : Когда я выполняю фильтр, компонент цикла проявляется, как и ожидалось (с учетом годовой сезонности), но компонент тренда выглядит слишком переизбыточным, так что остатки становятся незначительными значениями, и Полученная модель не пригодна для прогнозирования вне выборки.
US1ORLA0076 <- read_csv("US1ORLA0076_cf.csv")
head(US1ORLA0076)
water_date PRCP prcp_log
<date> <dbl> <dbl>
1 2006-12-22 0.09 0.0899
2 2006-12-23 0.75 0.693
3 2006-12-24 1.63 1.26
4 2006-12-25 0.06 0.0600
5 2006-12-26 0.36 0.353
6 2006-12-27 0.63 0.594
Затем я применяю полосовой фильтр Кристиано-Фицджеральда (предназначенный для пропускания длин волн от полугода до года, т.е. однолетних волн), используя следующую команду из пакета mFilter .
library(mFilter)
US1ORLA0076_cffilter <- cffilter(US1ORLA0076$prcp_log,pl=180,pu=365,root=FALSE,drift=FALSE,
type=c("asymmetric"),
nfix=NULL,theta=1)
, который создает объект S3, содержащий, помимо прочего, вектор значений "тренда" и вектор значений "цикла", например:
head(US1ORLA0076_cffilter$trend)
[,1]
[1,] 0.1482724
[2,] 0.7501137
[3,] 1.3202868
[4,] 0.1139883
[5,] 0.4051551
[6,] 0.6453462
head(US1ORLA0076_cffilter$cycle)
[,1]
[1,] -0.05839342
[2,] -0.05696651
[3,] -0.05550995
[4,] -0.05402422
[5,] -0.05250982
[6,] -0.05096727
Подготовленный:
plot(US1ORLA0076_cffilter)
Я смущен этим выводом. Цикл выглядит так, как я и ожидал. Тенденция нет. Вместо того чтобы быть постепенно изменяющейся линией, представляющей общую тенденцию данных после того, как была установлена сезонность, она, похоже, тщательно отслеживает исходные данные, то есть очень сильно перегружена.
Вопрос : Является ли mfilter даже «трендом», определяющим то же, что и такая функция, как degpose () или stl ()? Если нет, то как мне тогда об этом думать?
Вопрос : Правильно ли я откалибровал cffilter (), и что я могу изменить, чтобы улучшить определение компонента тренда?