Цель: я пытаюсь извлечь сезонную составляющую и составляющую тренда из временного ряда с помощью полосового фильтра из-за проблем с методами на основе лесса, о которых вы можете узнать больше о здесь.
Данные. Данные представляют собой ежедневные измерения количества осадков за 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 «тренд» так же, как и такие функции, как decopose () или stl ()? Если нет, то как мне тогда думать об этом?
Вопрос: я неправильно откалибровал cffilter () и что я могу изменить, чтобы улучшить определение компонента тренда?