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

R语言分组计算均值与可信区间 分位数重复均值如何修复

问题原因

你的代码计算逻辑存在顺序错误:

  • dplyr的summarise()在分组操作下,会按分组把多行原始数据聚合为单一行的汇总值。你在同一次汇总中先计算了组级别的单值统计量means = mean(values),此时每个分组内means仅对应1个标量结果,再对这个单值计算2.5%、97.5%分位数,输出结果必然和该单值完全相等,这就是上下界和均值完全一致的直接原因。
  • 额外逻辑偏差:你当前写的分位数计算是针对聚合后的均值标量,完全没有基于原始观测值values计算,统计逻辑本身不成立。
修复方法

根据你实际需要的区间类型,选择对应代码即可:

场景1:需要计算每组原始values的分位数区间

如果你的需求就是统计每组原始观测值的均值、以及原始值的2.5%和97.5%分位数作为边界,只需要把分位数计算的输入对象从聚合后的means替换为原始列values即可:

meansCIs <- merged %>%
  group_by(AgeGroup, ind) %>%
  summarise(
    means = mean(values),
    lower_bound = quantile(values, 0.025),
    upper_bound = quantile(values, 0.975),
    .groups = "keep"
  )

场景2:需要计算组均值的95%统计可信区间

如果你要的是统计推断层面均值的95%可信区间(而非原始值的分位数范围),不能直接用原始值分位数计算,需要基于样本标准误和t分布近似计算:

meansCIs <- merged %>%
  group_by(AgeGroup, ind) %>%
  summarise(
    sample_n = n(),
    means = mean(values),
    se = sd(values) / sqrt(sample_n),
    lower_bound = means - qt(0.975, df = sample_n - 1) * se,
    upper_bound = means + qt(0.975, df = sample_n - 1) * se,
    .groups = "keep"
  ) %>%
  select(-sample_n, -se) # 可删除中间计算用的辅助列

补充说明:如果你需要用bootstrap法计算均值的可信区间,需要先对每个分组做有放回重采样,生成均值的抽样分布后,再对重采样得到的均值向量计算分位数,无法在单次原始聚合步骤中直接完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:03:28