一些公式

Gamma函数

(1)

贝叶斯公式

(2)

贝叶斯公式计算二项分布概率

现在有一枚未知硬币,我们想要计算抛出后出现正面的概率。我们使用贝叶斯公式计算硬币出现正面的概率。硬币出现正反率的概率和硬币两面的质量有较大关系,由于硬币未知,我们不知道是否会有人做手脚,于是在实验之前我们认为硬币出现正面的概率服从均匀分布,即

(3)

抛硬币是一个二项试验,所以n次实验中出现x次正面的似然概率为

(4)

把(3)(4)式带入(2)式中,得到

考虑到Gamma函数,进一步推算有

(5)

这个分布就是大名鼎鼎的Beta分布。我们记Beta函数为

记Beta分布为

实际上,抛硬币的例子中,x为正整数,所以抛n次硬币,出现x次正面的后验概率分布为

(6)

可以看到,当a、b为整数时,Beta(a, b)与二项分布Bin(n, p)的表达式有点神似。正是因为这点神似,才让Beta分布与二项分布成为共轭分布。共轭分布我们在后续会详细讲。

Beta分布特性

我们先看看Beta分布有什么特性。

1、          Beta(1, 1)等于均匀分布

2、          作为概率的概率分布,Beta(a, b)在(0, 1)上对θ积分必定为1。

3、          Beta(a, b)同时能作为先验分布和后验分布,必定能够模拟各种概率分布情况。

如上图,Beta分布可以模拟出以(0, 1)上任意点为峰值的曲线,这表明Beta分布可以模拟极大似然法求出的任意最大值点概率值。

Beta分布的统计例子

问题:随机变量,把这n个随机变量排序后得到顺序统计量,然后请问的分布是什么。

为解决这个问题,可以尝试计算落在区间[x, x+Δx]的概率。即求下述式子的值:

首先,把 [0,1] 区间分成三段 [0, x),[x, x+Δx],(x+Δx, 1],然后考虑下简单的情形:即假设n 个数中只有1个落在了区间 [x, x+Δx]内,由于这个区间内的数X(k)是第k大的,所以[0, x)中应该有 k - 1 个数,(x+Δx, 1] 这个区间中应该有n - k 个数。如下图所示:

从而问题转换为下述事件E:

对于上述事件E,有:

其中,o(Δx)表示Δx的高阶无穷小。显然,由于不同的排列组合,即n个数中有一个落在 [x, x+Δx]区间的有n种取法,余下n - 1个数中有k - 1个落在[0, x)的有种组合,所以和事件E等价的事件一共有个。

如果有2个数落在区间[x, x+Δx]呢?如下图所示:

类似于事件E,对于2个数落在区间[x, x+Δx]的事件E':

有:

从上述的事件E、事件E'中,可以看出,只要落在[x, x+Δx]内的数字超过一个,则对应的事件的概率就是 o(Δx)。于是乎有:

从而得到的概率密度函数为:

对比公式(6),可以看到上式正是a、b为整数状态下的Beta分布。

对于,我们很容易计算

共轭分布

在贝叶斯概率理论中,如果后验概率P(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布

文章开头的演算中,我们已经知道使用Beta(1, 1)作为先验分布,结合贝叶斯公式和二项分布似然函数,计算出的后验分布也为Beta分布。

实际上,结合公式(2)(4)(5),我们很容易得到

Beta(a, b) + 实验数据(事件A m次,非事件A n) ~ Beta(a + m, b + n)

参考:

https://blog.csdn.net/ccnt_2012/article/details/81113923

http://www.360doc.com/content/16/0428/10/478627_554452907.shtml#

https://www.zhihu.com/question/21134457

Beta分布深入理解的更多相关文章

  1. Beta分布从入门到精通

    近期一直有点小忙,可是不知道在瞎忙什么,最终有时间把Beta分布的整理弄完. 以下的内容.夹杂着英文和中文,呵呵- Beta Distribution Beta Distribution Defini ...

  2. 如何通俗理解贝叶斯推断与beta分布?

    有一枚硬币(不知道它是否公平),假如抛了三次,三次都是“花”: 能够说明它两面都是“花”吗? 1 贝叶斯推断 按照传统的算法,抛了三次得到三次“花”,那么“花”的概率应该是: 但是抛三次实在太少了,完 ...

  3. 二项分布和Beta分布

    原文为: 二项分布和Beta分布 二项分布和Beta分布 In [15]: %pylab inline import pylab as pl import numpy as np from scipy ...

  4. 关于Beta分布、二项分布与Dirichlet分布、多项分布的关系

    在机器学习领域中,概率模型是一个常用的利器.用它来对问题进行建模,有几点好处:1)当给定参数分布的假设空间后,可以通过很严格的数学推导,得到模型的似然分布,这样模型可以有很好的概率解释:2)可以利用现 ...

  5. Dirichlet分布深入理解

    Dirichlet分布 我们把Beta分布推广到高维的场景,就是Dirichlet分布.Dirichlet分布定义如下 Dirichlet分布与多项式分布共轭.多项式分布定义如下 共轭关系表示如下 D ...

  6. 伯努利分布、二项分布、Beta分布、多项分布和Dirichlet分布与他们之间的关系,以及在LDA中的应用

    在看LDA的时候,遇到的数学公式分布有些多,因此在这里总结一下思路. 一.伯努利试验.伯努利过程与伯努利分布 先说一下什么是伯努利试验: 维基百科伯努利试验中: 伯努利试验(Bernoulli tri ...

  7. 指数家族-Beta分布

    2. Beta分布 2.1 Beta分布 我们将由几个问题来得引出几个分布: 问题一:1:  2:把这个  个随机变量排序后得到顺序统计量  3:问  是什么分布 首先我们尝试计算  落在一个区间   ...

  8. Beta分布和Dirichlet分布

    在<Gamma函数是如何被发现的?>里证明了\begin{align*} B(m, n) = \int_0^1 x^{m-1} (1-x)^{n-1} \text{d} x = \frac ...

  9. 二项分布 多项分布 伽马函数 Beta分布

    http://blog.csdn.net/shuimu12345678/article/details/30773929 0-1分布: 在一次试验中,要么为0要么为1的分布,叫0-1分布. 二项分布: ...

随机推荐

  1. 【PyQt5-Qt Designer】按钮系列

    [PyQt5-Qt Designer]按钮系列 复选框(QCheckBox) 效果如下: 参考: https://zhuanlan.zhihu.com/p/30509947 完整代码: from Py ...

  2. json和jsonp的区别?

    json返回的是一串json格式数据:而jsonp返回的是脚本代码(包含一个函数调用): jsonp的全名叫做json with padding,就是把 json 对象用符合 js 语法的形式包裹起来 ...

  3. MySQL忘记root密码--不重启mysqd重置root密码

    先提个问题:如何不重启mysqld,且没有权限修改用户账号和权限的情况下,如何重新设置root密码?不知道没关系,在此之前我也是不知道如何操作的,先看看下面的几种重置root密码的方法. 1.skip ...

  4. 查看进程:ps

    ps 是process status的缩写.用来查看进程 [root@linux-node- sss]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT STA ...

  5. 微信小程序tabbar设置样式在哪里改

    微信小程序tabbar通俗点说就是底部导航,我们一般会配置相关的菜单,方便读者快速导航.tabbar是在项目根目录中的配置文件 app.json 中进行设置:如果小程序是一个多 tab 应用(客户端窗 ...

  6. The Swift Programming Language 中文版

    http://numbbbbb.github.io/the-swift-programming-language-in-chinese/

  7. what's the 场外交易

    出自 MBA智库百科(https://wiki.mbalib.com/)   什么是场外交易 场外交易是指证券投资机构之间不通过股票交易所,而以电话.电传等方式相互进行的股票交易.           ...

  8. 爬虫解析库——BeautifulSoup

    解析库就是在爬虫时自己制定一个规则,帮助我们抓取想要的内容时用的.常用的解析库有re模块的正则.beautifulsoup.pyquery等等.正则完全可以帮我们匹配到我们想要住区的内容,但正则比较麻 ...

  9. NYOJ 方案数量

    1.递归求解(直接递归会超时,要用备忘录法) # include<iostream> # include<stdio.h> #include <map> using ...

  10. List与Array互相转换

    List转换为Array可以这样处理: ArrayList<String> list=new ArrayList<String>(); String[] strings = n ...