如何解决R中glmer在数据顺序打乱时的不同结果
我发现 lme4 包中的 glmer 有时会给出略有不同的结果,例如AIC/BIC 和/或固定/随机因素,当模型有点复杂并且数据顺序被打乱时。因此,我在 AIC 或 BIC 方面获得了最佳结果。这有意义吗?
第二个问题是分歧从何而来?理论上,只要 i.i.d 假设成立,数据的顺序就无关紧要。不同的结果表明 glmer 使用(可能是迭代)依赖于初始值的算法。
如果您能提供任何反馈或建议,我将不胜感激。
为了您的信息,这里是我测试的示例代码,假设多个从业者根据医学图像中的四种类型的特征进行二元诊断。
# data generation
nPracts <- 40 # number of practitioners
nImages <- 100 # number of medial images
var1 <- rep(seq(-20,20,10),20) # 4 image features
var2 <- c(rep(-20,20),rep(-10,rep(0,rep(10,rep(20,20))
var3 <- rep(seq(-20,25,5),10)
var4 <- c(rep(10,rep(-20,20))
fix1 <- 0.05 # 4 fixed factors
fix2 <- 0.5
fix3 <- 0.1
fix4 <- 0.3
rand1 <- rnorm(nPracts,mean=0,sd=0.1) # 4 random factors (practitioner-dependent)
rand2 <- rnorm(nPracts,sd=0.05)
rand3 <- rnorm(nPracts,sd=0.01)
rand4 <- rnorm(nPracts,sd=0.03)
data <- data.frame()
for (j in 1:nPracts){
for (i in 1:nImages){
z <- var1[i]*(fix1+rand1[j])+var2[i]*(fix2+rand2[j])+var3[i]*(fix3+rand3[j])+var4[i]*(fix4+rand4[j])
pr <- 1/(1+exp(-z))
y <- rbinom(1,1,pr) # binary diagnosis
data<- rbind(data,c(j,var1[i],var2[i],var3[i],var4[i],y))
}
}
colnames(data) <- c('practitioner','var1','var2','var3','var4','diagnosis')
data$diagnosis<- factor(data$diagnosis)
data$practitioner <- factor(data$practitioner)
# refit model 5 times to see the divergence
for (k in 1:5){
set.seed(123+k)
data2 <- data[sample(nrow(data)),] # change data order
fit <- glmer(diagnosis~ var1+var2+var3+var4+(0+var1|practitioner)+(0+var2|practitioner)+(0+var3|practitioner)+(0+var4|practitioner),data=data2,family=binomial(link="logit"))
print(fit)
}
这是来自最后一个块的两个样本结果。它们略有不同。
AIC BIC logLik deviance df.resid
511.9535 568.5999 -246.9767 493.9535 3991
Random effects:
Groups Name Std.Dev.
practitioner var1 0.099567
practitioner.1 var2 0.080622
practitioner.2 var3 0.002188
practitioner.3 var4 0.046851
Number of obs: 4000,groups: practitioner,40
Fixed Effects:
(Intercept) var1 var2
0.39222 0.05796 0.56366
var3 var4
0.10046 0.31254
AIC BIC logLik deviance df.resid
512.0151 568.6616 -247.0076 494.0151 3991
Random effects:
Groups Name Std.Dev.
practitioner var1 0.100646
practitioner.1 var2 0.080578
practitioner.2 var3 0.006207
practitioner.3 var4 0.044535
Number of obs: 4000,40
Fixed Effects:
(Intercept) var1 var2
0.26154 0.05492 0.54916
var3 var4
0.10028 0.30373
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。