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

如何从tidy()和do()循环的线性模型中提取调整R平方值

按物种分组提取线性模型的调整R平方值

你的代码用tidy()提取的是模型的系数细节,而调整R平方属于模型的整体拟合统计量,需要用broom包的glance()函数来获取。以下是两种可行的实现方式:

基于原有do()函数的修改

直接将tidy()替换为glance(),即可获取包含调整R平方在内的模型汇总统计:

library(tidyverse)
library(broom)

iris %>% 
  group_by(Species) %>% 
  do(glance(lm(Sepal.Length ~ Sepal.Width, .))) %>% 
  select(Species, adj.r.squared)

运行后会返回每个物种对应的调整R平方值,select()用于筛选出你需要的列。

更现代的tidyverse写法(推荐)

新版tidyverse更推荐用nest()+map()的组合来处理分组模型,代码可读性更好:

library(tidyverse)
library(broom)

iris %>% 
  nest(data = -Species) %>%  # 按Species分组嵌套数据
  mutate(
    model = map(data, ~lm(Sepal.Length ~ Sepal.Width, data = .x)),  # 每组拟合线性模型
    model_stats = map(model, glance)  # 提取模型统计量
  ) %>% 
  unnest(model_stats) %>%  # 展开统计量数据框
  select(Species, adj.r.squared)  # 保留需要的列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:25:16