【Python】Beta分布详解
投硬币,硬币是正还是反,这属于两点分布的问题。
疯狂投硬币,正面出现的次数,服从二项分布:【Python】从二项分布到泊松分布
二项分布中,若特定时间内的伯努利试验次数趋于无穷大,那么在某一时刻发生某事件的概率,服从泊松分布。
在某一时刻,发生第N次事件,其概率服从 Γ \Gamma Γ分布:【Python】Gamma分布详解
回到抛硬币的问题,如果硬币出现正反的概率是未知的,考虑到时间地点重力等因素的不同,硬币出现正面的概率甚至可能是不稳定的,换言之,硬币出现正面的概率,或许也是服从某种分布的。
暂且将这个概率设为 θ \theta θ,则经过n次伯努利试验,在 θ \theta θ发生的情况下,正面出现 k k k次的概率为
π ( k ∣ θ ) = ( n k ) θ k ( 1 − θ ) n − k \pi(k\vert\theta)=\binom{n}{k}\theta^k(1-\theta)^{n-k} π(k∣θ)=(kn)θk(1−θ)n−k
由于这个 θ \theta θ实际上是未知的,但这个 P P P却可通过不断地伯努利试验来去逼近,所以接下来就可以通过贝叶斯公式,来将 θ \theta θ表达出来
π ( θ ∣ k ) = π ( k ∣ θ ) π ( θ ) ∫ π ( k ∣ θ ) π ( θ ) d θ \pi(\theta\vert k)=\frac{\pi(k\vert\theta)\pi(\theta)}{\int\pi(k|\theta)\pi(\theta)\text d\theta} π(θ∣k)=∫π(k∣θ)π(θ)dθπ(k∣θ)π(θ)
其中, π ( θ ∣ k ) \pi(\theta\vert k) π(θ∣k)表示 k k k发生的情况下, θ \theta θ发生的概率; π ( θ ) \pi(\theta) π(θ)为 θ \theta θ发生的概率。
设 θ \theta θ服从均匀分布,则在 ( 0 , 1 ) (0,1) (0,1)范围内,其概率密度 π ( θ ) = 1 \pi(\theta)=1 π(θ)=1,于是 π ( θ ∣ k ) \pi(\theta\vert k) π(θ∣k)可以写为
π ( θ ∣ k ) = θ k ( 1 − θ ) n − k ∫ θ k ( 1 − θ ) n − k d θ \pi(\theta\vert k)=\frac{\theta^k(1-\theta)^{n-k}}{\int\theta^k(1-\theta)^{n-k}\text d\theta} π(θ∣k)=∫θk(1−θ)n−kdθθk(1−θ)n−k
由于 Γ ( x ) = ∫ 0 ∞ t x − 1 e − t d t \Gamma(x)=\int^\infty_0t^{x-1}e^{-t}\text dt Γ(x)=∫0∞tx−1e−tdt,则上式可写为
π ( θ ∣ k ) = Γ ( n + 1 ) Γ ( k + 1 ) Γ ( n − k + 1 ) θ k ( 1 − θ ) n − k \pi(\theta\vert k)=\frac{\Gamma(n+1)}{\Gamma(k+1)\Gamma(n-k+1)}\theta^k(1-\theta)^{n-k} π(θ∣k)=Γ(k+1)Γ(n−k+1)Γ(n+1)θk(1−θ)n−k
此即 B \Beta B分布。
所以, B \Beta B分布就是在抛 n n n次硬币,出现 k k k次正面后,则单次抛硬币出现正面的概率。
在Numpy中,random.beta(a,b)
即为 B \Beta B分布,其表达式为 p ( x ) = Γ ( a + b ) Γ ( a ) Γ ( b ) x a − 1 ( 1 − x ) b − 1 p(x)=\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}x^{a-1}(1-x)^{b-1} p(x)=Γ(a)Γ(b)Γ(a+b)xa−1(1−x)b−1。
显而易见,当 a = b = 1 a=b=1 a=b=1时, p ( x ) = 1 p(x)=1 p(x)=1,退化为均匀分布。
当a和b的取值不同时, B \Beta B分布表现出不同的分布特性
import numpy as np
import matplotlib.pyplot as plt
from numpy.random import betaa_s = [0.5, 5, 1, 2, 2]
b_s = [0.5, 1, 3, 2, 5]for a,b in zip(a_s, b_s):xs = beta(a, b, size=20000)plt.hist(xs, 100, alpha=0.5, label=f"a={a}, b={b}")plt.legend()
plt.show()
效果为
【Python】Beta分布详解相关推荐
- python之Tkinter详解
Python之Tkinter详解 文章目录 Python之Tkinter详解 1.Tkinter是什么 2.Tkinter创建窗口 ①导入 tkinter的库 ,创建并显示窗口 ②修改窗口属性 ③创建 ...
- python20191031_20191031:Python取反运算详解
20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...
- Python字符编码详解
Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- python变量类型-Python 变量类型详解
变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...
- python安装教程windows-windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- python语言编程基础-Python语言入门详解!快速学成Python!
原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. 在编程中,几 ...
最新文章
- 网络营销外包——网络营销外包新手如何理解优化对网络营销的重要性?
- 禁止vim生成 un~文件
- 【LeetCode】LeetCode之跳跃游戏——动态规划+贪心算法
- 4399积分小游戏_分数提交规则
- BZOJ3312: [Usaco2013 Nov]No Change
- tensorflow错误记录:tf.concat
- Path.GetExtension 方法
- 测试面试必问点【干货】建议收藏!!
- camerax_Android CameraX概述
- 参观云栖小镇体会_40个绝美小镇
- 谭浩强c语言指针讲稿,谭浩强c语言教程 指针.ppt
- ResNet+ FPN网络结构
- lavaral中文手册_Laravel 5.8 中文文档手册
- 瑞利分布与瑞利衰落信道
- android 后台 截屏,Android 截屏方式
- kotlin插件禁用导致的Android studio无法打开-mac
- (转)sonicstage 完整删除的方法
- S700K五机牵引转辙设备简介组成及道岔转换设备故障分析【铁路信号技术专栏】—转载自微信公众号铁路信号技术交流
- MQTT学习之初识mqtt
- Push rejected: Push to origin/master was rejected--git推送项目到远程服务器