如何将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
相关产品推荐
相关产品推荐

