我正在尝试使用python中的bootstrap方法来计算平均值的置信区间。假设我有一个包含100个条目的向量a,我的目标是使用bootstrap计算这100个值的平均值及其95%的置信区间。到目前为止,我已经使用np.random.choice函数从我的向量中重新采样了1000次。然后,对于每个包含100个条目的bootstrap向量,我计算了平均值。所以现在我有1000个bootstrap平均值和来自我的初始向量的单个样本平均值,但我不确定如何继续。我如何使用这些平均值来找到初始向量平均值的置信区间?我是python的新手,这是我第一次接触bootstrap方法,所以如果有任何帮助,我将不胜感激。
发布于 2016-11-09 00:02:50
您可以对包含1000个均值的数组进行排序,并使用第50个和第950个元素作为90%的引导置信区间。
你的1000个均值的集合基本上是均值估计器的分布(均值的抽样分布)的样本。所以,你可以对一个发行版本中的样本执行的任何操作,都可以在这里执行。
发布于 2017-04-11 01:05:20
我有一个简单的统计解决方案:置信区间基于标准误差。在你的例子中,标准误差是1000自举均值的标准偏差。假设您的参数(均值)的抽样分布为正态分布,这应该由中心极限定理的性质保证,只需将期望置信区间的等效z分数乘以标准差即可。因此:
下限= bootstrap均值- 1.96 *标准。dev.你的自举意味着
上限= bootstrap均值+ 1.96 *标准。dev.你的自举意味着
正态分布中95%的情况与平均值的标准差在1.96以内
希望这能有所帮助
发布于 2016-11-09 00:13:22
首先,我建议你加深对bootstrapping方法及其用法的理解,主要思想是处理数据缺乏的情况,而你想要复制更多的数据。
其次,关于置信区间,您可以使用威尔逊评分区间,它旨在帮助您对二项式模型进行排名。 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)https://stackoverflow.com/questions/40491298
复制相似问题