python 伯努利分布详解
伯努利分布是一种离散分布,有两种可能的结果。1表示成功,出现的概率为p(其中0
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布。
离散概率分布也称为概率质量函数(probabilitymassfunction)。离散概率分布的例子有伯努利分布(Bernoullidistribution)、二项分布(binomialdistribution)、泊松分布(Poissondistribution)和几何分布(geometricdistribution)等。
连续概率分布也称为概率密度函数(probabilitydensityfunction),它们是具有连续取值(例如一条实线上的值)的函数。正态分布(normaldistribution)、指数分布(exponentialdistribution)和β分布(betadistribution)等都属于连续概率分布。
fromscipy.statsimportbinom#导入伯努利分布 importmatplotlib.pyplotasplt importnumpyasnp #次数 n=10 #概率 p=0.3 #导入特征系数 k=np.arange(0,21) #伯努利分布的特征值导入 binomial=binom.pmf(k,n,p) plt.plot(k,binomial,'o-') plt.title('Binomial:n=%i,p=%0.2f'%(n,p),fontsize=15) plt.xlabel('Numberofsuccesses') plt.ylabel('Probabilityofsucesses',fontsize=15) plt.savefig(r'C:\Users\Administrator\Desktop\106\data\textdata\12.png') plt.show()
二项分布:离散型概率分布,n重伯努利分布
如果随机变量序列Xn(n=1,2,…)中的随机变量均服从与参数为p的伯努利分布,那么随机变量序列Xn就形成了参数为p的n重伯努利试验。例如,假定重复抛掷一枚均匀硬币n次,如果在第i次抛掷中出现正面,令Xi=1;如果出现反面,则令Xi=0。那么,随机变量Xn(n=1,2,…)就形成了参数为1/2的n重伯努利试验。
可见,n重伯努利试验需满足下列条件:
每次试验只有两种结果,即X=1,或X=0
各次试验中的事件互相独立,且X=1和X=0的概率分别为p(0
n重伯努利试验的结果就是n重伯努利分布,即二项分布。反之,当Xn(n=1)时,二项分布的结果服从于伯努利分布。因为二项分布实际上是进行了n次的伯努利分布,所以二项分布的离散型随机变量期望为E(x)=np,方差为D(x)=np(1-p)。
需要注意的是,满足二项分布的样本空间有一个非常重要的性质,假设进行n次独立试验,满足二项分布(每次试验成功的概率为p,失败的概率为1−p),那么成功的次数X就是一个参数为n和p的二项随机变量,即满足下述公式:
P(X=k)=C(n,k)*p^k*(1-p)^(n-k)
X=k,试验n次,成功的次数恰好有k次的随机变量(事件)
C(n,k),表示从集合n中取出k个元素的组合数,结果为n!/(k!*(n-k)!)
例如,小明参加雅思考试,每次考试的通过率1/3,不通过率为q=2/3。如果小明连续参加考试4次,那么恰好有两次通过的概率是多少?
解析:因为每次考试只有两种结果,通过或不通过,符合条件(1);每次考试结果互相独立,且概率不变,符合条件(2)。满足二项分布样本,代入公式求解得概率为:C(4,2)*(1/2)^2*(2/3)^(4-2)≈8/27
二项分布概率直方图:
图形特性:
当p=q时,图形是对称的
当p≠q时,图形呈偏态,pq的偏斜方向相反
当(n+1)p不为整数时,二项概率P(X=k)在k=(n+1)*p时达到最大值
当(n+1)p为整数时,二项概率P(X=k)在k=(n+1)*p和k=(n+1)*p-1时达到最大值
NOTE:当n很大时,即使p≠q,二项分布概率直方图的偏态也会逐渐降低,最终成为正态分布。也就是说,二项分布的极限情形即为正态分布,故当n很大时,二项分布的概率可用正态分布的概率作为近似值。那么n需要多大才可谓之大呢?
一般规定,当pq且nq≥5时,这时的n就足够大了,可以用正态分布的概率作为近似值。则正态分布参数μ=np,σ^2=np(1-p)。
二项分布:
fromscipy.statsimportbinom importmatplotlib.pyplotasplt importnumpyasnp fig,ax=plt.subplots(1,1) n=100 p=0.5 #平均值,方差,偏度,峰度 mean,var,skew,kurt=binom.stats(n,p,moments='mvsk') print(mean,var,skew,kurt) #ppf:累积分布函数的反函数。q=0.01时,ppf就是p(X补充拓展:python--scipy--1离散概率分布:伯努利分布
#导入包 #数组包 importnumpyasnp #绘图包 importmatplotlib.pyplotasplt #统计计算包的统计模块 fromscipyimportstats ''' arange用于生成一个等差数组,arange([start,]stop,[step,] 使用见文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html ''' ''' 第1步,定义随机变量:1次抛硬币 成功指正面朝上记录为1,失败指反面朝上记录为0 ''' X=np.arange(0,2,1) Xarray([0,1])
''' 伯努利分布官方使用文档: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.bernoulli.html#scipy.stats.bernoulli ''' #第2步,#求对应分布的概率:概率质量函数(PMF) #它返回一个列表,列表中每个元素表示随机变量中对应值的概率 p=0.5#硬币朝上的概率 pList=stats.bernoulli.pmf(X,p) pListarray([0.5,0.5])
#第3步,绘图 ''' plot默认绘制折线,这里我们只绘制点,所以传入下面的参数: marker:点的形状,值o表示点为圆圈标记(circlemarker) linestyle:线条的形状,值None表示不显示连接各个点的折线 ''' plt.plot(X,pList,marker='o',linestyle='None') ''' vlines用于绘制竖直线(verticallines), 参数说明:vline(x坐标值,y坐标最小值,y坐标值最大值) 我们传入的X是一个数组,是给数组中的每个x坐标值绘制竖直线, 竖直线y坐标最小值是0,y坐标值最大值是对应pList中的值 官网文档:https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.vlines ''' plt.rcParams['font.sans-serif']=['SimHei'] plt.vlines(X,0,pList) #x轴文本 plt.xlabel('随机变量:抛硬币1次') #y轴文本 plt.ylabel('概率') #标题 plt.title('伯努利分布:p=%.2f'%p) #显示图形 plt.show()
以上这篇python伯努利分布详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。