【Python】Beta分布详解

news/2024/12/5 3:37:08/

投硬币,硬币是正还是反,这属于两点分布的问题。

疯狂投硬币,正面出现的次数,服从二项分布:【Python】从二项分布到泊松分布

二项分布中,若特定时间内的伯努利试验次数趋于无穷大,那么在某一时刻发生某事件的概率,服从泊松分布

在某一时刻,发生第N次事件,其概率服从Γ\GammaΓ分布:【Python】Gamma分布详解

回到抛硬币的问题,如果硬币出现正反的概率是未知的,考虑到时间地点重力等因素的不同,硬币出现正面的概率甚至可能是不稳定的,换言之,硬币出现正面的概率,或许也是服从某种分布的。

暂且将这个概率设为θ\thetaθ,则经过n次伯努利试验,在θ\thetaθ发生的情况下,正面出现kkk次的概率为

π(k∣θ)=(nk)θk(1−θ)n−k\pi(k\vert\theta)=\binom{n}{k}\theta^k(1-\theta)^{n-k} π(kθ)=(kn)θk(1θ)nk

由于这个θ\thetaθ实际上是未知的,但这个PPP却可通过不断地伯努利试验来去逼近,所以接下来就可以通过贝叶斯公式,来将θ\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)表示kkk发生的情况下,θ\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−kdθ\pi(\theta\vert k)=\frac{\theta^k(1-\theta)^{n-k}}{\int\theta^k(1-\theta)^{n-k}\text d\theta} π(θk)=θk(1θ)nkdθθk(1θ)nk

由于Γ(x)=∫0∞tx−1e−tdt\Gamma(x)=\int^\infty_0t^{x-1}e^{-t}\text dtΓ(x)=0tx1etdt,则上式可写为

π(θ∣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)Γ(nk+1)Γ(n+1)θk(1θ)nk

此即B\BetaB分布。

所以,B\BetaB分布就是在抛nnn次硬币,出现kkk次正面后,则单次抛硬币出现正面的概率。

在Numpy中,random.beta(a,b)即为B\BetaB分布,其表达式为p(x)=Γ(a+b)Γ(a)Γ(b)xa−1(1−x)b−1p(x)=\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}x^{a-1}(1-x)^{b-1}p(x)=Γ(a)Γ(b)Γ(a+b)xa1(1x)b1

显而易见,当a=b=1a=b=1a=b=1时,p(x)=1p(x)=1p(x)=1,退化为均匀分布。

当a和b的取值不同时,B\BetaB分布表现出不同的分布特性

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()

效果为

在这里插入图片描述


http://www.ppmy.cn/news/6658.html

相关文章

[ 代码审计篇 ] Fortify 安装及使用详解(一)Fortify 下载安装并设置语言为中文导出中文报告

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

C++-----模板

举个例子,如果要你交换两个数值,你会怎么做呢? ————你肯定会说,那就写一个Swap交换函数吧! 没错!Swap函数确实可以实现交换,但如果我想让你同时进行不能类型的数值呢,比如floa…

数据结构初阶:树与二叉树(1)——堆

许久没发博客,在这里跟各位看客道声久等了~ 冬至已至,各位有没有吃上热乎的饺子呢 下面给各位奉上承载着满满干货的饺子吧: 目录 一、树 1. 树的结构定义 2. 树的相关概念 3. 树的表示 孩子兄弟表示法 二、二叉树 1. 二叉树的结构定义 2. 特…

指针与数组的联系与区别【一万六千字超详解】

🏖️作者:malloc不出对象 ⛺专栏:《初识C语言》 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言数组的性质1.1 数组的内存布局1…

离散数学数理逻辑部分【2】

文章目录命题逻辑等值演算公式的使用【重点】析取范式和合取范式【重点】范式存在定义【了解】求公式A的范式的步骤:【重点】极大项和极小项【重点】主合取范式和主析取范式【重点】等式演算求主析取范式【重点】真值表求主析取范式【了解】主范式的应用【重点】推理…

编程语言中特殊符号的英文表示

tags: English 写在前面 最近搞FLTK, 发现总是要复习(预习)一下Makefile的写法的, 但是很多符号不认识含义(这同时也出现在Shell编程中)并且直接google的话并不能搜到符号, 所以就很麻烦了, 后来想到这些符号都有英文读法的呀, 下面那就来一起认识一下, 也相当于学英语了. 参…

uniapp动态切换显示不同内容组件

需求描述 通过点击注册或是登录按钮切换不同的组件.默认显示登陆界面,登录字样加粗显示,登录页面显示手机号密码登录.点击注册切换到注册页面,注册字样加粗显示,页面显示手机号和验证码以及注册按钮.对应页面显示如下: 实现代码: <template><view class"conte…

distinct与group by 去重

distinct与group by 去重distinct 特点&#xff1a;group by 特点&#xff1a;总结&#xff1a;mysql中常用去重复数据的方法是使用 distinct 或者group by &#xff0c;以上2种均能实现&#xff0c;但也有不同的地方。distinct 特点&#xff1a; 1、distinct 只能放在查询字段…