今天,饼干打算用 Excel
来模拟一个比较经典的问题
三门问题(Monty Hall Problem)
首先,我们排除一切干扰信息
重新确认一下已知的信息:
有三扇门
-
一扇门后是汽车,其余两扇门后是山羊
-
你可以任意挑选一扇门
-
饼干打开了另一扇门,门后是山羊
现在饼干再给你一次选门的机会
-
你会坚持一开始的选择?
-
还是觉得改变可能带来更多的机会?
如果饼干只是 随便 选的门,
你又会如何决策?
今天
饼干将通过 蒙特卡洛模拟
回答这个问题
先简单介绍一下
蒙特卡洛(Monte Carlo)
蒙特卡洛的核心是 大数定律 和 中心极限定理
对于这 2 个定理,我们只需要知道
在一定条件下
大量独立随机变量的平均数是以正态分布为极限的
即通过大量的随机模拟,可以用频率的 平均值 来估计 概率
说人话就是
扔 100 次硬币,看看正面的频率到底是不是 50%
如果担心 100 次可能会有波动,那就一万次?甚至百万次?
我们要做的是
-
构造过程(使用 Excel 模拟过程)
-
随机抽样(使用 VBA 进行重复采样)
-
估计变量(用选中汽车的频率估计概率)
构造过程
三门问题的 Excel 模拟相对还是比较简单的
首先,一共只有三扇门
-
实际车子在一扇门后
-
你一开始会选一扇门
也就是说,初始状态有 3 × 3 共 9 种
那么饼干只能在剩下的两扇门里选一扇打开
由于实际饼干打开的门后是山羊
因此,可以构建如下的 开门可能性矩阵

有了可能性矩阵后,我们就可以
构造概率模型
在 Excel 中一般通过构造包含随机数的公式实现
涉及返回随机数的函数有 2 个
-
连续分布
RAND:返回大于等于 0 且小于 1 的均匀分布随机实数
-
离散分布
RANDBETWEEN:返回位于两个指定数之间的一个随机整数
我们希望构造的是如下图的概率模型
每一行代表一次实验
【换】和【不换】这 2 列中:1 代表选中汽车,0 代表没选中

我们来看下具体的公式
-
实际和选择都是随机的离散值
=RANDBETWEEN(1,3)
-
饼干开的门背后是山羊
这里将 Vlookup 的第 3 个参数构造成随机变量
=VLOOKUP([@实际]&[@选择],开门决策,4+RANDBETWEEN(0,1),0)
-
最后判断是否选中汽车
【不换】= ([@实际]=[@选择])*1
【换】= AND([@实际]<>[@选择],[@实际]<>[@开门])*1
*1 是将布尔值转化成数值
随机抽样
由于我们构造好的概率模型只有一行
因此我们只需要
向下拉个 1000 行
就完成了 1000 次抽样
然后比较一下【换】和【不换】的总和就可以知道哪种选择更好了

当然,如果你觉得 1000 行的数据还不够的话
完全可以写几行 VBA 把这个过程重复 100 次、甚至 1000 次

估计变量
这里饼干统计的是
每个【千次实验】中,选中汽车的频数
我们来看一下重复 1000 次【千次实验】的统计结果

模拟数据显示
选择【不换】在
1000 次
实验中平均可以选中汽车
333.4 次
运气好的时候可以选中 402 次,运气不好的话只有288 次
我们再来看下【不换】的频数分布

这个分布形状反过来也可以让我们再复习一下中心极限定理
大量独立随机变量的平均数是以正态分布为极限的
也就是说,通过蒙特卡洛模拟的结论是
【不换】坚持一开始的选择,选中汽车的概率是 1/3
【换】尝试改变换一扇门,选中汽车的概率是 2/3
But Why?
相信到这里肯定有人会说
饼干已经开掉了一扇门
那不就相当于只有两扇门,一扇门后有车
任意选一扇门,门后有车的概率应该是 1/2
所以,换不换没有区别
对于这个观点,饼干的看法是这样的
我们所做的决策是基于对信息的利用
而三门问题的关键在于
饼干打开了一扇背后是山羊的门
这个信息有没有影响你的决策!
如果你觉得这个信息是没有意义的
得出的结论自然是
换不换一样
而如果你仔细揣摩
发现这个看似不影响结果的信息背后的意义
3 扇门比起 2 扇门降低了你在第一次就做出正确选择的概率
是的
我们利用了 更多的 信息
做出 更贴近事实的 决策
这或许也是数据分析的魅力所在吧~
最后
如果饼干只是 随便 选的门,你又会如何决策?
这个问题就留给大家留言和我讨论了
关注饼干,少加点班
移步公众号 CookieData 获取 三门问题模拟