使用broom包批量提取多线性回归ANOVA表中固定效应的P值
实现方案
你之前的代码过早对模型执行了summary()操作,丢失了原始lm对象,导致无法再提取ANOVA结果,调整逻辑先保留模型列表,分别提取汇总信息和ANOVA的P值再合并即可,具体操作如下:
步骤1:加载依赖包并批量拟合模型
library(tidyverse) library(broom) # 批量拟合所有回归模型,保留原始lm对象列表 model_list <- DF_FCE3 %>% select(-FE_FCE2, -Trial) %>% # 仅保留待分析的预测变量 map(~ lm(FE_FCE2 ~ Trial + .x, data = DF_FCE3))
步骤2:分别提取回归汇总信息与Trial的ANOVA P值
# 提取glance返回的回归汇总结果,新增predictor列标记对应的x变量 rsme <- model_list %>% map_df(~ glance(.x) %>% round(3), .id = "predictor") # 提取每个模型ANOVA表中Trial对应的Pr(>F)值 trial_pval <- model_list %>% map_df(~ anova(.x) %>% tidy() %>% # 用broom的tidy将ANOVA表转为结构化数据框 filter(term == "Trial") %>% # 筛选Trial对应的行 select(trial_pval = p.value), # 提取P值并重命名 .id = "predictor")
步骤3:合并得到最终汇总表
final_result <- left_join(rsme, trial_pval, by = "predictor")
输出的final_result就包含了你原来rsme的所有汇总统计,同时新增了trial_pval列存储每个回归对应Trial的ANOVA P值。
内容的提问来源于stack exchange,提问作者Totti
相关产品推荐
相关产品推荐

