我正在尝试实施bootstrap来估算统计信息的CI。这是我写的代码
import numpy as np
import numpy.random as npr
import pylab
def bootstrap(data, num_samples, statistic, alpha):
"""Returns bootstrap estimate of 100.0*(1-alpha) CI for statistic."""
num_samples = len(data)
idx = npr.randint(min(data), max(data), num_samples)
samples = data[idx]
stat = np.sort(statistic(samples, 1))
return (stat[int((alpha/2.0)*num_samples)],
stat[int((1-alpha/2.0)*num_samples)])
X,Y = np.loadtxt('data/ABC.txt',
unpack =True,
delimiter =',',
skiprows = 1)
文本文件包含2列,我需要计算两列的置信区间。 我的第一个想法是将列转换为数组并计算高和低95%CI。我在考虑这样的事情:
data = np.array([X,Y])
low, high = bootstrap(X, len(data), np.mean, 0.05)
low1, high1 = bootstrap(Y, len(data), np.mean, 0.05)
但我不确定这是否是计算置信区间的正确方法。有人可以帮我这个吗?
提前谢谢!
答案 0 :(得分:1)
代替:
idx = npr.randint(min(data), max(data), num_samples)
使用:
idx=np.random.choice(data,size=len(data),replace=True)