如何在R中使用gamm模型指定随机效果?

时间:2018-05-28 14:48:56

标签: r mixed-models gam mgcv

我正在使用mgcv包中的gamm模型来分析具体的多样性测量方法,例如。香农随着时间的推移和环境变量而变化,例如。温度。

到目前为止我有初始模型来分析时间序列:

modf<-gamm(y~ as.factor(year) + s(doy,bs='cc',k=kdy),method=mth,correlation=tcor,data=d,
           control=ctrl,random=NULL,gamma=1)

我希望将温度作为随机效应包含在内,并考虑采取以下措施:

modf<-gamm(y~ as.factor(year) + s(doy,bs='cc',k=kdy), + s(temp,bs="re"),method=mth,
           correlation=tcor,data=d,control=ctrl,gamma=1)

然而,到目前为止,我只看到了gam而不是gamm。它仍然以这种方式工作吗?

数据结构类型的示例:

  • $ total_abundance:num 6364161 1929775 7057036 1266342 3981198 ...
  • $ shannon:num 1.87 2.08 1.95 1.84 2.06 ...
  • $ turnover:num 0.613 0.475 0.525 0.556 0.429 ...
  • $ year:int 1985 1986 1987 1987 1987 1988 1989 1989
  • $ month:int 8 12 3 7 8 5 1 8 1 9 ...
  • $ day:int 20 8 15 6 17 9 16 29 14 4 ...
  • $ temp:num 25.5 9.87 4.8 19.72 26.03 ...
  • $ doy:num 232 342 74 187 229 130 16 241 14 247 ...

每年都会在一年中的哪一天。并说明季节性

由于

1 个答案:

答案 0 :(得分:0)

除非您希望temp的线性效应在分组因子的水平范围内变化,否则您似乎想要做的事情没有任何意义。

通常,您使用random作为

指定此随机斜率
list(group = ~ x)

其中group是因子分组变量而x是您的temp

temp = ~ 1所要求的是对temp的唯一值的随机拦截,这可能会过多地询问数据。

相当于s(time, bs = "re")要求您从random公式中删除拦截:

 list(group = ~ x - 1)

但您仍然需要group变量。

如果您只想控制temp,请在+ temp模型公式中将其添加为线性参数效果(+ s(temp))或平滑效果(gamm()