求概率
几个世纪以来,关于概率是什么一直存在相当的哲学争论。有些人认为概率是相对频率;另一些人认为它们是长期相对频率;还有一些人认为概率是其个人不确定性的主观度量。
在本课程中,大多数概率将是相对频率,尽管许多概率也有主观解释。无论如何,概率的计算和组合方式在不同的解释中是一致的。
按照惯例,概率是介于 0 和 1 之间的数字,或者等价地,介于 0% 和 100% 之间。不可能事件的概率为 0。必然事件的概率为 1。
数学是精确求概率的主要工具,尽管计算机对此也很有用。模拟可以以高概率提供极好的近似。在本节中,我们将非正式地发展支配概率计算的几个简单规则。在后续章节中,我们将回到模拟来近似复杂事件的概率。
我们将使用标准符号 $P(\mbox{事件})$ 来表示“事件”发生的概率,并且我们将互换使用“机会”和“概率”这两个词。
from datascience import *
path_data = '../../../assets/data/'
import numpy as np
import matplotlib.pyplot as plots
plots.style.use('fivethirtyeight')
%matplotlib inline
当事件不发生
如果事件发生的机会是 40%,那么它不发生的机会是 60%。这种自然的计算可以一般性地描述如下:
$$ P(\mbox{事件不发生}) ~=~ 1 - P(\mbox{事件发生}) $$
当所有结果等可能
如果你在掷一颗普通的骰子,一个自然的假设是所有六个面等可能。在这个假设下,一次掷骰子的概率可以很容易地计算为比率。例如,骰子显示偶数的概率是
$$ \frac{\mbox{偶数的面数}}{\mbox{所有面数}} ~=~ \frac{#{2, 4, 6}}{#{1, 2, 3, 4, 5, 6}} ~=~ \frac{3}{6} $$
类似地,
$$ P(\mbox{骰子显示 3 的倍数}) ~=~ \frac{#{3, 6}}{#{1, 2, 3, 4, 5, 6}} ~=~ \frac{2}{6} $$
一般来说,如果所有结果等可能,
$$ P(\mbox{事件发生}) ~=~ \frac{#{\mbox{导致事件发生的结果}}} {#{\mbox{所有结果}}} $$
并非所有随机现象都像掷一次骰子那么简单。下面发展的两条主要概率规则使数学家即使在复杂情况下也能找到概率。
当两个事件必须同时发生
假设你有一个包含三张票的盒子:一张红色,一张蓝色,一张绿色。假设你随机不放回地抽取两张票;也就是说,你洗混三张票,抽取一张,再洗混剩余的两张,然后从中抽取另一张。你首先抽到绿票,然后抽到红票的概率是多少?
有六种可能的颜色对:RB、BR、RG、GR、BG、GB(我们将每种颜色的名称缩写为其首字母)。根据抽样方案,所有这些都等可能,只有其中一种(GR)使事件发生。因此
$$ P(\mbox{先绿后红}) ~=~ \frac{#{\mbox{GR}}}{#{\mbox{RB, BR, RG, GR, BG, GB}}} ~=~ \frac{1}{6} $$
但还有另一种得到答案的方法,即分两阶段思考事件。首先,必须抽到绿票。这个机会是 $1/3$,这意味着在大约 $1/3$ 的重复实验中将首先抽到绿票。但这并没有完成事件。“在首先抽到绿票的那 $1/3$ 重复中”,接下来必须抽到红票。这大约发生在那 $1/2$ 的重复中,因此:
$$ P(\mbox{先绿后红}) ~=~ \frac{1}{2} \times \frac{1}{3} ~=~ \frac{1}{6} $$
这个计算通常“按时间顺序”写为:
$$ P(\mbox{先绿后红}) ~=~ \frac{1}{3} ~\times~ \frac{1}{2} ~=~ \frac{1}{6} $$
因子 $1/2$ 被称为“在绿票先出现的情况下,红票第二个出现的条件概率”。
一般来说,我们有“乘法规则”:
$$ P(\mbox{两个事件同时发生}) ~=~ P(\mbox{一个事件发生}) \times P(\mbox{另一个事件在第一个事件发生的条件下发生}) $$
因此,当有两个条件——一个事件必须发生,再加上另一个——概率是“分数的分数”,它比两个组成分数中的任何一个都要小。需要满足的条件越多,它们全部被满足的可能性就越小。
当一个事件可以通过两种不同方式发生
假设我们想要的是两张票中一张是绿色另一张是红色的概率。这个事件没有指定颜色出现的顺序。因此它们可以以任意顺序出现。
解决这类问题的一个好方法是“划分”事件,使其恰好通过几种不同方式之一发生。“一张绿色一张红色”的自然划分是:GR、RG。
根据上面的计算,GR 和 RG 的概率各为 $1/6$。因此你可以通过将它们相加来计算“一张绿色一张红色”的概率。
$$ P(\mbox{一张绿色一张红色}) ~=~ P(\mbox{GR}) + P(\mbox{RG}) ~=~ \frac{1}{6} + \frac{1}{6} ~=~ \frac{2}{6} $$
一般来说,我们有“加法规则”:
$$ P(\mbox{事件发生}) ~=~ P(\mbox{第一种发生方式}) + P(\mbox{第二种发生方式}) ~~~ \mbox{} $$
条件是事件恰好通过两种方式之一发生。
因此,当一个事件可以通过两种不同方式之一发生时,其概率是概率之和,因此比任何一种单独方式的概率都要大。
乘法规则自然扩展到两个以上事件,我们将在下面看到。加法规则也自然扩展到可以通过几种不同方式之一发生的事件。
我们以结合所有这些规则的示例来结束本节。
至少一次成功
数据科学家经常处理来自总体的随机样本。有时会出现的一个问题是关于总体中某个特定个体被选入样本的可能性。为了计算这个概率,该个体被称为“成功”,问题是要找到样本包含成功的概率。
为了了解这样的概率如何计算,我们从更简单的场景开始:抛硬币两次。
如果你抛硬币两次,有四种等可能的结果:HH、HT、TH 和 TT。我们将“正面”缩写为 H,“反面”缩写为 T。因此两次抛掷中至少得到一次正面的概率是 3/4。
得到这个答案的另一种方法是计算你“没有”得到至少一次正面的情况。那就是两次抛掷都是反面。因此
$$ P(\mbox{两次抛掷至少一次正面}) ~=~ 1 - P(\mbox{两次都是反面}) ~=~ 1 - \frac{1}{4} ~=~ \frac{3}{4} $$
同时注意
$$ P(\mbox{两次都是反面}) ~=~ \frac{1}{4} ~=~ \frac{1}{2} \cdot \frac{1}{2} ~=~ \left(\frac{1}{2}\right)^2 $$
由乘法规则可得。
这两个观察使我们能够找到任意给定抛掷次数中至少得到一次正面的概率。例如,
$$ P(\mbox{17 次抛掷至少一次正面}) ~=~ 1 - P(\mbox{全部 17 次都是反面}) ~=~ 1 - \left(\frac{1}{2}\right)^{17} $$
现在我们能够找到掷骰子中六点面至少出现一次的概率。
例如,
$$ P(\mbox{单次投掷不是 6}) ~=~ 1 - P(6) ~=~ \frac{5}{6} $$
因此,
$$ P(\mbox{两次投掷至少一次 6}) ~=~ 1 - P(\mbox{两次都不是 6}) ~=~ 1 - \left(\frac{5}{6}\right)^2 $$
且
$$ P(\mbox{17 次投掷至少一次 6}) ~=~ 1 - \left(\frac{5}{6}\right)^{17} $$
下表显示了随着投掷次数从 1 增加到 50 的这些概率。
rolls = np.arange(1, 51, 1)
results = Table().with_columns(
'Rolls', rolls,
'Chance of at least one 6', 1 - (5/6)**rolls
)
results
Rolls | Chance of at least one 6
1 | 0.166667
2 | 0.305556
3 | 0.421296
4 | 0.517747
5 | 0.598122
6 | 0.665102
7 | 0.720918
8 | 0.767432
9 | 0.806193
10 | 0.838494
... (40 rows omitted)随着投掷次数的增加,出现至少一次 6 的概率迅速上升。
results.scatter('Rolls')
A scatterplot with 'Rolls' on the x-axis and 'Chance of at least one 6' on the y-axis. The data points start out increasing very fast from below 0.2 to just above 0.8 around 10 rolls. By 20 rolls, the chance is quite close to 1, and the data levels off at 1.在 50 次投掷中,你几乎肯定至少得到一次 6。
results.where('Rolls', are.equal_to(50))
Rolls | Chance of at least one 6
50 | 0.99989像这样的计算可用于找出特定个体在随机样本中被选中的概率。确切的计算将取决于抽样方案。但我们上面观察到的通常可以推广:增加随机样本的大小会增加个体被选中的概率。