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

基于R语言GLMMadaptive的多左删失数据混合效应建模求助

针对多水平删失混合效应模型的GLMMadaptive使用方案

1. GLMMadaptive是否为合适选择?

是的,GLMMadaptive完全适配你的场景:

  • 支持左删失、右删失、区间删失,能处理随仪器/污染物变动的不同删失阈值(多删失水平)
  • 原生支持混合效应模型(随机截距、随机斜率),可解决样本内多种污染物测量的非独立性问题
  • 对比你试过的工具:NADA包不支持混合效应,VGAM包的tobit类模型无随机效应接口,GLMMadaptive是当前最匹配的选择,没有遗漏核心功能。

2. 如何指定删失观测及删失水平?

GLMMadaptive的删失指定不是通过censored.normal()的参数,而是需要在数据中构造上下限列来定义每个观测的测量区间:

步骤1:构造删失区间列

在你的pollutants数据框中新增两列(假设已有Result(测量值)、Censor_Type(标识删失类型:"left"=低于阈值,"right"=高于阈值,"exact"=精确测量)、Threshold(对应观测的删失阈值)):

# 用dplyr构造上下限列,也可以用base R实现
pollutants <- pollutants %>%
  mutate(
    # y_lower:左边界,左删失时填阈值,精确值填自身,右删失填-Inf
    y_lower = case_when(
      Censor_Type == "left" ~ Threshold,
      Censor_Type == "exact" ~ Result,
      Censor_Type == "right" ~ -Inf
    ),
    # y_upper:右边界,右删失时填阈值,精确值填自身,左删失填Inf
    y_upper = case_when(
      Censor_Type == "right" ~ Threshold,
      Censor_Type == "exact" ~ Result,
      Censor_Type == "left" ~ Inf
    )
  )

步骤2:修改模型代码

将原模型中的Result替换为y_lower | y_upper的形式,censored.normal()会自动识别区间定义的删失类型:

library(GLMMadaptive)

fit <- mixed_model(
  fixed = y_lower | y_upper ~ Sample_type/AG_level/Regulated,
  random = ~1|Sample_ID,
  data = pollutants,
  family = censored.normal()
)

# 查看模型结果
summary(fit)

补充说明

  • 如果你的数据只有单一方向的删失(比如仅左删失),仍推荐用区间列的方式,因为它能兼容不同观测的不同阈值
  • 模型拟合后,summary()输出会包含删失观测的统计信息(数量、类型占比),可用于验证删失定义是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:00:16