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

如何将summary.gam与summary.betareg结果从列表导出至CSV?

解决方案

一、GAM模型处理:用broom.mgcv替代基础broom

基础broom对summary.gam对象支持不足,专门的broom.mgcv包可以完美提取GAM模型的平滑项、参数项等所有摘要信息:

  • 先安装并加载依赖包:
install.packages("broom.mgcv")
library(mgcv)
library(purrr)
library(broom.mgcv)
  • 修改你的GAM模型代码,直接对gam模型对象提取结果(无需先调用summary()):
data(mtcars)
vars <- names(mtcars[c(2:11)])

# 批量拟合GAM模型
models <- lapply(vars, function(x) {
  gam(substitute(i ~ s(mpg), list(i = as.name(x))), 
      method = 'REML',
      data = mtcars)
})
names(models) <- vars

# 提取并合并所有模型的摘要结果
gam_results <- purrr::map_df(models, broom.mgcv::tidy, .id = "response_var")

# 导出为CSV
write.csv(gam_results, "results/gam_summary.csv", row.names = FALSE)

这段代码会自动把每个响应变量对应的GAM模型结果(包括平滑项的统计量:估计值、标准误、p值等)整理成统一的数据框,直接导出即可。

二、Beta回归模型处理:两种可行方式

针对betareg模型,你可以选择直接用broom处理模型对象,或者手动提取摘要中的核心信息:

方式1:用broom直接处理beta回归模型

library(betareg)
library(purrr)
library(broom)

# Beta回归要求响应变量在(0,1)区间,先做归一化
mtcars$resp_norm <- mtcars$disp / max(mtcars$disp)
vars_beta <- names(mtcars[c(2,3,4,5,6,7,8,9,10,11)]) # 排除已处理的响应变量

# 批量拟合Beta回归模型
beta_models <- lapply(vars_beta, function(x) {
  betareg(substitute(resp_norm ~ i, list(i = as.name(x))), 
          data = mtcars)
})
names(beta_models) <- vars_beta

# 提取合并结果
beta_results <- purrr::map_df(beta_models, broom::tidy, .id = "predictor_var")

# 导出
write.csv(beta_results, "results/beta_summary.csv", row.names = FALSE)

方式2:手动提取summary.betareg的系数表

如果需要获取精度参数等额外信息,可以直接从模型摘要中提取系数表:

# 先获取所有模型的摘要
beta_summaries <- lapply(beta_models, summary)

# 批量提取并整理系数表
beta_results_manual <- purrr::map_df(beta_summaries, function(summ) {
  coef_df <- as.data.frame(summ$coefficients)
  coef_df$term <- rownames(coef_df)
  # 标记系数属于均值部分还是精度部分
  coef_df$component <- ifelse(grepl("precision", rownames(coef_df)), "precision", "mean")
  rownames(coef_df) <- NULL
  coef_df
}, .id = "predictor_var")

write.csv(beta_results_manual, "results/beta_summary_manual.csv", row.names = FALSE)

三、通用提示

  • Beta回归必须保证响应变量取值在**(0,1)**区间内,务必先做归一化或转换
  • purrr::map_df的.id参数可以帮你标记每条结果对应的变量,避免混淆
  • 导出CSV时建议设置row.names = FALSE,避免生成多余的行号列

内容的提问来源于stack exchange,提问作者DaniH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:30:56