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

如何用rms包contrast()获取fit.mult.impute系数及校正置信区间

多重插补回归结果的多重比较校正:获取同步置信区间的方法

问题背景

使用mice生成多重插补数据集,通过Hmisc包的fit.mult.impute()拟合回归并得到合并系数后,需要借助rms包的contrast()函数,利用conf.type="simultaneous"参数获取经多重比较校正的同步置信区间。但contrast()函数要求必填a和b参数,而需求是直接获取与fit.mult.impute()输出一致的系数及对应同步置信区间,无需针对预测变量做条件化设置。

复现代码

# 加载所需包
library(tidyverse)
library(Hmisc)
library(mice)
library(rms)

set.seed(1234)

# 使用mtcars数据集
m <- mtcars 

# 随机替换值为NA用于插补
m %>%
  mutate(across(.cols = everything(),
                .fns = ~ifelse(test = runif(length(.x))>0.1,
                               yes = .x,
                               no = NA))) -> m

# 将部分变量转为因子
m %>%
  mutate(across(.cols = c(gear, vs),
                .fns = ~factor(.x))) -> m

# 执行多重插补
ini <- mice(data = m, maxit = 30, seed = 1234)

# 拟合多重插补回归
fmi <- fit.mult.impute(
  formula = mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb,
  data = ini,
  xtrans = ini,
  n.impute = 5,
  fitter = Glm
)

# 查看原回归系数
print(fmi)

解决方案:利用coefs参数获取同步置信区间

rms::contrast()提供了coefs参数,可直接指定要提取的系数索引,无需手动设置a和b参数,即可获取与原回归系数一致的同步置信区间:

# 获取所有系数的同步置信区间
syn_ci <- rms::contrast(
  fit = fmi,
  coefs = 1:length(coef(fmi)),
  conf.type = "simultaneous"
)

# 查看结果
print(syn_ci)

# 转换为数据框方便后续处理
syn_ci_df <- as.data.frame(syn_ci)
print(syn_ci_df)

结果说明

  • 输出的Estimate列与fit.mult.impute()的Coef列完全一致
  • Lower和Upper列为经多重比较校正后的同步置信区间,比单变量置信区间更宽,符合多重比较校正的统计要求
  • 分类变量的水平(如vs=1、gear=4)对应的系数会自动被纳入,无需额外设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:43:18