繁体   English   中英

如何测试 GAMM 中随机效应的统计显着性?

[英]How to test the statistical significance of a random effect in GAMM?

我现在正在使用包mgcv在 R 中构建一个 GAMM,我的问题是:

  • 首先,我们如何知道随机效应在统计上是否显着?
  • 其次,我们如何提取模型中的随机截距值?
  • 第三, gamm中的“偏移量”是什么意思? 我已经检查了 R 帮助,但我仍然对函数中的“偏移”术语感到困惑? 谢谢你的帮助。

该示例取自《 广义可加模型:R介绍》一书

library(mgcv)
library(gamair)

data(sole)
sole$off <- log(sole$a.1-sole$a.0)
sole$a<-(sole$a.1+sole$a.0)/2 
solr<-sole
solr$t<-solr$t-mean(sole$t)
solr$t<-solr$t/var(sole$t)^0.5
solr$la<-solr$la-mean(sole$la)
solr$lo<-solr$lo-mean(sole$lo)

solr$station <- factor(with(solr,paste(-la,-lo,-t,sep="")))  
som <- gamm(eggs~te(lo,la,t,bs=c("tp","tp"),k=c(25,5),d=c(2,1))
        +s(t,k=5,by=a)+offset(off), family=quasipoisson,
        data=solr,random=list(station=~1))

请注意,对于此模型,通过带有gam()bam() family tw使用 Tweedie 响应可能更有意义,这不能与gamm()一起使用。 事实上,Simon Wood 和 Matteo Fasiolo 将这些数据与位置尺度 Tweedie GAM 拟合(其中他们对 Tweedie 分布的均值、方差和功效参数进行建模,每个参数都具有单独的线性预测器 [模型])。

在@BenBolker 的建议下:我什至不会专门测试这个模型中的随机效应,而且我通常不在乎它是否显着。 这取决于我正在研究的问题或假设。 通常我希望它在模型中,因为我希望包含在模型中的数据中有一些聚类,而不管重要性如何。

但是,我不相信(广义)似然比检验 (GLRT) 的理论不适用于在这种情况下使用准似然。 Simon Wood 在他的 GAMS 教科书第二版的附录 A 中提出了推导,表明如果我们用对数准似然替换对数似然,先前推导出的最大似然估计结果(包括 GLRT 的结果)成立。 至少西蒙似乎在争论,这表明我在下面提到的测试的解释和在summary.gam()实现的随机效应一样可靠,就好像它是基于适当的可能性一样。

除非我真的需要,否则我会用gam()bam()然后gamm4() (后者来自gamm4包),在gamm()之前,特别是对于非高斯模型,作为gamm()函数必须将该模型拟合为使用惩罚准似然的混合效应模型,这不一定是估计这些模型的最佳方法。

library(mgcv)
library(gamair)
devtools::install_github('gavinsimpson/gratia')
library(gratia)

data(sole)
sole$off <- log(sole$a.1-sole$a.0)
sole$a<-(sole$a.1+sole$a.0)/2 
solr <- sole
solr$t <- solr$t-mean(sole$t)
solr$t <- solr$t/var(sole$t)^0.5
solr$la <- solr$la-mean(sole$la)

solr$lo <- solr$lo-mean(sole$lo)
solr$station <- factor(with(solr,paste(-la,-lo,-t,sep="")))

som <- gam(eggs ~ te(lo, la, t, bs = c('tp','tp'), k = c(25, 5), d = c(2,1)) + 
           s(t, k = 5, by = a) + s(station, bs = 're') + offset(off),
           family = quasipoisson, data = solr, method = 'REML')

然后summary(som)根据@BenBolker 的建议给出基于似然比测试的测试,但参考分布被校正以在参数空间的边界上进行测试。

> summary(som)

Family: quasipoisson 
Link function: log 

Formula:
eggs ~ te(lo, la, t, bs = c("tp", "tp"), k = c(25, 5), d = c(2, 
    1)) + s(t, k = 5, by = a) + s(station, bs = "re") + offset(off)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -3.4016     0.3061  -11.11   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
                edf  Ref.df      F  p-value    
te(lo,la,t)  56.025  65.456  2.547 4.62e-10 ***
s(t):a        4.535   4.886 54.790  < 2e-16 ***
s(station)  128.563 388.000  1.175  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.833   Deviance explained =   88%
-REML = -7.9014  Scale est. = 0.58148   n = 1575

我遇到了麻烦,使用获得的模型没有收敛的随机效应gamm()所以我无法测试随机效应项和尝试的多模式表单时即使遇到错误anova()

如果你想获得随机效果,使用gam()模型,你可以使用我的gratia包(希望几天后在 CRAN 上,但可以从 github 安装,如上所示),然后:

> evaluate_smooth(som, 's(station)')
# A tibble: 394 x 5
   smooth    by_variable station                                       est    se
   <chr>     <fct>       <chr>                                       <dbl> <dbl>
 1 s(statio… NA          -0.0004304761904734280.419685714285714-… -0.0396   2.55
 2 s(statio… NA          -0.0004304761904734280.6586857142857140…  1.48     1.20
 3 s(statio… NA          -0.0004304761904734281.15968571428571-1… -0.00606  2.63
 4 s(statio… NA          -0.0004304761904734281.176685714285710.… -0.0767   2.48
 5 s(statio… NA          -0.002430476190475870.9096857142857141.… -0.00654  2.63
 6 s(statio… NA          -0.01243047619047390.4106857142857140.0… -0.802    1.61
 7 s(statio… NA          -0.0154304761904740.631685714285714-0.4… -0.138    2.35
 8 s(statio… NA          -0.02043047619047660.375685714285714-0.… -0.426    1.94
 9 s(statio… NA          -0.02543047619047911.14668571428571-0.4… -0.0333   2.57
10 s(statio… NA          -0.02743047619047450.875685714285714-0.… -0.0673   2.49
# … with 384 more rows

并且您想要est列。

偏移量是模型中具有固定效应为 1 的项。在这种情况下,它被用于标准化计数响应,以便您逐一比较; 在这个例子中,它被用来整合这个样本中发现的鸡蛋的年龄。 阅读第 Simon 的 GAM 书籍第 2 版的 143 以了解有关此模型正在执行的操作以及偏移量的含义的更多信息。

更一般地说,假设您在一条带有两个网的河流中取样; 一个网的面积是另一个的两倍。 您更有可能在更大的网中捕获更多的东西,因此,由于更大的采样工作,更大的网中的计数会更高——您用更大的网扫过更多的河流(假设您采样了相同数量的时间)。 为了确保您考虑到这种工作量差异,您可以在模型中包含一个偏移量。 偏移量将是(对于具有对数链接的泊松模型) offset(log(net_area)) 我们必须在链接比例上包括偏移量,因此log() 现在我们正在建模的是每单位面积的网数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM