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

  • 相关阅读:
    css单行排版
    sass安装(windows版)
    php通过post将表单数据保存到数据库实例
    C#-socket简单同步通信学习
    让VS变成彩色码
    VS项目启动后 提示ID为*******的进程当前未运行
    C#实现简单验证码
    API清理xml格式数据
    VS提示-无法启动IIS Express Web服务器-的解决方法
    C#MVC中ztree的简单使用
  • 原文地址:https://www.cnblogs.com/gloria-zhang/p/13187520.html
Copyright © 2020-2023  润新知