数据分析入门经典问题:你两个朋友同一天过生日的概率有多大?

本文介绍了数据分析中的经典问题——生日问题,探讨了至少有两个人同一天生日的概率,并通过数学计算解释了在30个人中这一概率接近70%。文章讨论了概率分析的三种方法,以及如何运用补数原理简化问题解决过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


640?wx_fmt=jpeg


全文共4594字,预计学习时长9分钟


640?wx_fmt=png


假如把N个人分成一组,至少有两个人是同一天生日的概率是多少?


现在来猜一猜:假设这一组有N=30个人。那么有两个人在同一天吃生日蛋糕的概率是多少呢?我们换个说法:你敢不敢用10美元赌里面有两个同月同日生的人?


640?wx_fmt=png


我们会以这个例子收尾,但首先我们需要收集所有的元件(也就是下文标题部分),才能解开生日谜题。


基础中的基础


为了充分“卖弄学问”,我们就略去惹人白眼的引言部分:概率的数值在0和1 之间(如果喜欢的话,你还可以说它在0%到100%之间)。好的。现在你明白为什么“我1000%确定他们会迟到”一类句子会让数据猿急得跳脚。


分析概率的三种方式


人们在分析概率时,常用三种方法:


 基于事件的概率(包括列举事件,计算事件数量)


 基于频率的概率(包括用代表事物在平行宇宙中的收束方式的分布)


 主观概率(包括代表人对于可能发生情况的信念的分布,尤指通过赌注的方式……毕竟不空口说白话可以避免胡说八道)


假如你的统计课老师没有一字一句地强调基础要点,那笔者告诉你,课本将提到以下内容:


基于事件的概率


概率=[分子]/[分母]


前几章会从基于事件的概率分析方法开始。因为通过这种方法人们能很容易地就获取到基本信息,而且或许大部分人(你懂的)已经有这方面的直觉。举个例子:投掷一枚硬币背面朝上的概率是?1/2. 投掷骰子出现6点的概率是多少?1/6.为什么会这样?


分子:所考察的事件可能发生的次数

分母:任何(有关)事件发生的次数


就一枚硬币来说,分母即所有相关事件是正面朝上和背面朝上。这就是分母2的来源。很简单。



细数事件


要想处理基于事件的概率问题,我们首先需要列举出所有的事件并记录事件的数量。这也就是为什么教材很可能会不停地讲如何组合分析,直到你彻底看烦。组合分析能教你掌握计算(针对所求分子和分母的)事件数量的方法。


回顾在作业中出现无数遍的问题,无非是关于:“从100名候选人中选出19名委员有多少种方式?”(17310309456440种)或者是“一组4位数密码共有多少种组合可能?”(1000种)。


在基于事件的世界里,所有的时间群发生的概率相等,因而它们在算法中不受各个层的凌乱的调节器影响。在这个世界里,抛出去的每枚硬币的正反面朝上的概率相当,所有投掷的骰子出现的数字平衡,所有的卡牌都无需重排,所有的人的出生日期的分布均等。


对于生日问题,我们需要快速了解什么是计数:


“AND”要求对(x)计数进行吃乘积。 “OR”要求对(+)计数进行叠加。


你可以去查找证据……或者快速阅读这个例子,满足自己的求知欲:如果有2种素食套餐和3种肉食套餐可供我选择,那么一共有多少种选择呢?答案是2+3=5种可能。假如我确定会选择一个主餐,要从2份甜品之中选择一样,这种情况下会有多少种套餐组合呢?答案是共有5x2=10种。不信吗?你可以找几道菜,把所有组合一一写出来。


随机组合的套餐是素食的概率是多少?


分子= 2x2=4;;分母=10


答案=4/10=40%


超越事件


现在看了三章,但突然教材中有关组合分析的内容全部消失了。当你入门排列组合的时候,它们就销声匿迹了。与此同时,分布变得无处不在。发生了什么?


可以思考如下问题:“你需要至少等待十分钟才能上公交车的概率是多少?”这会是一个很难“数”出来的问题(到底需要多少秒呢?),计数在这里甚至会变得有些棘手,因为你不能用计数的方式分割时间这个连续的介质。更糟的是,有些公交车司机可能会根据公交车的延迟程度,考虑是否停下来抽烟休息。你怎么能列举这种情况?不可能做到的。也许计数在这里根本不适用…..


学习基于频率的概率定义时,将遇到这种说法:“如果上文事件在无限平行宇宙中发生(限定,或者假设这一事件受某些规则制约),有多少公交车会在超过十分钟以后到?”(平行宇宙?!难怪我们数据猿总是眼光清奇)


然后(通常是很久之后),当到达课本贝叶斯数据的主观概率定义章节时,你将可能根据你自己的感受建立分布。看见没有,在你被剥夺列举事件的能力后,剩下的是不是方法是不是很复杂?不过对于生日问题来说,假设所有366个生日出现的概率相同,我们还可以继续数数。


什么,你不喜欢我的假设?想开点吧,所有的统计数据都关乎假设——否则宇宙会陷入一片混乱。如果不喜欢我的假设,觉得我的方案不是你期待的,那就提出一套新的方案来。。我们可以随心所欲提出假设,数据也因此富有创造性。在这里我想不恰当地引用George Box的一句名言:“所有的解决方案都是错误的,但一旦某一个方案符合你一直以来的假设,那它就可能对你有用。”


没有称赞之意


解决生日问题的最后组件是补数,另一方面它也被称为NOT。


P(not A)= 1- P(A)


这个公式读作:“某一事件的概率(由于创造力有限,我们将其称为事件A)不发生的概率等于100%的概率减去该事件发生的概率。”


所以投掷骰子不出现点6的概率是多少呢?


答案是1-1/6=5/6


好的,这就是所有内容。现在准备解决生日问题了!


640?wx_fmt=png

640?wx_fmt=jpeg

生日问题


问题是什么来着?


如果一组有N个人,至少出现两个人是同一天生日的概率是多少?


那就来搭建“乐高块”吧…..


生日问题的分母


一个人有多少种生日的可能呢,366种(上文提过)。


所以N=30时会有多少生日数量吗?


第一个人有366种可能,第二个人也有366种,第三个人也是366种……然后第N个人也是366种情况。把这N个366相乘就是结果了!


分母=366^ N,苍天好大一个数! N为30,结果就是一个76位数,比1000后面再跟24组“000” 的数还大(给事物命名不好玩吗?)


生日问题的分子


准备迎接令你晕头转向的部分吧。这里需要记录所有不同的可能,保证至少有两个人是同一天过生日。所以如果第一个人有366中选项,而第29个人有1个选项,因为需要和第一个人相符,但可能是第二个人或者第十七个人,抑或有三个人的生日在同一天,或者……不,试图将所有的可能选项记在脑海里会变得很乱。


……这就是为什么生日问题会成为一项很有趣的工程。在看诀窍之前需要绞尽脑汁(或者到网上跪求解题攻略。你是这样找到这条博文的吗?很好,我懂你了)。


解决生日问题的窍门


与其列举所有的两个以上的人在同一天生日的可能,不如将问题转化为一个更简单的切入角度:寻找问题对立面!


P(至少有两个人是同一天生日)=1-P(所有人都不是同一天生日)


所以我们只需要求以下问题的答案:“没有任何一个人与另一个人是同一天生日的概率是多少?”也就是说,所有人都不是同一天生日的概率是多少?


“所有人都不是同一天生日”的分母


答案仍然是366^ N。通过对问题的补数进行转化,我们将重点放到分子上,让分母保持不变。


“所有人都不是同一天生日”的分子


这就是神奇之处!


第一个人的生日有366种可能(贪婪的家伙)然而第二个人只有365种可能因为我们要求他们的生日不在同一天。如果第一个人的生日在10月8日,我们就把所有在10月8日过生日的人排除在外。这样每个样本中的成员的可能生日数量将越来越少。


所以366是第一个人的可能数量,而365是第一个人的可能数量而364是第三个人的可能数量……而(367-N)是第N个人的可能数量。


如果N 是30,将各个数相乘,见证奇迹!


366 x 365 x 364 x 363 x 362 x 361 x 360 x 359 x 358 x 357 x 356 x 355 x 354 x 353 x 352 x 351 x 350 x 349 x 348 x 347 x 346 x 345 x 344 x 343 x 342 x 341 x 340 x 339 x 338 x 337 = …


啊,又是一个76位数的数字。


但是,幸运的是,计算机会帮我们处理除法问题,如果操作得当的话。


也许这不是我们需要的


P(所有39个人的生日都不在同一天)=(366 x 365 x 364 x 363 x 362 x 361 x 360 x 359 x 358 x 357 x 356 x 355 x 354 x 353 x 352 x 351 x 350 x 349 x 348 x 347 x 346 x 345 x 344 x 343 x 342 x 341 x 340 x 339 x 338 x 337) / (366 ^ 30)


=0.3


最后,就是我们需要的数值!


P(30个人有人是同一天生日) = 1-0.3 =70%


在30个人的组中,有人是同一天的生日的概率是~70%。


我希望你没有赌10美元说,有人的生日在同一天的概率小于每个人的生日都不在同一天的概率……但是如果你真的赌了,我不反对把钱捐给维基百科。


赌错结果很可能是因为你低估了一组数据不重复的难度——如果你是在门口负责拦截所有与室内的人同一天生日的人的保镖,不久之后想进入房内的人就会失望。


这取决于你有多少个朋友……


我可以用两分钟,通过电脑上的R程序得出每一个N的概率。如果你好奇具体数值是什么(N等于23时概率为50%,N等于55时概率为99%),可以来体验我编写的代码串。可能不太好看,但绝对好用。无需下载,就可以在浏览器上运行。


640?wx_fmt=png


# Initialize settings for N = 1:
probability <- 0
numerator <- 366
denominator <- 366# Loops are terrible in R, let's make one anyways:
for (N in 2:80) {
  numerator <- numerator * (366 + 1 - N)
  denominator <- denominator * 366
  p <- 1 - (numerator / denominator)
  probability <- c(probability, p)
}# Look at the answer to 2 decimal places:
paste("For N =", 1:80, "prob is", round(probability, 2))# Plot!
plot(1:80, probability, xlab = "Group Size", ylab = "P(Shared birthdays)", type = "l", col = "red", main = "The Birthday Solution")


我们学到了什么?


除了一些基本概率知识(处理概率问题的不同方法,分子和分母的计算方法),以及计数原则(加法原则和乘法原则)以外,这篇文章的主旨是,为什么需要以特定顺序解决特定问题。


640?wx_fmt=png


为什么在教材开始,计数是重中之重,而在后续内容中,计数会淡出我们的视野,留下愤愤不平的我们?结果貌似说明每一种方法都对应着一种目的,每一种事件发生的概率相等这一前提对于专业人员来说,过于浅显,无法消化……即使在生日问题上也是如此。当业余人士想象数据分析猿每一天都在干什么的时候,他们首先想到的是数牌和抛硬币,这不是很好玩吗?辟谣跑断腿啊!


生日问题之所以是数据分析入门的经典问题,是因为这个问题上所需的脑力刚刚好:数据分析员需要学习如何转化问题,以使转化后的问题更便于解题。采取简单粗暴的办法将难以计算,因此需要另辟蹊径。如果你选择了数据分析的生活,时刻准备迎接一系列抛掷硬币和转化的问题。


640?wx_fmt=png
推荐阅读专题



640?wx_fmt=jpeg

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货


编译组:夏伊凡、孙梦琪 
相关链接:
https://towardsdatascience.com/using-the-birthday-paradox-to-teach-probability-fundamentals-c08bbcb351d1

如需转载,请后台留言,遵守转载规范


推荐文章阅读


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值