我正在使用广义线性混合模型(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")))
答案 0 :(得分:4)
这是CrossValidated问题的结果;您肯定会看到完全分离,其中您的响应完全划分为0对1结果。这导致(1)参数的无限值(它们仅由于计算缺陷而被列为非无限)和(2)Wald标准误差的疯狂/无用值以及相应的$ p $值(这就是你'看到这里)。讨论和解决方案分为here,here和here,但我将在下面进行说明。
暂时成为一个统计学家:你真的不应该试图只用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 ***
如上所述,无论如何,我不推荐混合型号......