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

tidymodels分组自举回归如何同时用int_pctl算CI和glance取摘要

解决思路

你原有的两段代码重复执行了自举采样和模型拟合步骤,只需将公共的采样、建模流程抽出来执行一次,再分别提取置信区间和模型摘要统计量即可,既避免重复计算,也能保证两次计算使用完全相同的自举样本,结果一致性更高。

完整实现代码
library(tidyverse)
library(tidymodels)

set.seed(27)

# 示例数据
dat <- 
  structure(list(site = c("mb", "mb", "mb", "mb", "mb", "mb", "mb", 
  "mb", "sp", "sp", "sp", "sp", "sp", "sp", "sp", "sp"), year = c(2015, 
  2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 
  2015, 2015, 2015, 2015), yday = c(15, 15, 35, 35, 48, 48, 69, 
  69, 15, 15, 37, 37, 49, 49, 69, 69), samp_depth_cat2 = structure(c(1L, 
  1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Mid-2", 
  "Bottom"), class = "factor"), analyte = c("NO3", "NO3", "NO3", 
  "NO3", "NO3", "NO3", "NO3", "NO3", "NH4", "NH4", "NH4", "NH4", 
  "NH4", "NH4", "NH4", "NH4"), conc = c(44.8171069465267, 44.7775358035268, 
  33.3678662097523, 33.0710828871279, 25.8427604055115, 26.9309658742058, 
  23.7585524380667, 17.5240386949382, 8.35832733633183, 9.29280745341615, 
  10.0797380595417, 10.2322058970515, 13.7930668951239, 15.6226805882773, 
  25.3003042764332, 16.8723637466981)), row.names = c(NA, -16L), class = c("tbl_df", 
  "tbl", "data.frame"))

# 第一步:仅执行一次自举采样与建模,保存所有中间结果
lm_boot_full <-
  dat %>% 
  group_by(site, year, samp_depth_cat2, analyte) %>% 
  group_modify(
    ~ bootstraps(., times = 100, apparent = TRUE) %>%
      mutate(
        model = map(splits, ~ lm(conc ~ yday, data = .)),
        coefs = map(model, tidy),
        glanced = map(model, glance)
      )
  )

# 第二步:从已有的模型结果中提取系数置信区间
lm_boot_CI <- lm_boot_full %>%
  group_modify(~ int_pctl(., coefs))

# 第三步:从已有的模型结果中提取回归摘要统计量
lm_boot_R2 <- lm_boot_full %>%
  unnest(glanced)
可选:合并分组R²统计量与置信区间到同一张表

如果需要把每个分组的R²汇总结果和系数置信区间整合在一张表,可以执行以下代码:

# 汇总每个分组的R²统计量
r2_summary <- lm_boot_R2 %>%
  group_by(site, year, samp_depth_cat2, analyte) %>%
  summarise(
    r2_mean = mean(r.squared),
    r2_sd = sd(r.squared),
    .groups = "drop"
  )

# 关联置信区间与R²汇总结果
ci_with_r2 <- lm_boot_CI %>%
  left_join(r2_summary, by = c("site", "year", "samp_depth_cat2", "analyte"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:48:03