如何将MICE合并插补回归结果添加至stargazer表格
解决MICE插补回归结果用stargazer生成HTML表格的问题
stargazer本身不支持直接处理mice::pool()返回的对象,这就是你报错的原因。下面提供两种可行的解决方法:
方法一:手动提取汇总统计量传入stargazer
先提取pooled模型的系数、标准误、p值和R²等关键信息,再通过stargazer的参数手动指定这些内容:
library(mice) library(stargazer) library(miceadds) # 用于计算pooled R² mydf <- iris set.seed(1) # 创建缺失值 mydf$Sepal.Length[sample(nrow(mydf), nrow(mydf)/3)] <- NA # MICE插补 m <- 30 mydf_mice <- mice(mydf, m = m, maxit = 10, seed = 1, print = FALSE) # 拟合模型并pool mydf_mice_fit <- with(mydf_mice, lm(Petal.Length ~ Petal.Width + Sepal.Length + Sepal.Width)) pooled_model <- pool(mydf_mice_fit) # 提取pooled结果的关键统计量 pooled_summary <- summary(pooled_model) coefs <- pooled_summary$estimate ses <- pooled_summary$std.error pvals <- pooled_summary$p.value # 计算pooled R² r2 <- pool.r.squared(pooled_model)$R2_pooled # 用stargazer生成HTML表格 stargazer( type = "html", out = "mice_reg.html", title = "MICE插补后的回归结果", coef = list(coefs), se = list(ses), p = list(pvals), r2 = r2, column.labels = c("Pooled Model"), dep.var.labels = "Petal.Length", digits = 3 # 控制小数位数 )
方法二:用miceadds包转换模型对象
miceadds包的mi.mice()函数可以将MICE拟合的模型转换为stargazer可识别的对象,步骤更简洁:
library(mice) library(stargazer) library(miceadds) mydf <- iris set.seed(1) mydf$Sepal.Length[sample(nrow(mydf), nrow(mydf)/3)] <- NA # MICE插补与模型拟合 m <- 30 mydf_mice <- mice(mydf, m = m, maxit = 10, seed = 1, print = FALSE) mydf_mice_fit <- with(mydf_mice, lm(Petal.Length ~ Petal.Width + Sepal.Length + Sepal.Width)) # 转换为stargazer兼容对象 mi_model <- mi.mice(mydf_mice_fit, method = "pooling") # 生成HTML表格 stargazer(mi_model, type = "html", out = "mice_reg.html", title = "MICE插补后的回归结果")
两种方法都能生成和普通lm模型格式一致的HTML表格,你可以根据自己的需求选择。
内容的提问来源于stack exchange,提问作者degeso
相关产品推荐
相关产品推荐

