如何评估配备 lme4 (> 1.0) 的二项式 GLMM 的拟合度?

机器算法验证 二项分布 残差 咕噜咕噜 lme4-nlme
2022-01-25 23:26:22

我有一个具有二项分布和 logit 链接函数的 GLMM,我觉得数据的一个重要方面在模型中没有很好地表示。

为了测试这一点,我想知道数据是否可以通过 logit 尺度上的线性函数很好地描述。因此,我想知道残差是否表现良好。但是,我无法找出要绘制的残差图以及如何解释该图。

请注意,我使用的是新版本的 lme4(来自 GitHub 的开发版本):

packageVersion("lme4")
## [1] ‘1.1.0’

我的问题是:如何检查和解释具有 logit 链接函数的二项式广义线性混合模型的残差?

以下数据仅代表我真实数据的 17%,但在我的机器上拟合已经需要大约 30 秒,所以我将其保留为:

require(lme4)
options(contrasts=c('contr.sum', 'contr.poly'))

dat <- read.table("http://pastebin.com/raw.php?i=vRy66Bif")
dat$V1 <- factor(dat$V1)

m1 <- glmer(true ~ distance*(consequent+direction+dist)^2 + (direction+dist|V1), dat, family = binomial)

最简单的绘图 ( ?plot.merMod) 产生以下结果:

plot(m1)

在此处输入图像描述

这是否已经告诉我一些事情?

4个回答

简短的回答,因为我没有时间更好:这是一个具有挑战性的问题;二进制数据几乎总是需要某种分箱或平滑来评估拟合优度。fortify.lmerMod(from lme4, experimental) 结合使用ggplot2,特别geom_smooth()是绘制与上面相同的残差与拟合图,但有置信区间(我还缩小了 y 限制以放大 ( -5,5) 地区)。这表明可以通过调整链接功能来改进一些系统性的变化。(我也尝试根据其他预测变量绘制残差,但它并没有太大用处。)

我尝试使用所有 3 向交互来拟合模型,但无论是在偏差还是在平滑残差曲线的形状方面都没有太大的改进。

然后我用这个蛮力尝试了形式的反向链接函数(logistic(x))λ, 为了λ范围从 0.5 到 2.0:

## uses (fragile) internal C calls for speed; could use plogis(),
##  qlogis() for readability and stability instead
logitpower <- function(lambda) {
    L <- list(linkfun=function(mu)
              .Call(stats:::C_logit_link,mu^(1/lambda),PACKAGE="stats"),
              linkinv=function(eta)
              .Call(stats:::C_logit_linkinv,eta,PACKAGE="stats")^lambda,
              mu.eta=function(eta) {
                  mu <-  .Call(stats:::C_logit_linkinv,eta,PACKAGE="stats")
                  mu.eta <-  .Call(stats:::C_logit_mu_eta,eta,PACKAGE="stats")
                  lambda*mu^(lambda-1)*mu.eta
              },
              valideta = function(eta) TRUE ,
              name=paste0("logit-power(",lambda,")"))
    class(L) <- "link-glm"
    L
}

我发现一个λ0.75比原始模型好,虽然不是很明显——我可能过度解释了数据。

另见: http: //freakonometrics.hypotheses.org/8210

这是生物统计学/流行病学课程中非常常见的主题,并且没有很好的解决方案,主要是由于模型的性质。通常,解决方案是避免使用残差进行详细诊断。

Ben 已经写道,诊断通常需要分箱或平滑。残差的分箱在 R 包臂中是(或曾经是)可用的,例如,参见这个线程此外,还有一些使用预测概率的工作;一种可能性是本线程前面讨论过的分离图这些可能会或可能不会直接帮助您的情况,但可能有助于解释。

您可以使用 DHARMa 包中的模拟技术针对预测变量绘制残差,它还提供了一系列诊断,例如过度离散和异常值,我认为它是 GLMM 的实用且简单的评估工具。看看:https ://cran.r-project.org/web/packages/DHARMa/vignettes/DHARMa.html

您可以使用 AIC 而不是残差图来检查模型的拟合。R中的命令:AIC(model1)它会给你一个数字......所以你需要将它与另一个模型(例如具有更多预测变量)进行比较 - AIC(model2),它将产生另一个数字。比较两个输出,您将需要具有较低 AIC 值的模型。

顺便说一句,当您获得 glmer 模型的摘要时,已经列出了诸如 AIC 和对数似然比之类的内容,并且两者都会为您提供有关模型拟合的有用信息。您需要对数似然比的大负数来拒绝原假设。