You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:23:03