python计算方差的置信区间_如何在Python中使用numpy.percentile()计算置信区间

一个作业问题要求我计算平均值的置信区间。当我使用传统方法并使用numpy.percentile()时,我得到了不同的答案。

我认为我可能会误解如何或何时使用np.percentile()。我的两个问题是:1.我是否使用错误(输入错误等)?2.我在错误的位置使用它吗?应该用于引导CI,而不是常规方法?

我已经通过传统公式和np.percentile()计算了CI

price=np.random.normal(11427,5845,30)# u = mean of orginal vector# s = std of original vectorprint(price)

[14209.99205723 7793.06283131 10403.87407888 10910.59681669 14427.87437741 4426.8122023 13890.22030853 5652.39284669 22436.9686157 9591.28194843 15543.24262609 11951.15170839 16242.64433138 3673.40741792 18962.90840397 11320.92073514 12984.61905211 8716.97883291 15539.80873528 19324.24734807 12507.9268783 11226.36772026 8869.27092532 9117.52393498 11786.21064418 11273.61893921 17093.20022578 10163.75037277 13962.10004709 17094.70579814]

x_bar=np.mean(price)# mean of vectors=np.std(price)# std of vectorn=len(price)# number of obsz=1.96# for a 95% CIlower=x_bar-(z*(s/math.sqrt(n)))upper=x_bar+(z*(s/math.sqrt(n)))med=np.median(price)print(lower,med,upper)

10838.458908888499 11868.68117628698 13901.386475143861

np.percentile(price,[2.5,50,97.5])

[4219.6258866 11868.68117629 20180.24569667]

ss.scoreatpercentile(price,[2.5,50,97.5])

[4219.6258866 11868.68117629 20180.24569667]

我希望低,中和高等于np.percentile()的输出。

尽管中位数是相同的-上限和下限彼此之间相差很大。

此外,scipy.stats.percentile提供的输出与numpy.percentile相同。

有什么想法吗?

谢谢!

编辑以显示价格向量。

解决方案

置信区间和百分位数不是一回事。这两件事的公式非常不同

您拥有的样本数量将影响您的置信区间,但不会改变(很大)百分位数。

例如

price=np.random.normal(0,1,10000)print(np.percentile(price,[2.5,50,97.5])

[-1.976817780.018089081.93659551]

price=np.random.normal(0,1,100000000)print(np.percentile(price,[2.5,50,97.5]))

几乎相同:

[-1.960126439.82108813e-051.96030460]

但是运行CI计算代码后,如果大量增加样本数,则置信区间将会缩小-因为您现在有95%的信心认为分布的平均值在较小范围内。

使用相同的2个价格数组(平均值= 0,标准差= 1),并带有10个样本和10,000个样本,您的结果是:

-0.50516888197590960.175043242248228340.744716862363091# 10 samples-0.02645090158517636-0.0067596164930226260.012353106820212557# 10000 samples

如您所见,带有更多样本的CI很小(正如您所期望的,考虑到CI的公式!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值