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

ggdist包stat_interval()计算区间与手动置信区间不符的原因

问题核心原因

stat_interval()计算逻辑没有问题,区间偏差来自你传入的分布参数错误:

  • 你当前代码中xdist = dist_normal(mean, SD)传入的是原始样本的标准差SD,对应的是原始观测值的总体分布,函数输出的是这个总体分布的分位数区间,也就是你看到的38.5~40.5范围,代表95%的原始观测值会落在这个区间,和你要的均值置信区间是完全不同的统计概念。
  • 你手动计算的39.38~39.62是样本均值的置信区间,对应的是样本均值的抽样分布,这个分布的标准差是标准误se,不是原始样本的SD。
修正代码

把分布的标准差参数从SD替换为se即可:

library(tidyverse)
library(ggdist)

data <- tibble::tribble(
  ~n,          ~mean,     ~SD,       ~se,
  "Sample 1",    39.5,     0.5,    0.0625,
  "Sample 2",    39.4,     0.6,    0.0750
)

data |>
  ggplot(aes(xdist = dist_normal(mean, se),  y = fct_rev(factor(n)))) +
  stat_interval(.width = c(.5, .8, .9, .95), linewidth = 2) +
  scale_color_viridis_d(option = "C", end = 0.8) +
  labs(x = "指标值", y = "样本组", color = "置信水平")
结果校验

修正后Sample 1的95%区间计算逻辑为mean ± 1.96*se,代入数值得到39.5 ± 1.96*0.0625 ≈ 39.38~39.62,和手动计算结果完全匹配。

补充提示:如果单组样本量较小,需要用t分布替代正态分布计算置信区间,可将分布指定为dist_student_t(df = 组内样本量-1, mu = mean, sigma = se)即可得到更准确的t置信区间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:48:20