You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

0-100连续得分的glmmTMB模型适配:诊断要求与族选择咨询

针对你的混合模型问题的解答

1. 模型不能直接使用

你当前调用的glmmTMB默认使用高斯族(gaussian),和普通线性回归的假设一致——要求残差正态、同方差。你的数据已经存在异方差和非正态性,直接用默认模型会导致参数标准误估计偏差,推断结果不可靠,必须先做模型诊断并调整设定。

2. GLMM的诊断假设及检验步骤

GLMM需要验证以下核心假设,对应操作如下:

  • 线性关系:你已确认满足,可通过拟合值vs残差图二次验证:

    fitted_vals <- fitted(model)
    res <- resid(model, type = "response")
    plot(fitted_vals, res, xlab = "拟合值", ylab = "响应残差")
    abline(h = 0, lty = 2)
    

    若残差随机分布在0线附近,说明线性关系成立。

  • 残差的正态性与同方差性:
    提取Pearson残差,绘制QQ图和残差-拟合值图:

    res_pearson <- resid(model, type = "pearson")
    # QQ图检验正态性
    qqnorm(res_pearson); qqline(res_pearson)
    # 残差-拟合值图检验异方差
    plot(fitted_vals, res_pearson, xlab = "拟合值", ylab = "Pearson残差")
    abline(h = 0, lty = 2)
    

    QQ图中若点偏离直线过多,说明非正态;残差-拟合值图中若残差范围随拟合值变化,说明存在异方差。

  • 随机效应的正态性:
    提取国家层面的随机效应,绘制QQ图:

    re_country <- ranef(model)$cond$COUNTRY[, 1]
    qqnorm(re_country); qqline(re_country)
    

    若点大致沿直线分布,说明随机效应符合正态假设。

  • 更系统的诊断工具:推荐用DHARMa包模拟残差,更准确检验混合模型假设:

    library(DHARMa)
    sim_res <- simulateResiduals(model = model)
    plot(sim_res) # 一键查看正态性、同方差性等情况
    testDispersion(sim_res) # 检验过度离散
    testUniformity(sim_res) # 检验残差均匀性
    

3. glmmTMB的分布族选择

你的因变量是0-100的有界连续值,结合非正态、异方差的情况,推荐以下选项:

(1)Beta回归族(优先选择)

将score转换为0-1的比例(若存在0或100,可做微小调整:score_prop <- (score + 0.5)/(100 + 1)),Beta回归专门处理比例型有界数据,天然适配异方差和非正态情况:

my_dataset$score_prop <- my_dataset$score / 100
model_beta <- glmmTMB(score_prop ~ AN + BC + OU + AR + GE + LO + (1|COUNTRY), 
                      data = my_dataset, 
                      family = beta_family(link = "logit"))

(2)高斯族+方差结构

若不想转换因变量,可在高斯族模型中添加方差结构,让方差随自变量变化来处理异方差:

model_gauss_var <- glmmTMB(score ~ AN + BC + OU + AR + GE + LO + (1|COUNTRY), 
                           data = my_dataset, 
                           dispformula = ~ AN + BC) # 可根据实际情况替换为其他自变量

(3)Gamma族(仅当score无0时尝试)

如果你的score几乎没有0值,且呈右偏分布,可尝试Gamma族:

model_gamma <- glmmTMB(score ~ AN + BC + OU + AR + GE + LO + (1|COUNTRY), 
                       data = my_dataset, 
                       family = gamma_family(link = "log"))

选择建议

优先尝试Beta回归,这是0-100这类有界连续得分的标准建模方式;若转换后效果不佳,再考虑高斯族加方差结构;Gamma族仅在score无0时作为备选。

模型调整后务必重新做诊断,确保假设满足后再进行结果推断。

内容的提问来源于stack exchange,提问作者Alsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:30:24