如何计算非正态分布样本中平均值的置信区间?

机器算法验证 置信区间 非参数 引导程序 描述性统计 偏度
2022-02-02 19:26:42

如何计算非正态分布样本中平均值的置信区间?

我知道这里常用引导方法,但我对其他选项持开放态度。虽然我正在寻找一个非参数选项,但如果有人可以说服我参数解决方案是有效的,那很好。样本量 > 400。

如果有人可以在 R 中提供样本,将不胜感激。

3个回答

首先,我会检查平均值是否适合手头的任务。如果您正在寻找偏态分布的“典型/或中心值”,则平均值可能会指向一个相当不具代表性的值。考虑对数正态分布:

x <- rlnorm(1000)
plot(density(x), xlim=c(0, 10))
abline(v=mean(x), col="red")
abline(v=mean(x, tr=.20), col="darkgreen")
abline(v=median(x), col="blue")

对数正态分布的均值(红色)、20% 修剪均值(绿色)和中值(蓝色)

平均值(红线)与大部分数据相距甚远。20% 的修剪平均值(绿色)和中位数(蓝色)更接近“典型”值。

结果取决于“非正态”分布的类型(实际数据的直方图会有所帮助)。如果它没有歪斜,但尾巴很重,那么您的 CI 将非常宽。

无论如何,我认为引导确实是一个好方法,因为它也可以给你不对称的 CI。R软件包simpleboot是一个好的开始:

library(simpleboot)
# 20% trimmed mean bootstrap
b1 <- one.boot(x, mean, R=2000, tr=.2)
boot.ci(b1, type=c("perc", "bca"))

...给你以下结果:

# The bootstrap trimmed mean:
> b1$t0
[1] 1.144648

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 2000 bootstrap replicates
Intervals : 
Level     Percentile            BCa          
95%   ( 1.062,  1.228 )   ( 1.065,  1.229 )  
Calculations and Intervals on Original Scale

如果您愿意接受半参数解决方案,这里有一个:Johnson, N. (1978) Modified t Tests and Confidence Intervals for Asymmetrical Populations, JASA置信区间的中心偏移κ^/(6s2n), 在哪里κ^是人口三阶矩的估计,宽度保持不变。假设置信区间的宽度为O(n1/2), 均值的修正是O(n1),你需要有一个非常大的偏度(顺序n1/2>20) 重要的是n>400. bootstrap 应该给你一个渐近等效的间隔,但你也会将模拟噪声添加到图片中。(根据一般的Bootstrap 和 Edgeworth 扩展(Hall 1995)理论,bootstrap CI 会自动校正相同的一阶项。)就我所记得的模拟证据而言,bootstrap CI 比基于解析的 CI 稍胖一些。表达,虽然。

拥有均值校正的分析形式将使您立即了解在均值估计问题中是否真的需要考虑偏度。在某种程度上,这是一个判断情况有多糟糕的诊断工具。在 Felix 给出的对数正态分布示例中,总体分布的归一化偏度为(exp(1)+2)exp(1)1,即kappa = (exp(1)+2)*sqrt( exp(1) - 1) = 6.184877CI 的宽度(使用总体分布的标准差,s = sqrt( (exp(1)-1)*exp(1) ) = 2.161197)是2*s*qnorm(0.975)/sqrt(n) = 0.2678999,而均值的校正是kappa*s/(6*n) = 0.00222779(迁移到分子的标准差,因为kappa是无标度偏度,而约翰逊的公式处理未标度的人口三分之一中心矩),即约为 CI 宽度的 1/100。你应该打扰吗?我会说,不。

尝试对数正态分布,计算:

  1. 数据的对数;
  2. (1) 的均值和标准差
  3. 对应于 (2) 的置信区间
  4. (3) 的指数

您最终会得到一个围绕期望值的不对称置信区间(这不是原始数据的平均值)。