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

将mice生成的多重插补数据集传入fit.mult.impute时遇错求助

多重插补数据集分析:fit.mult.impute报错解决及替代方案

问题背景

在Cross Validated的帖子中,Frank Harrell建议使用Hmisc包的fit.mult.impute()函数处理mice包生成的多重插补数据集,再传入rms包的contrast()函数实现多重比较的置信区间同步校正。但运行代码时出现以下错误:

Error in fitter(formula, data = completed.data, ...) : could not find function "fitter"

复现代码

library(tidyverse)
library(Hmisc)
library(mice)
library(rms)

set.seed(1234)

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

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

# 原报错代码
fit.mult.impute(formula = mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb,
                data = ini,
                xtrans = ini,
                n.impute = 5,
                fitter = "lm") -> fmi

报错原因分析

  • fitter参数类型错误:fit.mult.impute()要求fitter传入函数对象(如lm),而非字符串(如"lm")。
  • data参数传递错误:data需要传入原始含缺失值的数据集,而非mice生成的插补对象;xtrans才是指定mice插补结果的参数。
  • 插补数量匹配问题:n.impute需与mice()生成的插补数据集数量一致(默认生成5个,可通过ini$m查看)。

解决方法:修正fit.mult.impute()调用

调整参数后即可正常运行:

# 修正后的fit.mult.impute调用
fit.mult.impute(formula = mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb,
                data = m,  # 传入原始数据集
                xtrans = ini,  # 传入mice插补对象
                n.impute = ini$m,  # 匹配插补数量
                fitter = lm) -> fmi

# 执行同步置信区间校正
rms::contrast(fit = fmi, conf.type = "simultaneous")

替代方案:使用mice原生流程实现

若仍存在兼容问题,可采用mice原生的with()+pool()流程拟合模型,再结合rms工具处理:

# 在插补数据集上拟合rms的lrm模型
fit_list <- with(ini, expr = lrm(mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb))

# 合并插补模型结果
pooled_fit <- pool(fit_list)

# 循环生成各插补数据集的contrast结果
contrasts_list <- lapply(1:ini$m, function(i) {
  complete_data <- complete(ini, action = i)
  fit <- lrm(mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb, data = complete_data)
  contrast(fit, conf.type = "simultaneous")
})

# 用Rubin规则合并contrast结果
pooled_contrasts <- mice::pool(contrasts_list)
summary(pooled_contrasts)

会话信息

R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22621)

Matrix products: default

locale:
[1] LC_COLLATE=English_Australia.utf8  LC_CTYPE=English_Australia.utf8   
[3] LC_MONETARY=English_Australia.utf8 LC_NUMERIC=C                       
[5] LC_TIME=English_Australia.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base      

other attached packages:
 [1] rms_6.3-0       SparseM_1.81    Hmisc_4.7-1     Formula_1.2-4   survival_3.4-0  lattice_0.20-45
 [7] miselect_0.9.0  naniar_1.0.0    magrittr_2.0.3  haven_2.5.1     mice_3.14.0     lubridate_1.9.2
[13] forcats_1.0.0   stringr_1.5.1   dplyr_1.1.2     purrr_1.0.1     readr_2.1.4     tidyr_1.3.0    
[19] tibble_3.2.1    ggplot2_3.5.1   tidyverse_2.0.0

loaded via a namespace (and not attached):
 [1] viridis_0.6.2       viridisLite_0.4.2   splines_4.2.2       latticeExtra_0.6-30
 [5] norm_1.0-10.0       pillar_1.9.0        backports_1.4.1     quantreg_5.94      
 [9] glue_1.6.2          visdat_0.6.0        digest_0.6.29       RColorBrewer_1.1-3 
[13] checkmate_2.1.0     sandwich_3.0-2      colorspace_2.0-3    htmltools_0.5.3    
[17] Matrix_1.4-1        pkgconfig_2.0.3     broom_1.0.4         mvtnorm_1.1-3      
[21] scales_1.3.0        jpeg_0.1-9          tzdb_0.3.0          MatrixModels_0.5-0 
[25] timechange_0.2.0    htmlTable_2.4.1     generics_0.1.3      farver_2.1.1       
[29] ellipsis_0.3.2      TH.data_1.1-1       withr_3.0.1         nnet_7.3-17        
[33] cli_3.6.1           deldir_1.0-6        polspline_1.1.20    fansi_1.0.3        
[37] nlme_3.1-159        MASS_7.3-58.1       foreign_0.8-82      tools_4.2.2        
[41] data.table_1.14.2   hms_1.1.2           multcomp_1.4-20     lifecycle_1.0.4    
[45] interp_1.1-3        munsell_0.5.1       cluster_2.1.4       compiler_4.2.2     
[49] rlang_1.1.0         grid_4.2.2          rstudioapi_0.14     htmlwidgets_1.5.4  
[53] base64enc_0.1-3     labeling_0.4.3      codetools_0.2-18    gtable_0.3.5       
[57] R6_2.5.1            zoo_1.8-10          gridExtra_2.3       knitr_1.40         
[61] fastmap_1.1.0       utf8_1.2.2          stringi_1.7.8       Rcpp_1.0.9         
[65] vctrs_0.6.2         rpart_4.1.16        png_0.1-7           tidyselect_1.2.1   
[69] xfun_0.32 

内容的提问来源于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:34:51