glmer的事后测试

时间:2015-06-23 20:50:08

标签: r lme4

我正在使用广义线性混合模型(glmer,lme4-package)分析我的二项式数据集。我想使用Tukey的事后测试(glht,multcomp-package)对某个固定效果(“声音”)进行成对比较。

大部分都工作正常,但我的一个固定效果变量(“SoundC”)根本没有变化(96次“1”和0次“0”)似乎Tukey的测试不能处理那个。所有与这个“SoundC”的成对比较得到的p值为1.000,而有些则显然是显着的。

作为验证,我将96“1”中的一个更改为“0”,之后我再次获得了正常的p值,并且在我预期的情况下出现了显着的差异,而在我的手册之后差异实际上变小了变化

有人有解决方案吗?如果没有,是否可以使用我修改过的数据集的结果并报告我的手动更改?

可重复的例子:

Response <- c(1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,
              0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,
              1,1,0,1,1,0,1,1,1,1,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1)    
Data <- data.frame(Sound=rep(paste0('Sound',c('A','B','C')),22),
                   Response,
                   Individual=rep(rep(c('A','B'),2),rep(c(18,15),2)))


# Visual
boxplot(Response ~ Sound,Data)

# Mixed model
library (lme4)
model10 <- glmer(Response~Sound + (1|Individual), Data, family=binomial)

# Post-hoc analysis
library (multcomp)
summary(glht(model10, mcp(Sound="Tukey")))

1 个答案:

答案 0 :(得分:4)

这是CrossValidated问题的结果;您肯定会看到完全分离,其中您的响应完全划分为0对1结果。这导致(1)参数的无限值(它们仅由于计算缺陷而被列为非无限)和(2)Wald标准误差的疯狂/无用值以及相应的$ p $值(这就是你'看到这里)。讨论和解决方案分为hereherehere,但我将在下面进行说明。

暂时成为一个统计学家:你真的不应该试图只用3个等级的随机效果(参见例如http://glmm.wikidot.com/faq)......

Firth纠正逻辑回归:

library(logistf)
L1 <- logistf(Response~Sound*Individual,data=Data,
        contrasts.arg=list(Sound="contr.treatment",
         Individual="contr.sum"))

                                 coef se(coef)            p
(Intercept)              3.218876e+00 1.501111 2.051613e-04 
SoundSoundB             -4.653960e+00 1.670282 1.736123e-05 
SoundSoundC             -1.753527e-15 2.122891 1.000000e+00 
IndividualB             -1.995100e+00 1.680103 1.516838e-01 
SoundSoundB:IndividualB  3.856625e-01 2.379919 8.657348e-01 
SoundSoundC:IndividualB  1.820747e+00 2.716770 4.824847e-01

标准误差和p值现在是合理的(A与C比较的p值为1,因为实际上没有差别......)

具有弱先验的混合贝叶斯模型:

library(blme)
model20 <- bglmer(Response~Sound + (1|Individual), Data, family=binomial,
                  fixef.prior = normal(cov = diag(9,3)))

##              Estimate Std. Error    z value     Pr(>|z|)
## (Intercept)  1.711485   2.233667  0.7662221 4.435441e-01
## SoundSoundB -5.088002   1.248969 -4.0737620 4.625976e-05
## SoundSoundC  2.453988   1.701674  1.4421024 1.492735e-01

固定效应方差 - 协方差矩阵的规范diag(9,3)产生

$$ \剩下( \开始{阵列} {CCC} 9&amp; 0&amp; 0 \ 0&amp; 9&amp; 0 \ 0&amp; 0&amp; 9 \ {端阵列} \对) $$

换句话说,3指定矩阵的维数(等于固定效应参数的数量),9指定方差 - 这对应于标准偏差3或约95%的范围$ \ pm 6 $,对于logit-scaled响应非常大/弱/没有信息。

这些大致一致(模型非常不同)

library(multcomp)
summary(glht(model20, mcp(Sound="Tukey")))

##                     Estimate Std. Error z value Pr(>|z|)    
## SoundB - SoundA == 0   -5.088      1.249  -4.074 0.000124 ***
## SoundC - SoundA == 0    2.454      1.702   1.442 0.309216    
## SoundC - SoundB == 0    7.542      1.997   3.776 0.000397 ***

如上所述,无论如何,我推荐混合型号......