繁体   English   中英

Logistic glmer{lme4} model isSingular 尽管非常简单

[英]Logistic glmer{lme4} model isSingular despite being very simple

我正在尝试运行一个相对简单的 glmer model 并收到它是 Singular 的警告,我不知道为什么。

在我的数据集中,40 名参与者进行了 108 次试验。 他们回答了一个问题(回答被编码为正确/不正确 - 0/1)并在从 0 到 1 的连续尺度上对他们回答的信心进行评分。

library(lme4)
library(tidybayes)
library(tidyverse)

set.seed(5)
n_trials = 108
n_subjs = 40
data =
  tibble(
    subject = as.factor(rep(c(1:n_subjs), n_trials)),
    correct = sample(c(0,1), replace=TRUE, size=(n_trials*n_subjs)),
    confidence = runif(n_trials*n_subjs)
  )

我正在尝试运行混合效应逻辑回归,以估计每个参与者将高置信度与仅正确响应相关联的能力。 这意味着,我有充分的理由在我的 model 中添加随机的置信度斜率。

我感兴趣的最简单的 model 给了我:

model = glmer(correct ~ confidence + (confidence|subject) , 
                   data = data,  
                   family = binomial)

边界(奇异)拟合:see?isSingular,和

> isSingular(model)
[1] TRUE

所以我简化了 model 的用处,并得到了同样的问题:

model = glmer(correct ~ confidence + (1|subject) , 
              data = data,  
              family = binomial)

我试图 bin confidence (我相信有更优雅的方法),以防万一,但它没有:

#Initialize as vector of 0s
data$confidence_binned <- numeric(dim(data)[1])
nbins = 4
bins=seq(0,1,length.out = (nbins+1))
for (b in 1:(length(bins)-1)) {
  data$confidence_binned[data$confidence>=bins[b] & data$confidence<bins[b+1]] = b
}
data$confidence_binned[data$confidence_binned==1]=nbins


model = glmer(correct ~ confidence_binned + (confidence_binned|subject) , 
              data = data,  
              family = binomial)

边界(奇异)拟合:see?isSingular

关于isSingular警告有很多帖子和 SO 问题,但我发现的所有帖子都说 model 对于数据来说太复杂了,解决方案通常是“保持最大”。 然而,这个 model 已经尽可能简单了,我很困惑,经过足够多的试验(在我看来是这样的)它仍然失败了。

我也尝试更改 controller,但没有帮助:

ctrl = glmerControl(optimizer = "bobyqa",
                    boundary.tol = 1e-5,
                    calc.derivs=TRUE,
                    use.last.params=FALSE,
                    sparseX = FALSE,
                    tolPwrss=1e-7,
                    compDev=TRUE,
                    nAGQ0initStep=TRUE, 
                    ## optimizer args
                    optCtrl = list(maxfun = 1e5))

model  <- glmer(correct ~ confidence_binned + (confidence_binned|subject), 
                data=data, 
                verbose=T, 
                control=ctrl,
                family = binomial)

任何关于在数据中寻找什么的帮助或指示都将受到赞赏。

编辑以回应评论:结果ggplot(data,aes(x=subject, y=correct)) + stat_summary(fun.data=mean_cl_normal) 在此处输入图像描述

众所周知,即使在拟合良好的数据下,具有随机斜率和随机截距相关性(也称为最大模型)的 GLMM 也很难拟合,尽管有些人提倡这种方法。 除非您看到一些严重波动的按主题或按项目方差及其随机斜率预测变量,否则我最好的建议是仅拟合随机截距 model 并查看它是否更适合。

有关对该主题有截然不同观点的三篇综合论文,请参见下文。 第一篇是经常引用最大方法的论文。 第二个是由创建lme4 package 的人编写的,他为简约模型制作了 arguments。 第三篇是 Ben Bolker 推荐的 Bates 的另一篇同行评议论文。

引文:

暂无
暂无

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

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