存在异常值时如何找到 95% 的置信区间?

机器算法验证 置信区间 估计 统计模型
2022-04-06 09:03:07

我知道如何找到正态分布的 95% 置信区间。但是当有异常值时如何找到它

问题:数据集中显示了 20 名 75 岁或以上男性的医疗保健费用,以千美元为单位。计算这些人的平均医疗保健费用的 95% 置信区间。

数据集 = [8.5, 8.0, 16.0, 12.0, 2.5, 515.0, 5.0, 15.0, 13.0, 2.0, 950.0, 15.0, 9.0, 6.0, 12.0, 5.5, 19.5, 7.5, 37.5, 12.5]

2个回答

Bootstrap 可能是执行此操作的一种方法。在蟒蛇...

from sklearn.utils import resample
import numpy as np


x = np.array([8.5, 8.0, 16.0, 12.0, 2.5, 515.0, 5.0, 15.0, 13.0, 2.0, 950.0, 15.0, 9.0, 6.0, 12.0, 5.5, 19.5, 7.5, 37.5, 12.5])

xb = np.array([ resample(x).mean() for j in range(10000)])

low, high = np.quantile(xb, [0.025, 0.975])

这产生 (9.95 , 200.72) 的引导 CI。

但是,我认为有一些因素推动了更高的成本。因为您的数据来自老年患者,我想有些患者比其他患者有更多的合并症,这可能会导致并发症并因此产生更高的费用。在没有额外信息或对数据生成过程的强烈假设的情况下,我认为这将是你能做的最好的。

R 的快速初步结果:

x=c(8.5, 8.0, 16.0, 12.0, 2.5, 515.0, 5.0, 15.0, 13.0, 2.0, 
    950.0, 15.0, 9.0, 6.0, 12.0, 5.5, 19.5, 7.5, 37.5, 12.5)

summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.000   7.125  12.000  83.575  15.250 950.000 

(1) 均值的 t 区间。假设正常数据,这在这里似乎是一个糟糕的假设。

t.test(x)
...
95 percent confidence interval:
  -25.47337 192.62337

(2) 人口中位数的非参数 Wilcoxon CI。由于您的数据存在关联,可能会稍微不准确。

wilcox.test(x, conf.int=T)
...
95 percent confidence interval:
  8.500058 21.750047

(3) 总体均值的 95% 非参数引导分位数 CI:(10,200).

set.seed(2020)
a.re=replicate(10^4, mean(sample(x, rep=T)))
quantile(a.re, c(.025,.975))
    2.5%    97.5% 
  9.9750 200.5269 

酌情留下评论/问题。以后再说。