多重插补数据集匹配后,如何设置模型分类变量参考水平(如KOA设为1)?
调整多重插补匹配后模型中分类变量的参考水平
要将分类变量KOA的参考水平设为1而非0,核心是修改变量的因子水平顺序,可以通过以下两种方式实现:
方法一:拟合模型时临时调整
无需修改原始插补或匹配数据集,直接在svyglm的公式中用relevel()指定参考水平:
library(MatchThem) library(mice) library(survey) data("osteoarthritis") # 执行多重插补 imputed.datasets <- mice(osteoarthritis, m = 5) # 完成匹配操作 matched.datasets <- matchthem(OSP ~ AGE + SEX + BMI + RAC + SMK, datasets = imputed.datasets, approach = 'within', method = 'nearest', caliper = 0.05, ratio = 2) # 拟合模型时将KOA的参考水平设为1 matched.models <- with(matched.datasets, svyglm(relevel(factor(KOA), ref = "1") ~ OSP, family = quasibinomial()), cluster = TRUE)
如果KOA原本已经是因子类型,可简化为relevel(KOA, ref = "1")。
方法二:预处理插补数据集(匹配前统一修改)
如果希望所有后续分析都默认以1作为KOA的参考水平,可以先修改每个插补数据集的变量属性:
library(MatchThem) library(mice) library(survey) data("osteoarthritis") # 定义修改KOA参考水平的函数 adjust_koa_ref <- function(data) { data$KOA <- relevel(factor(data$KOA), ref = "1") return(data) } # 对所有插补数据集应用修改 imputed.datasets <- mice(osteoarthritis, m = 5) imputed.datasets$imp <- lapply(imputed.datasets$imp, adjust_koa_ref) # 后续匹配和建模保持原有代码逻辑 matched.datasets <- matchthem(OSP ~ AGE + SEX + BMI + RAC + SMK, datasets = imputed.datasets, approach = 'within', method = 'nearest', caliper = 0.05, ratio = 2) matched.models <- with(matched.datasets, svyglm(KOA ~ OSP, family = quasibinomial()), cluster = TRUE)
验证调整结果
拟合模型后,执行summary(pool(matched.models))查看输出,确认KOA的参考组已设为1——结果中OSP的系数代表的是相对于参考组1的效应。
内容的提问来源于stack exchange,提问作者Science11
相关产品推荐
相关产品推荐

