Beta分布

Posted gloria-zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Beta分布相关的知识,希望对你有一定的参考价值。

Beta分布

beta分布可以看做一个概率的概率分布。
首先试验是伯努利试验,它符合二项式分布。而Beta分布是先有一些试验结果,比如说有100个试验结果,其中30次成功,70次失败,然后在这个基础上继续试验,把新的试验结果加到原有结果上,beta分布就是这一系列操作后是某一概率的可能性大小,分布曲线的x轴是概率。
beta分布描述的就是我们不知道概率是多少,但是我们有一些先验结果,我们可以合理的猜测,beta分布就是作为表示概率的概率分布。
beta分布的概率密度函数是$$Betaleft( x|alpha ,eta ight) =dfrac {x^{alpha -1}left( 1-x ight) ^{eta -1}}{Bleft( alpha ,eta ight) }$$
其中$$Bleft( alpha ,eta ight) =dfrac {Gamma left( alpha ight) Gamma left( eta ight) }{Gamma left( alpha +eta ight) }$$
$alpha $和$eta $可以当成是成功和失败的次数。


 

Beta分布相关代码

#导入库
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

PDF

#PDF
plt.figure(figsize=(14,7))

x=np.linspace(0,1,100)
y=stats.beta.pdf(x,a=2,b=2)

plt.plot(x,y,color=b,label=PDF)
plt.fill_between(x,y,color=b,alpha=0.25)

plt.legend()
plt.show()

技术图片

 

参数

$alpha $和$eta $比例相同,值不同。

#a和b比例相同,值不同
plt.figure(figsize=(14,7))

x=np.linspace(0,1,100)
y1=stats.beta.pdf(x,a=1,b=1)
y2=stats.beta.pdf(x,a=10,b=10)
y3=stats.beta.pdf(x,a=100,b=100)

plt.plot(x,y1,color=r,label=r$alpha=1,eta=1$)
plt.fill_between(x,y1,color=r,alpha=0.25)

plt.plot(x,y2,color=g,label=r$alpha=10,eta=10$)
plt.fill_between(x,y2,color=g,alpha=0.25)

plt.plot(x,y3,color=b,label=r$alpha=100,eta=100$)
plt.fill_between(x,y3,color=b,alpha=0.25)

plt.legend()
plt.show()

技术图片

 

$alpha $和$eta $比例不同,总和相同。

#a和b比例不同,总和相同
plt.figure(figsize=(14,7))

x=np.linspace(0,1,100)
y1=stats.beta.pdf(x,a=25,b=75)
y2=stats.beta.pdf(x,a=50,b=50)
y3=stats.beta.pdf(x,a=75,b=25)

plt.plot(x,y1,color=r,label=r$alpha=25,eta=75$)
plt.fill_between(x,y1,color=r,alpha=0.25)

plt.plot(x,y2,color=g,label=r$alpha=50,eta=50$)
plt.fill_between(x,y2,color=g,alpha=0.25)

plt.plot(x,y3,color=b,label=r$alpha=75,eta=25$)
plt.fill_between(x,y3,color=b,alpha=0.25)

plt.legend()
plt.show()

技术图片

 

随机样本

print(stats.beta.rvs(a=2,b=2))
print(stats.beta.rvs(a=2,b=2,size=10))

技术图片

 

CDF

#CDF
plt.figure(figsize=(14,7))

x=np.linspace(0,1,100)
y=stats.beta.cdf(x,a=2,b=2)

plt.plot(x,y,color=b,label=CDF)

plt.legend()
plt.show()

技术图片

 

区间概率

print(p(x<0.3)={:.3}.format(stats.beta.cdf(a=2,b=2,x=0.3)))
print(p(0.2<x<0.8)={:.3}.format(stats.beta.cdf(a=2,b=2,x=0.8)-stats.beta.cdf(a=2,b=2,x=0.2)))

技术图片

以上是关于Beta分布的主要内容,如果未能解决你的问题,请参考以下文章

来自 Beta 分布的随机数,C++

R可视化beta分布(Beta Distribution)

Beta分布

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

(转)Gamma分布,Beta分布,Multinomial多项式分布,Dirichlet狄利克雷分布

使用 Boost 生成基于 Beta 分布的随机数