自举置信区间

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

我最近在 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 版本更倾向于该值,我想这是因为我们似乎从稍微不同的分布中采样。