本节书摘来自异步社区《贝叶斯方法:概率编程与贝叶斯推断》一书中的第1章,第1.3节,作者 【加】Cameron Davidson-Pilon(卡梅隆 戴维森-皮隆),更多章节内容可以访问云栖社区“异步社区”公众号查看
1.3 概率分布
首先定义以下希腊文字的发音:
很好。接下来正式开始讲概率分布。首先快速地回忆一下什么是概率分布。设Z为一个随机变量,那么就存在一个跟Z相关的概率分布函数,给定Z任何取值,它都得到一个相应的概率值。
我们把随机变量分为3种类别。
- Z为离散的。离散随机变量的取值只能是在特定的列表中。像货币、电影收视率、投票数都是离散随机变量。当我们将它与连续型随机变量对比时,这个概念就比较清楚了。
- Z为连续的。连续型随机变量的值可以是任意精确数值。像温度、速度和时间都是连续型变量,因为对于这些数值你可以精确到任何程度。
- Z为混合的。混合型随机变量的值可以为以上两种形式,即结合了以上两种随机变量的形式。
1.3.1 离散情况
如果Z是离散的,那么它的分布为概率质量函数,它度量的是当Z取值为k时的概率,用P(Z=k)表示。可以注意到,概率质量函数完完全全地描述了随机变量Z,即如果知道Z的概率质量方程,那么Z会怎么表现都是可知的。下面介绍一些经常会碰到的概率质量方程,学习它们是十分有必要的。第一个要介绍的概率质量方程十分重要,设Z服从于Poisson分布:
λ被称为此分布的一个参数,它决定了这个分布的形式。对于Poisson分布来说,λ可以为任意正数。随着λ的增大,得到大值的概率会增大;相反地,当λ减小时,得到小值的概率会增大。λ可以被称为Poisson分布的强度。
跟λ可以为任意正数不同,值k可以为任意非负整数,即k必须为0、1、2之类的值。这个是十分重要的,因为如果你要模拟人口分布,你是不可以假设有4.25个或是5.612个人的。
如果一个变量Z存在一个Poisson质量分布,我们可以表示为:
Poisson分布的一个重要性质是:它的期望值等于它的参数。即:
这条性质以后经常会被用到,所以记住它是很有用的。在图1.3.1中,展示了不同λ取值下的概率质量分布。首先值得注意的是,增大λ的取值,k取大值的概率会增加。其次值得注意的是,虽然x轴在15的时候截止,但是分布并没有截止,它可以延伸到任意非负的整数。
figsize(12.5, 4)
import scipy.stats as stats
a = np.arange(16)
poi = stats.poisson
lambda_ = [1.5, 4.25]
colors = ["#348ABD", "#A60628"]
plt.bar(a, poi.pmf(a, lambda_[0]), color=colors[0],
label="$\lambda = %.1f$" % lambda_[0], alpha=0.60,
edgecolor=colors[0], lw="3")
plt.bar(a, poi.pmf(a, lambda_[1]), color=colors[1],
label="$\lambda = %.1f$" % lambda_[1], alpha=0.60,
edgecolor=colors[1], lw="3")
plt.xticks(a + 0.4, a)
plt.legend()
plt.ylabel("Probability of $k$")
plt.xlabel("$k$")
plt.title("Probability mass function of a Poisson random variable,\
differing \$\lambda$ values");
1.3.2 连续情况
对应于离散情况下的概率质量函数,连续情况下概率分布函数被称为概率密度函数。虽然在命名上作这样的区分看起来是没有必要的,但是概率质量函数和概率密度函数有着本质的不同。举一个连续型随机变量的例子:指数密度。指数随机变量的密度函数如下式:
类似于Poisson随机变量,指数随机变量只可以取非负值。但是和Poisson分布不同的是,这里的指数可以取任意非负值,包括非整数,例如4.25或是5.612401。这个性质使得计数数据(必须为整数)在这里不太适用;而对于类似时间数据、温度数据(当然是以开氏温标计量)或其他任意对精度有要求的正数数据,它是一种不错的选择。图1.3.2展示了λ取不同值时的概率密度函数。
当随机变量Z拥有参数为λ的指数分布时,我们称Z服从于指数分布,并记为:
对指定的参数λ,指数型随机变量的期望值为λ的逆,即
a = np.linspace(0, 4, 100)
expo = stats.expon
lambda_ = [0.5, 1]
for l, c in zip(lambda_, colors):
plt.plot(a, expo.pdf(a, scale=1./l), lw=3,
color=c, label="$\lambda = %.1f$" % l)
plt.fill_between(a, expo.pdf(a, scale=1./l), color=c, alpha=.33)
plt.legend()
plt.ylabel("Probability density function at $z$")
plt.xlabel("$z$")
plt.ylim(0,1.2)
plt.title("Probability density function of an exponential random\
variable, differing $\lambda$ values");
这里值得注意的是,概率密度方程在某一点的值并不等于它在这一点的概率。这个将会在后面讲到,当然如果你对它感兴趣,可以加入下面的讨论:http://stats.stackexchange.com/questions/4220/a-probability-distribution-value-exceeding-1-is-ok。
1.3.3 什么是λ
这个问题可以理解为统计的动机是什么。在现实世界,我们并不知道λ的存在,我们只能直观地感受到变量Z,如果确定参数λ的话,那就一定要深入到整个事件的背景中去。这个问题其实很难,因为并不存在Z到λ的一一对应关系。对于λ的估计有很多的设计好的方法,但因为λ不是一个可以真实观察到的东西,谁都不能说哪种方式一定是最好的。
贝叶斯推断围绕着对λ取值的估计。与其不断猜测λ的精确取值,不如用一个概率分布来描述λ的可能取值。
起初这看起来或许有些奇怪。毕竟,λ是一个定值,它不一定是随机的!我们怎么可能对一个非随机变量值赋予一个概率呢?不,这样的考虑是老旧的频率派思考方式。如果我们把它们理解为估计值的话,在贝叶斯的哲学体系下,它们是可以被赋予概率的。因此对参数λ估计是完全可以接受的。