如何使用Bootstrap方法计算95%置信区间

时间:2016-11-08 15:57:53

标签: python statistics

我正在尝试使用python中的bootstrap方法计算平均值的置信区间。假设我有一个包含100个条目的向量a,我的目标是使用bootstrap计算这100个值的平均值及其95%置信区间。到目前为止,我已经设法使用np.random.choice函数从我的向量重新采样1000次。然后对于具有100个条目的每个引导向量,我计算平均值。所以现在我有1000个bootstrap平均值和来自我的初始向量的单个样本均值,但我不知道如何从这里开始。我如何使用这些平均值来找到初始向量的平均值的置信区间?我在python中比较新,这是我第一次遇到bootstrap的方法,所以任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:5)

您可以对1000个数组的数组进行排序,并使用第50个和第950个元素作为90%的bootstrap置信区间。

你的1000套方法基本上是均值估计量分布的样本(均值的抽样分布)。因此,您可以对来自您可以在此处执行的分发的样本执行任何操作。

答案 1 :(得分:3)

我有一个简单的统计解决方案: 置信区间基于标准误差。 您的情况下的标准错误是1000引导装置的标准偏差。假设您的参数(均值)的采样分布的正态分布(应该由中心极限定理的属性保证),只需将所需置信区间的等效z分数乘以标准差即可。因此:

下边界=引导装置的平均值 - 1.96 * std。开发。你的引导意味着

上边界=引导程序的平均值+ 1.96 * std。开发。你的引导意味着

正常分布中95%的病例与平均值的标准偏差在1.96之间

希望这会有所帮助

答案 2 :(得分:0)

首先,我建议您更深入地了解自举方法及其用法,主要思想是处理数据缺乏的情况,并希望重现更多内容。

其次,关于置信区间,您可以使用威尔逊分数间隔,旨在帮助您对二项式模型进行排名。 I found this Ipython notebook解释您的要求

威尔逊间隔的一个简短例子

import math


def ci(positive, n, z):
    # z = 1.96
    phat = positive / n

    return (phat + z * z / (2 * n) - z * math.sqrt((phat * (1 - phat) + z * z / (4 * n)) / n)) / (1 + z * z / n), \
           (phat + z * z / (2 * n) + z * math.sqrt((phat * (1 - phat) + z * z / (4 * n)) / n)) / (1 + z * z / n)


sample_size = [50, 100, 200, 400, 8000]
z_rate_confidence = {'95%': 1.96, '90%': 1.92, '75%': 1.02}
success_rate = [0.6, 0.7, 0.8]
for confidence, z in z_rate_confidence.iteritems():
    print 'confidence: '+confidence + '\n'
    for n in sample_size:
        print 'sample size: ',n
        for s in success_rate:
            print ci(s * n, n, z)