【问题标题】:Creating regression output table using modelsummary使用模型摘要创建回归输出表
【发布时间】:2021-02-19 10:16:25
【问题描述】:

这篇文章是here 的延续。我尝试按照建议使用model summary 创建回归输出表。但是我遇到了一些麻烦。

# Code from the original question
library(mfx)
library(dplyr)

year <- rep(2014:2015, length.out = 10000)
group <- sample(c(0,1,2,3,4,5,6), replace=TRUE, size=10000)
value <- sample(10000, replace = T)
female <- sample(c(0,1), replace=TRUE, size=10000)
smoker <- sample(c(0,1), replace=TRUE, size=10000)
dta <- data.frame(year = year, group = group, value = value, female=female, smoker = smoker)
table_list <- dta %>%
  group_by(year, group) %>%
  group_split()

model_list <- lapply(table_list, function(x) probitmfx(smoker ~ female, data = x))

# New code
library(modelsummary)
tab <- modelsummary(model_list, output = 'flextable',
             stars = TRUE, 
             title = "Table x.", gof_omit = 'IC|Log|Adj')
tab

问题 1. 这给了我一个看起来很奇怪的表格,如下所示:

问题 2。另外,我想使用 add_header 添加标头,就像使用 kable 一样。我将如何在模型摘要中做到这一点?

tab %>% 
  add_header(c(" " = 2, "Donations" = 4, "Crimes (person)" = 4, "Crimes (property)" = 4))%>%
  autofit()

编辑:版本 R

This is the version platform   
x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes 

编辑1:

无论我设置kable 还是flextable,我都会得到相同的结果。我已经更新了包并重启了电脑。

【问题讨论】:

    标签: r modelsummary


    【解决方案1】:

    了解modelsummary 重要的是它只准备回归表“结构”,并将表的“绘图”委托给外部包:kableExtragtflextable , 或huxtable(更多包即将推出)。

    这太棒了,因为支持的制表包非常强大,并且它们允许几乎无限的自定义。但当然,缺点是如果你想定制,你需要了解一些关于这些包的知识。有问题的包是非常好的文档,所以请查看他们的网站:

    您的问题似乎是:

    1. 我无法通过复制粘贴您的代码在新的R 会话中重现您粘贴在我的计算机上的表格。请更新您的软件包,重新启动您的 R 会话,然后重试。 (您使用的是哪个版本的R?)
    2. flextable 的宽度太小,所以flextable 插入换行符。使用flextable 包中的width 命令进行修复。
    3. 您尝试使用kableExtra 语法(这是modelsummary 的默认输出格式)添加一行标签,但您手动决定创建flextable 输出。 flextable 包中的 add_header_row 提供了类似的功能。

    为了便于阅读,我将使用 magrittr 管道:

    library(magrittr)
    

    kableExtra 解决方案(modelsummary 中的默认值):

    library(kableExtra)
    
    modelsummary(model_list) %>%
      add_header_above(c(" " = 1, "first" = 4, "second" = 10))
    

    flextable 解决方案(您喜欢的输出格式):

    library(flextable)
    
    modelsummary(model_list, output = "flextable") %>%
      add_header_row(values = c("", "first", "second"),
                     colwidths = c(1, 4, 10)) %>%
      width(width = 10)
    

    【讨论】:

    • 谢谢文森特。我希望我能让它工作。这似乎是唯一允许我展示 mfx 结果的包。
    • 系数值似乎是正确的。只是它们重复了很多很多次。
    • sessionInfo() 的输出对于诊断问题更有用。确保已加载 modelsummaryflextablekableExtra 包。
    猜你喜欢
    • 2018-10-04
    • 2021-12-19
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多