Beta函数与Gamma函数及其与Beta分布的关系

来源:互联网 发布:什么软件测试兼容性 编辑:程序博客网 时间:2024/05/17 08:24

相关函数在scipy.special

import scipy.special as ssss.beta(x1, x2)
  • 1
  • 2
  • 1
  • 2

相关分布(概率密度)在scipy.stats

import scipy.stats as stss.beta(a, b)           # 随机变量
  • 1
  • 2
  • 1
  • 2

β Function:

B(x,y)=10tx1(1t)y1dt

主要性质: 

B(x,y)=B(y,x)B(x,y)=(x1)!(y1)!(x+y1)!

Γ function

Γ(x)=0tx1etdt

其递归形式如下: 

Γ(x+1)=xΓ(x)

关系

B(x,y)=Γ(x)Γ(y)Γ(x+y)

scipy中的相关实现

>>> from scipy.special import beta>>> from scipy.special import gamma>>> beta(6, 7) == gamma(6)*gamma(7)/gamma(6+7)True
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Beta distribution 及其与Beta function and Gamma function的关系

Beta分布的概率密度函数(pdf)为: 

f(x;α,β)===Cxα1(1x)β1Γ(x+y)Γ(x)Γ(y)xα1(1x)β11Beta(x,y)xα1(1x)β1

f(x;2,2)=x(1x)Beta(2,2)

>>> st.beta(2, 2).pdf(.5) == .5*.5/ss.beta(2, 2)True
  • 1
  • 2
  • 1
  • 2

beta distribution是一种在[0, 1]区间上的连续分布,在[0, 1]区间内概率密度值可以为 ,再次证明了概率密度函数值不是密度。

import numpy as npimport scipy.special as ssfrom scipy import integrateimport matplotlib.pyplot as pltdef beta(x, a, b):    return x**(a-1)*(1-x)**(b-1)/ss.beta(a, b)def show_pdf():    x = np.arange(0, 1, .01)    for (a, b) in [(.5, .5), (5, 1), (1, 3), (2, 2), (2, 5)]:        plt.plot(x, beta_pdf(x, a, b), label='a={:.1f}, b={:.1f}'.format(a, b), lw=2)    plt.legend(loc='upper center', frameon=False)    plt.ylim([0, 3.5])    plt.ylabel('pdf')    plt.savefig('./imgs/pdf.png')    plt.show()def show_cdf():    x = np.arange(0+0.0001, 1, .0001)    for (a, b) in [(.5, .5), (5, 1), (1, 3), (2, 2), (2, 5)]:        plt.plot(x, [(integrate.quad(beta_pdf, 0, x, args=(a, b)))[0] for x in x],                 label='a={:.1f}, b={:.1f}'.format(a, b), lw=2)    plt.legend(loc='upper left', frameon=False)    plt.ylabel('cdf')    plt.savefig('./imgs/cdf.png')    plt.show()if __name__ == '__main__':    show_pdf()    show_cdf()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31


 


 

Beta分布的峰值在 a1a+b2 处取得,这一点在概率密度函数的曲线中可清晰地看出。

先验为 Beta 分布,似然为二项分布时的后验分布

p(θ)=θa1(1θ)b1B(a,b)p(X|θ)=(nk)θk(1θ)nkp(θ|X)=θa+k1(1θ)b+nk1B(a+k,b+nk)

import numpy as npimport scipy.stats as stimport matplotlib.pyplot as pltn, k = 100, 61p = k/nrv = st.binom(n, p)a, b = 10, 10prior = st.beta(a, b)poster = st.beta(a+k, b+n-k)thetas = np.arange(0, 1, .001)plt.figure(figsize=(12, 9))plt.style.use('ggplot')plt.plot(thetas, prior.pdf(thetas), 'b', label='Prior')plt.plot(thetas, n*st.binom(n, thetas).pmf(k), 'g', label='Likelihood')plt.plot(thetas, poster.pdf(thetas), 'r', label='Poster')plt.axvline(p, c='g', ls='--', label='MLE', alpha=.4)plt.axvline((a+k-1)/(a+b+n-2), c='r', ls='--', label='MAP', alpha=.4)plt.legend(frameon=False)plt.xlabel(r'$\theta$', fontsize=14)plt.ylabel('Density', fontsize=16)plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃了过期3年的药怎么办 离婚后孩子的抚养费不给怎么办 小车钥匙丢了怎么办配要多少钱 一键启动的车钥匙丢了怎么办 股票退市了手里的股票怎么办 3d硬金以后要换怎么办 偏指甲红肿长在了肉里怎么办 牙齿黄怎么办教你牙齿美白小窍门 2岁孩门牙磕断了怎么办 脸上用了含激素的产品应该怎么办 身上起红疙瘩水泡很痒怎么办 怀疑老公有外遇他不承认怎么办 苹果手机锁屏密码忘了怎么办 黑色t恤洗了掉毛怎么办 老婆要和我离婚我该怎么办 发现老婆有外遇最明智的怎么办 高度近视怎么办我快一千度近 天刀耐久度为0了怎么办 新车被4s店装了怎么办 h面和w面联系线怎么办 造梦西游3到80级怎么办 加95的车加了92怎么办 95的车加92的油怎么办 宝宝六个月了奶水变少了怎么办 六个月的宝宝不爱吃奶粉怎么办 脸上挤黑头留下的小坑怎么办 小孩身上起红疙瘩很痒怎么办 肛门上长了个肉疙瘩怎么办 脚撞了一下肿了怎么办u 怀孕9个月同床了怎么办 结婚两年了都没怀孕怎么办 怀孕快40周了没有生的迹象怎么办 生完小孩掉头发很厉害怎么办 我27岁欠50多万怎么办 8岁童牙齿摔松了怎么办 我的眉毛后半边很稀少怎么办 剑三95修为满了怎么办 21三体综合症临界高风险怎么办 率土之滨没地了怎么办 老公有外遇怎么办他还舍不得小三 11选5输了6万 怎么办