我想使用广义加法模型来研究 R 中的时间序列数据。我的数据是每月的,我想估计季节性效应和长期趋势效应。我在这里和这里关注了 Gavin Simpson 的一些有用的帖子:
我的数据如下所示:
我的 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 来适应随时间变化的季节性?
我使用 Cleveland 等人的 STL 方法 分析了这些数据:
使用 STL 范式,如何摆动或平滑允许季节性影响似乎是一个偏好或选择问题。如果我可以让数据告诉我随机误差和变化的季节性峰值之间的区别,我会更愿意。GAMS 似乎更适合这个目标,因为它们更容易用于统计模型拟合类型的练习......但我想知道 R 包中是否有一个参数用于拟合 gams,它允许随时间变化的季节性影响。