如何在modelsummary表格中添加GLM的McFadden’s R-Squared值?
用modelsummary添加/修改模型拟合统计量(以McFadden’s R-Squared为例)
当然可以添加或修改modelsummary表格中的值,针对你的需求,这里提供两种实用方法:
方法1:通过gof_map自定义拟合统计量展示
gof_map是modelsummary控制拟合统计量(GOF)显示的核心参数,你可以直接配置它来指定要展示的统计量,包括GLM的McFadden’s R-Squared:
library(modelsummary) # 定义自定义拟合统计量映射 custom_gof <- list( list(raw = "r.squared", clean = "R²", fmt = 3), # 线性模型的R平方 list(raw = "adj.r.squared", clean = "调整后R²", fmt = 3), # 可选:添加调整后R平方 list(raw = "mcfadden", clean = "McFadden’s R²", fmt = 3) # GLM的McFadden R平方 ) # 拟合示例模型 lm_model <- lm(mpg ~ wt, data = mtcars) glm_model <- glm(am ~ wt + hp, data = mtcars, family = binomial) # gam_model <- gam(mpg ~ s(wt), data = mtcars) # 若使用GAM需加载mgcv包 # 生成带自定义统计量的表格 modelsummary(list(lm_model, glm_model), gof_map = custom_gof)
这段代码会自动为每个模型匹配对应的统计量:线性模型显示R²,GLM显示McFadden’s R²,GAM(如果拟合)会自动识别并展示其R平方,缺失的统计量会留空,不会影响表格生成。
方法2:手动计算并修改/添加统计量
如果某些统计量未被modelsummary自动识别(比如部分特殊模型的自定义指标),可以手动计算后修改拟合统计数据或直接添加行:
方式A:修改提取后的拟合统计数据框
# 先提取所有模型的拟合统计数据 gof_data <- get_gof(list(lm_model, glm_model)) # 手动计算GLM的McFadden’s R²(若未自动提取) null_glm <- glm(am ~ 1, data = mtcars, family = binomial) mcfadden_val <- 1 - logLik(glm_model)/logLik(null_glm) # 修改gof_data中对应模型的McFadden值 gof_data$mcfadden[2] <- round(as.numeric(mcfadden_val), 3) # 用修改后的gof_data生成表格 modelsummary(list(lm_model, glm_model), gof_map = custom_gof, gof = gof_data)
方式B:用add_rows直接添加自定义行
# 创建要添加的统计量行 custom_row <- data.frame( term = "McFadden’s R²", `Model 1` = NA, # 线性模型无此指标,填NA `Model 2` = round(as.numeric(mcfadden_val), 3) ) # 生成表格并插入自定义行 modelsummary(list(lm_model, glm_model), add_rows = custom_row)
内容的提问来源于stack exchange,提问作者eve1234
相关产品推荐
相关产品推荐

