modelsummary包无法显示F值的技术问题咨询
解决modelsummary包不显示F值的问题
modelsummary默认不会显示F值,原因有两个:
- 当模型列表包含不同类型(如OLS和Poisson回归)时,包会默认只展示所有模型兼容的统计量,而F值是线性回归(
lm)独有的整体显著性检验统计量。 - 即使是单个线性模型,默认的拟合优度(GOF)统计集合也未包含F值。
解决方案:自定义拟合优度统计量映射
你可以通过gof_map参数手动指定要显示的统计量,包括F值。以下是具体实现:
- 加载所需包并准备数据(沿用你的示例):
library(modelsummary) url <- 'https://vincentarelbundock.github.io/Rdatasets/csv/HistData/Guerry.csv' dat <- read.csv(url) models <- list( "OLS 1" = lm(Donations ~ Literacy + Clergy, data = dat), "Poisson 1" = glm(Donations ~ Literacy + Commerce, family = poisson, data = dat), "OLS 2" = lm(Crime_pers ~ Literacy + Clergy, data = dat), "Poisson 2" = glm(Crime_pers ~ Literacy + Commerce, family = poisson, data = dat), "OLS 3" = lm(Crime_prop ~ Literacy + Clergy, data = dat) )
- 创建自定义的GOF映射表,包含F值:
library(tibble) gof_custom <- tribble( ~raw, ~clean, ~fmt, ~omit, "r.squared", "R²", 3, FALSE, "adj.r.squared","Adj. R²", 3, FALSE, "fstatistic", "F Statistic", 2, FALSE, # 添加F值 "df.residual", "Residual DF", 0, FALSE, "nobs", "Observations", 0, FALSE )
- 使用自定义映射生成表格:
modelsummary(models, gof_map = gof_custom)
执行后,所有OLS模型会显示F值,Poisson模型对应位置会显示NA(因为该统计量不适用于这类模型),你可以通过调整gof_map中的omit规则或添加条件逻辑来隐藏这些NA值。
单个线性模型的情况
如果只需要展示单个lm模型的F值,同样可以用上述自定义映射:
model <- lm(Donations ~ Literacy + Clergy, data = dat) modelsummary(model, gof_map = gof_custom)
Quarto渲染优化
modelsummary支持gt、kableExtra等多种输出格式,在Quarto中渲染时,可以指定输出格式确保显示效果:
modelsummary(models, gof_map = gof_custom, output = "gt") # 使用gt输出 # 或 modelsummary(models, gof_map = gof_custom, output = "kableExtra") # 使用kableExtra输出
这样生成的表格在Quarto中渲染效果会远优于stargazer。
内容的提问来源于stack exchange,提问作者Philipp Schulz
相关产品推荐
相关产品推荐

