gpt4 book ai didi

r - 我可以用 GAMM 估计 R 中随时间变化的季节性影响吗?

转载 作者:行者123 更新时间:2023-12-04 02:01:42 26 4
gpt4 key购买 nike

我想使用广义加性模型来研究 R 中的时间序列数据。我的数据是每月的,我想估计季节性效应和长期趋势效应。我关注了 Gavin Simpson 的一些有用帖子 herehere :

我的数据是这样的:

trips

我的 github 上有完整的数据集 page :

我试图指定一个具有平滑季节性和趋势项的广义加性模型,如下所示:

    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 seasonals

我的问题是:在原始数据中,季节性峰值逐年移动。在极其简单的 GAM 中,我指定季节性影响是恒定的。有没有办法通过 GAM 适应随时间变化的季节性?

我分析了these使用 Cleveland 等人的 STL 方法的数据:

使用 STL 范例,季节性影响的波动或平滑程度似乎是一个偏好或选择的问题。如果我能让数据告诉我随机误差和变化的季节性峰值之间的区别,我会更愿意。 GAMS 似乎更适合这个目标,因为它们更容易进行统计模型拟合类型的练习......但我想知道 R 包中是否有一个参数用于拟合 gams 允许时变季节性影响。

最佳答案

答案是:是的,可以为您感兴趣的问题制定一个 GAM 模型。如果我们假设模型的趋势和季节性成分平滑地相互作用,我们就有了一个连续-连续相互作用的平滑等价物。可以使用两个边缘平滑的张量积将这种相互作用拟合到 GAM 中:

  1. 季节性循环平滑,并且
  2. 长期趋势平稳

顺便说一下,我还有关于这些的更多博文:

阅读这些以获取更多详细信息,但基本方面要符合以下模型:

## fix the knots are just passed the ends of the month numbers
## this allows Dec and Jan to have their own estimates
knots <- list(month = c(0.5, 12.5))

## original model, fixed seasonal component
m1 <- gam(ntrips ~ s(month, bs="cc", k=12) + s(time), data = trips,
knots = knots)

## modified model with
m2a <- gam(ntrips ~ te(month, time, bs = c("cc","tp"), k = c(12, 10)), data = trips,
knots = knots))

第二个模型的替代方法是对两个主效应和交互作用进行类似方差分析的分解。在上面修改后的模型中,所有三个分量都绑定(bind)在单个张量积平滑中,即模型的 te() 部分。

类似方差分析的分解变体将使用

m2b <- gam(ntrips ~ ti(month, bs = 'cc', k = 12) +
ti(time, bs = 'tp', k = 10) +
ti(month, time, bs = c("cc","tp")), data = trips,
knots = knots)

第三个 ti() 是平滑交互,与季节性和长期趋势的主要平滑效应分开。

我已经使用 gam() 展示了这些拟合,但如果您需要为模型残差包含 ARMA 过程,它们也可以与 gamm() 一起使用。

关于r - 我可以用 GAMM 估计 R 中随时间变化的季节性影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com