Я хотел бы использовать обобщенную аддитивную модель для исследования данных временных рядов в R. Мои данные ежемесячные, и я хотел бы оценить сезонный эффект и эффект долгосрочного тренда. Я следил за некоторыми полезными сообщениями Гэвина Симпсона здесь и здесь:
Мои данные выглядят так:
Полный набор данных доступен на моем github страница:
Я попытался определить обобщенную аддитивную модель со сглаженными сезонными и трендовыми условиями следующим образом:
df <- read.csv('trips.csv')
head(df)
# A tibble: 276 × 2
date ntrips
<date> <int>
1 1994-01-01 157
2 1994-02-01 169
3 1994-03-01 195
4 1994-04-01 124
5 1994-05-01 169
#add a time column
trips <- tbl_df(trips) %>% mutate(time=as.numeric(date))
mod1 <- gamm(ntrips~s(month,bs="cc",k=12) + s(time),data=trips)
Я извлек оценку сезонного эффекта следующим образом:
pred <- predict(mod1$gam,newdata=trips,type="terms")
seas <- data.frame(s=pred[,1],date=trips$date)
ggplot(seas,aes(x=date,y=s)) + geom_line()
Этот сюжет включен ниже:
Мой вопрос: в исходных данных сезонные пики немного смещаются из года в год. В до смешного простой GAM я указал, что сезонный эффект постоянен. Есть ли способ приспособить меняющуюся во времени сезонность с помощью GAM?
Я проанализировал эти данные с помощью STL-подхода Кливленд и др.:
Используя парадигму STL, кажется, что то, насколько волнистыми или гладкими могут быть сезонные эффекты, является вопросом предпочтения или выбора. Я бы предпочел, чтобы данные говорили мне о разнице между случайной ошибкой и смещающимся сезонным пиком. GAMS кажутся более подходящими для этой цели, поскольку они более легко поддаются упражнениям по подбору статистических моделей... но я хотел бы знать, есть ли в пакете R параметр для подбора игр, который позволяет изменять сезонные эффекты во времени.