自举置信区间

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

我最近在 Julia Evans 的博客上看到了一篇有趣的文章,展示了如何通过使用 引导程序 对我们实际拥有的 少量数据点进行采样来生成更大的数据点集 。 Julia 的示例都是用 Python 编写的,所以我认为将它们翻译成 R 会是一个有趣的练习。

我们正在进行引导程序以模拟航班未出现的次数,这样我们就可以计算出我们可以超额预订飞机的座位数。

我们从一小部分未登机的样本开始,并假设有 5% 的时间可以将某人赶下航班。让我们算出有多少人适合我们的初始样本:


 > data = c(0, 1, 3, 2, 8, 2, 3, 4)
> quantile(data, 0.05)
  5% 
0.35

0.35人!这不是一个特别有用的结果,所以我们将对初始数据集重新采样 10,000 次,每次取 5%ile,看看我们是否想出更好的方法:

我们将使用带有替换的 示例 函数来生成我们的重采样:


 > data = c(0, 1, 3, 2, 8, 2, 3, 4)
> quantile(data, 0.05)
  5% 
0.35

现在让我们编写一个函数来多次执行此操作:


 > data = c(0, 1, 3, 2, 8, 2, 3, 4)
> quantile(data, 0.05)
  5% 
0.35


所以这个可视化告诉我们,我们可以超卖 0-2 人,但我们不知道确切的数字。

让我们尝试相同的练习,但使用包含 1,000 个值的更大初始数据集,而不是仅仅 8 个。首先,我们将生成一个分布(均值为 5,标准差为 2)并将其可视化:


 > data = c(0, 1, 3, 2, 8, 2, 3, 4)
> quantile(data, 0.05)
  5% 
0.35


我们的分布似乎在 4 和 5 附近有更多的值,而 Python 版本的分布更平坦——我不确定为什么会这样,如果你有任何想法请告诉我。无论如何,让我们检查一下这个数据集的 5%ile:


 > data = c(0, 1, 3, 2, 8, 2, 3, 4)
> quantile(data, 0.05)
  5% 
0.35

凉爽的!现在至少我们有一个整数值而不是我们之前得到的 0.35。最后,让我们对我们的新发行版进行一些引导,看看我们得出了什么 5%ile:


 > data = c(0, 1, 3, 2, 8, 2, 3, 4)
> quantile(data, 0.05)
  5% 
0.35


“2”是迄今为止最受欢迎的 5%ile,尽管它似乎比 Julia 的 Python 版本更倾向于该值,我想这是因为我们似乎从稍微不同的分布中采样。

相关文章