eli*_*isa 5 regression r lme4 mixed-models logistic-regression
我正在尝试运行一个相对简单的 glmer 模型,并收到警告说它是奇异的,但我不明白为什么。
在我的数据集中,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)
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行混合效应逻辑回归,以估计每个参与者仅将高置信度与正确响应相关联的能力。这意味着,我有充分的理由在我的模型中添加随机置信斜率。
我感兴趣的最简单的模型给了我:
model = glmer(correct ~ confidence + (confidence|subject) ,
data = data,
family = binomial)
Run Code Online (Sandbox Code Playgroud)
边界(奇异)拟合:参见 ?isSingular,以及
> isSingular(model)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
所以我简化了模型,超出了实用性,并遇到了同样的问题:
model = glmer(correct ~ confidence + (1|subject) ,
data = data,
family = binomial)
Run Code Online (Sandbox Code Playgroud)
我试图保持信心(我确信有更优雅的方法),以防有帮助,但没有:
#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)
Run Code Online (Sandbox Code Playgroud)
边界(奇异)拟合:参见 ?isSingular
关于警告有很多帖子和问题isSingular,但我发现的所有帖子和问题都说模型对于数据来说太复杂,解决方案通常是“保持最大”。然而,这个模型非常简单,而且我很困惑的是,经过足够多的试验(听起来像是),它仍然失败了。
我也尝试过更改控制器,但没有帮助:
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)
Run Code Online (Sandbox Code Playgroud)
任何关于在数据中寻找什么的帮助或指示都值得赞赏。
编辑回应评论:结果ggplot(data,aes(x=subject, y=correct)) + stat_summary(fun.data=mean_cl_normal)

众所周知,具有随机斜率和随机截距相关的 GLMM(又称最大模型)即使在拟合良好的数据下也很难拟合,尽管有些人提倡这种方法。除非您看到随机斜率预测因子存在一些严重波动的主题或项目方差,否则我最好的建议是拟合仅随机截距模型,看看它是否更适合。
对于这个主题有截然不同观点的三篇综合论文,请参见下文。第一篇是一篇经常被引用的关于最大方法的论文。第二个是由创建该lme4包的人编写的,他为简约模型提出了论点。第三篇是本·博克推荐的贝茨的另一篇同行评审论文。
引用: