如何在gtsummary::tbl_uvregression结合geepack::geeglm建模时仅移除当前模型变量的NA值而非保留全完整记录
解决方法
你遇到的问题核心是手动指定了全局的data = na.omit(data)参数,这会强制所有单变量模型使用同一个剔除了所有NA的完整数据集,而非为每个变量单独保留仅当前自变量、因变量和ID变量非NA的观测,最终导致模型维度不匹配报错。
要实现每个GEE模型仅移除对应变量的NA值,只需做以下调整:
- 移除
method.args中的全局data参数:tbl_uvregression会自动为每个自变量生成临时子集数据,包含当前自变量、因变量和模型必需的ID变量,无需手动指定完整数据集。 - 添加
na.action = na.omit参数:让每个模型仅剔除临时子集里的NA值(也就是当前分析所需变量的NA)。
修改后的代码如下:
tbl_uvregression( method = geepack::geeglm, y = tts_participant, include = -`School Name`, method.args = list( family = poisson, na.action = na.omit, # 关键:为每个模型单独处理当前子集的NA id = `School Name`, corstr = "independence", scale.fix = TRUE ), exponentiate = TRUE, add_estimate_to_reference_rows = FALSE )
原理说明
tbl_uvregression在迭代每个自变量时,会自动构建一个仅包含因变量、当前自变量、ID变量的临时数据框,na.action = na.omit会针对这个临时数据框移除NA,确保每个模型只排除当前分析相关的NA观测,而不是整个数据集的所有NA。如果后续仍有异常,可以尝试用na.action = na.exclude替代,它会在结果中保留NA的位置(对模型拟合逻辑影响极小)。
内容的提问来源于stack exchange,提问作者André van Zyl
相关产品推荐
相关产品推荐

