《贝叶斯方法:概率编程与贝叶斯推断》一1.3 概率分布

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到λ的一一对应关系。对于λ的估计有很多的设计好的方法,但因为λ不是一个可以真实观察到的东西,谁都不能说哪种方式一定是最好的。

贝叶斯推断围绕着对λ取值的估计。与其不断猜测λ的精确取值,不如用一个概率分布来描述λ的可能取值。

起初这看起来或许有些奇怪。毕竟,λ是一个定值,它不一定是随机的!我们怎么可能对一个非随机变量值赋予一个概率呢?不,这样的考虑是老旧的频率派思考方式。如果我们把它们理解为估计值的话,在贝叶斯的哲学体系下,它们是可以被赋予概率的。因此对参数λ估计是完全可以接受的。

时间: 2024-09-20 09:04:29

《贝叶斯方法:概率编程与贝叶斯推断》一1.3 概率分布的相关文章

《贝叶斯方法:概率编程与贝叶斯推断》——导读

前言 贝叶斯方法:概率编程与贝叶斯推断 贝叶斯方法是一种常用的推断方法,然而对读者来说它通常隐藏在乏味的数学分析章节背后.关于贝叶斯推断的书通常包含两到三章关于概率论的内容,然后才会阐述什么是贝叶斯推断.不幸的是,由于大多数贝叶斯模型在数学上难以处理,这些书只会为读者展示简单.人造的例子.这会导致贝叶斯推断给读者留下"那又如何?"的印象.实际上,这曾是我自己的先验观点. 最近贝叶斯方法在一些机器学习竞赛上取得了成功,让我决定再次研究这一主题.然而即便以我的数学功底,我也花了整整3天时间

《贝叶斯方法:概率编程与贝叶斯推断》——第1章 贝叶斯推断的哲学 1.1 引言

第1章 贝叶斯推断的哲学 贝叶斯方法:概率编程与贝叶斯推断 1.1 引言 尽管你已是一个编程老手,但bug仍有可能在代码中存在.于是,在实现了一段特别难的算法之后,你决定先来一个简单的测试用例.这个用例通过了.接着你用了一个稍微复杂的测试用例.再次通过了.接下来更难的测试用例也通过了.这时,你开始觉得也许这段代码已经没有bug了. 如果你这样想,那么恭喜你:你已经在用贝叶斯的方式思考!简单地说,贝叶斯推断是通过新得到的证据不断地更新你的信念.贝叶斯推断很少会做出绝对的判断,但可以做出非常可信的判

《贝叶斯方法:概率编程与贝叶斯推断》一第1章 贝叶斯推断的哲学1.1 引言

第1章 贝叶斯推断的哲学 贝叶斯方法:概率编程与贝叶斯推断 1.1 引言 尽管你已是一个编程老手,但bug仍有可能在代码中存在.于是,在实现了一段特别难的算法之后,你决定先来一个简单的测试用例.这个用例通过了.接着你用了一个稍微复杂的测试用例.再次通过了.接下来更难的测试用例也通过了.这时,你开始觉得也许这段代码已经没有bug了. 如果你这样想,那么恭喜你:你已经在用贝叶斯的方式思考!简单地说,贝叶斯推断是通过新得到的证据不断地更新你的信念.贝叶斯推断很少会做出绝对的判断,但可以做出非常可信的判

《贝叶斯方法:概率编程与贝叶斯推断》——1.4 使用计算机执行贝叶斯推断

1.4 使用计算机执行贝叶斯推断 接下来模拟一个有趣的实例,它是一个有关用户发送和收到短信的例子. 1.4.1 实例:从短信数据推断行为 你得到了系统中一个用户每天的短信条数数据,如图1.4.1中所示.你很好奇这个用户的短信使用行为是否随着时间有所改变,不管是循序渐进地还是突然地变化.怎么模拟呢?(这实际上是我自己的短信数据.尽情地判断我的受欢迎程度吧.) figsize(12.5, 3.5) count_data = np.loadtxt("data/txtdata.csv") n_

《贝叶斯方法:概率编程与贝叶斯推断》一1.4 使用计算机执行贝叶斯推断

1.4 使用计算机执行贝叶斯推断 接下来模拟一个有趣的实例,它是一个有关用户发送和收到短信的例子. 1.4.1 实例:从短信数据推断行为 你得到了系统中一个用户每天的短信条数数据,如图1.4.1中所示.你很好奇这个用户的短信使用行为是否随着时间有所改变,不管是循序渐进地还是突然地变化.怎么模拟呢?(这实际上是我自己的短信数据.尽情地判断我的受欢迎程度吧.) figsize(12.5, 3.5) count_data = np.loadtxt("data/txtdata.csv") n_

《贝叶斯方法:概率编程与贝叶斯推断》——1.5结论

1.5结论 这一章介绍了频率派和贝叶斯派对概率的解释的差别.同时我们也学到了两个重要的分布:Poisson分布和指数分布.这是今后我们构建更多贝叶斯模型的两块重要基石,就像我们在短信接收例子中所做的那样.在第2章中,我们会探讨更多的建模和PyMC策略.

《贝叶斯方法:概率编程与贝叶斯推断》一1.5结论

1.5结论 这一章介绍了频率派和贝叶斯派对概率的解释的差别.同时我们也学到了两个重要的分布:Poisson分布和指数分布.这是今后我们构建更多贝叶斯模型的两块重要基石,就像我们在短信接收例子中所做的那样.在第2章中,我们会探讨更多的建模和PyMC策略.

《贝叶斯方法:概率编程与贝叶斯推断》——1.1 引言

1.1 引言 尽管你已是一个编程老手,但bug仍有可能在代码中存在.于是,在实现了一段特别难的算法之后,你决定先来一个简单的测试用例.这个用例通过了.接着你用了一个稍微复杂的测试用例.再次通过了.接下来更难的测试用例也通过了.这时,你开始觉得也许这段代码已经没有bug了. 如果你这样想,那么恭喜你:你已经在用贝叶斯的方式思考!简单地说,贝叶斯推断是通过新得到的证据不断地更新你的信念.贝叶斯推断很少会做出绝对的判断,但可以做出非常可信的判断.在上面的例子中,我们永远无法100%肯定我们的代码是无缺

《贝叶斯方法:概率编程与贝叶斯推断》——1.3 概率分布

1.3 概率分布 首先定义以下希腊文字的发音: α = alpha β = beta λ = lambda µ = mu σ = sigma τ = tau 很好.接下来正式开始讲概率分布.首先快速地回忆一下什么是概率分布.设Z为一个随机变量,那么就存在一个跟Z相关的概率分布函数,给定Z任何取值,它都得到一个相应的概率值. 我们把随机变量分为3种类别. Z为离散的.离散随机变量的取值只能是在特定的列表中.像货币.电影收视率.投票数都是离散随机变量.当我们将它与连续型随机变量对比时,这个概念就比较