我希望在R中使用广义可加模型来研究时间序列数据。我的数据是按月计算的,我想估计季节效应和长期趋势效应。我已经参考了Gavin Simpson的一些有用文章这里和这里。
我的数据长这样:
我按照以下方式提取了季节效应的估计值:
我使用Cleveland等人的STL方法分析了这些数据:
使用STL范例,允许季节性效应的波动或平滑似乎是个人偏好或选择的问题。我希望能够让数据告诉我随机误差和移动季节峰值之间的区别。 GAMS似乎更适合这个目标,因为它们更容易用于统计模型拟合类型的练习……但我想知道R软件包中是否有适用于拟合gams的参数,允许时间变化的季节性影响。
我的数据长这样:
我在我的 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的参数,允许时间变化的季节性影响。