首页 > 解决方案 > 重新格式化 R 中回归的汇总插补结果的结果

问题描述

我对缺失数据使用多重插补,然后使用 pool_mi 函数将插补试验的结果拟合到我的回归模型中。然而,输出的格式并没有以一种易于解释的方式进行格式化,我希望得到一些关于如何做到这一点的指导。下面是我对输出的功能和图像与我想要的输出所做的示例代码。

library(mitools)
data(data.ma05)
dat <- data.ma05

# imputation of the dataset: use six imputations
resp <- dat[, - c(1:2) ]
imp <- mice::mice( resp, method="norm", maxit=3, m=6 )
datlist <- miceadds::mids2datlist( imp )

# linear regression with cluster robust standard errors
mod <- lapply(  datlist, FUN=function(data){
            miceadds::lm.cluster( data=data, formula=denote ~ migrant+ misei,
                    cluster=dat$idclass )
            }  )
# extract parameters and covariance matrix
betas <- lapply( mod, FUN=function(rr){ coef(rr) } )
vars <- lapply( mod, FUN=function(rr){ vcov(rr) } )
# conduct statistical inference
summary( miceadds::pool_mi( qhat=betas, u=vars ) )

这是我得到的输出表。 在此处输入图像描述

但是有没有一种方法可以使用 stargazer 或其他一些函数/程序包,我可以重新格式化我的结果,以便 p 值是四舍五入的,并且旁边有星星来表示重要性?下图展示了我希望输出的更多外观。我知道此图像中的回归是完全不同的函数/变量/数据,但我将其包括在内是为了清楚地说明我希望 p 值的输出如何出现。谢谢!

在此处输入图像描述

标签: routputregressionimputationr-mice

解决方案


我不知道如何在 中实现这一点,但是使用stargazer很容易做到(免责声明:我是作者)。modelsummaryR

modelsummary支持 100 多个开箱即用的模型,但不支持 class 的模型对象pool_mi,这是您的代码生成的。幸运的是,添加对新模型的支持非常容易,如文档中详细描述的那样。

具体来说,我们需要定义两个名为tidy.CLASSNAME和的 S3 方法glance.CLASSNAME。第一种方法返回一个 data.frame,每行有一个系数,列名遵循包中的标准术语broom。第二种方法返回一个具有拟合优度或其他模型特征的单行 data.frame,每列一个。

在您的情况下,这些简单的方法似乎可以完成工作(显然,您可以自定义):

library(modelsummary)

tidy.pool_mi <- function(x, ...) {
  msg <- capture.output(out <- summary(x, ...))
  out$term <- row.names(out)
  colnames(out) <- c("estimate", "std.error", "statistic", "p.value",
                     "conf.low", "conf.high", "miss", "term")
  return(out)
} 

glance.pool_mi <- function(x, ...) {
  data.frame(nimp = x$m)
}

当我们在 的输出上调用这些方法时pool_mi,我们得到:

mod_pooled <- miceadds::pool_mi( qhat=betas, u=vars )


glance(mod_pooled)
#>   nimp
#> 1    6

tidy(mod_pooled)
#>               estimate   std.error statistic      p.value    conf.low
#> (Intercept)  2.5875292 0.085702631 30.191946 3.808654e-55  2.41769205
#> migrant      0.5840870 0.087258478  6.693756 1.051145e-10  0.41237872
#> misei       -0.0140385 0.001661665 -8.448452 2.090746e-12 -0.01735046
#>               conf.high   miss        term
#> (Intercept)  2.75736637 22.7 % (Intercept)
#> migrant      0.75579526 13.4 %     migrant
#> misei       -0.01072654 28.2 %       misei

最后,一旦定义了这些方法,modelsummary包应该立即工作:

modelsummary(mod_pooled)
模型 1
(截距) 2.571
(0.089)
移民 0.571
(0.086)
三生 -0.014
(0.002)
数量。 6

推荐阅读