r - 重新格式化 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 值的输出如何出现。谢谢!
解决方案
我不知道如何在 中实现这一点,但是使用包stargazer
很容易做到(免责声明:我是作者)。modelsummary
R
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 |
推荐阅读
- java - 在JavaFX中同步同一客户端的多个线程
- python - Python:使用 pandavro 无效数据类型 64 [ns] 生成 avro 模式
- list - 在 go 中创建一个包含列表类型的结构
- apache-kafka - 无法启动卡夫卡
- c++ - 我可以确定 const 引用在被另一个实体修改时会更新吗?
- ms-access - 将 xlsx 导入 MS-Access 中的顶行空白
- haskell - Haskell 堆栈在构建时忽略 -Wall -Werror cabal ghc-options 标志
- mosquitto - “未知选项'--cafile'。”
- javascript - 我在哪里可以获得所有本机节点模块的数组?
- oracle - 如何将oracle forms 10g中的数据直接导出到Excel和PDF文件?