如何计算比率的置信区间?

机器算法验证 置信区间
2022-03-05 20:33:03

考虑一个输出比率的实验Xi介于 0 和 1 之间。如何获得该比率与本文无关。它在此问题的先前版本中进行了详细说明,但在讨论 meta后为了清楚起见将其删除

重复这个实验n次,而n很小(大约 3-10)。Xi假设是独立同分布的。从这些我们通过计算平均值来估计平均值X¯,但是如何计算相应的置信区间[U,V]?

使用标准方法计算置信区间时,V有时大于 1。但是,我的直觉是正确的置信区间......

  1. ... 应在 0 和 1 范围内
  2. ...应该随着增加而变小n
  3. ...大约是使用标准方法计算的顺序
  4. ...通过数学上合理的方法计算

这些不是绝对的要求,但我至少想明白为什么我的直觉是错误的。

基于现有答案的计算

在下文中,将比较现有答案产生的置信区间{Xi}={0.985,0.986,0.935,0.890,0.999}.

标准方法(又名“学校数学”)

X¯=0.959,σ2=0.0204,因此 99% 置信区间为[0.865,1.053]. 这与直觉 1 相矛盾。

裁剪(@soakley 在评论中建议)

只需使用标准方法,然后提供[0.865,1.000]结果很容易做到。但是我们可以这样做吗?我还不相信下边界保持不变(-> 4。)

逻辑回归模型(@Rose Hartman 建议)

转换数据:{4.18,4.25,2.09,2.66,6.90} 导致[0.173,7.87], 将其转换回来导致[0.543,0.999]. 显然,6.90 是转换数据的异常值,而 0.99 不是未转换数据的异常值,导致置信区间非常大。(--> 3.)

二项式比例置信区间(@Tim 建议)

该方法看起来相当不错,但不幸的是它不适合实验。正如@ZahavaKor 所建议的那样,只需将结果组合并将其解释为一项大型重复伯努利实验,结果如下:

985+986+890+935+999=4795在......之外51000总共。将其输入 Adj。沃尔德计算器给出[0.9511,0.9657]. 这似乎不太现实,因为没有一个Xi在那个区间内!(--> 3.)

自举(@soakley 建议)

n=5我们有 3125 种可能的排列。采取30933125=0.99排列的中间均值,我们得到[0.91,0.99]. 看起来还不错尽管我希望有更大的间隔(--> 3.)。然而,它是每个构造永远不会大于[min(Xi),max(Xi)]. 因此,对于一个小样本,它会增长而不是收缩n(--> 2.)。这至少是上面给出的示例所发生的情况。

4个回答

首先,澄清一下,正如您的问题所暗示的那样,您所处理的并不是一个二项式分布(您将其称为伯努利实验)。二项分布是离散的——结果要么成功,要么失败。您的结果是每次运行实验时的比率,而不是一组成功和失败,然后您计算一个汇总比率。因此,计算二项式比例置信区间的方法会丢弃大量信息。然而你是对的,将其视为正态分布是有问题的,因为你可以获得一个超出变量可能范围的 CI。

我建议从逻辑回归的角度考虑这一点。以您的比率变量作为结果且没有预测变量运行逻辑回归模型。截距及其 CI 将为您提供所需的 logits,然后您可以将其转换回比例。您也可以自己进行逻辑转换,计算 CI,然后转换回原始比例。我的 python 很糟糕,但是你可以在 R 中做到这一点:

set.seed(24601)
data <- rbeta(100, 10, 3)
hist(data)

原始数据的直方图

data_logits <- log(data/(1-data)) 
hist(data_logits)

logit 转换数据的直方图

# calculate CI for the transformed data
mean_logits <- mean(data_logits)
sd <- sd(data_logits)
n <- length(data_logits)
crit_t99 <- qt(.995, df = n-1) # for a CI99
ci_lo_logits <- mean_logits - crit_t * sd/sqrt(n)
ci_hi_logits <- mean_logits + crit_t * sd/sqrt(n)

# convert back to ratio
mean <- exp(mean_logits)/(1 + exp(mean_logits))
ci_lo <- exp(ci_lo_logits)/(1 + exp(ci_lo_logits))
ci_hi <- exp(ci_hi_logits)/(1 + exp(ci_hi_logits))

以下是这些数据的 99% CI 的下限和上限:

> ci_lo
[1] 0.7738327
> ci_hi
[1] 0.8207924

您可能想尝试重新采样/引导。让我们看一下您提到的简单案例。

对于 0.99、0.94 和 0.94 这 3 个数据点,您甚至不会进行重采样,因为您只需列出所有 27 种可能的排列,找到每种情况的均值,然后对均值进行排序。

如果您创建列表并获取中间的 25 个观察值,则您有一个25/27=[0.9400, 0.9733] 的 92.6% 置信区间。如果你想增加信心26/27=96.3%,你有两种片面的区间选择。[0.9400, 0.9733] 或 [0.94, 0.99]。

我假设你的n将远大于 3,因此您将通过替换重新采样。假设你这样做了 1000 次。然后找到每种情况的平均值。从这组 1000 个均值中,取中间的 950 个值。该子集的最低和最高值形成 95% 置信区间。

这里的问题:我们如何为置换检验的参数创建置信区间?提供更多细节,包括一些 R 代码。

长期以来,二项式置信区间一直是统计学家争论的主题。您的问题考虑的比率小于 100%,但如果我们使用 100%,它会变得更加成问题。提出问题的一种有见地的方法是:

鉴于太阳在过去 2000 年中每天都在不断升起,那么它明天升起的概率是多少?

有这么高的成功率,我们认为机会非常高,但我们不能 100% 确定(宇宙可能首先爆炸,或者其他什么)。所以,即使你有 100% 的比例,我们也不能让置信区间崩溃p=1.

有许多方法可以计算这些尾巴。我建议您查看Wikipedia以了解数学,或者如果您只是想要答案,请搜索像这样的二项式区间计算器(恰好也有更多关于其背后数学的解释)。

贝叶斯方法:

找到唯一的 beta 分布B是由实验诱导的(以及先验,比如说,杰弗里斯先验),然后选择最小的间隔B的密度集成到您想要的“信心”。可能有多种解决方案,并且根据您的先前情况,平均比率可能不在您的区间内。