本文主要描述概率分布的python实现方法,包括二项分布、伯努利分布、泊松分布、几何分布、正态分布等。
import numpy as np
import matplotlib.pyplot as plt
一、二项分布
步骤:
1.定义随机变量X
2.计算概率
3.绘制概率分布图
# 1.定义随机变量:5次抛硬币,正面向上的次数(概率为0.5)
n1 = 5
p1 = 0.5
X1 = np.arange(0,n1+1,1)
# 2. 求概率质量函数
pList1 = stats.binom.pmf(X1,n1,p1) #返回一个列表,列表中每个元素表示随机变量中对应值的概率
#绘图
plt.plot(X1,pList1,marker='o',linestyle='None')
plt.vlines(X1, 0, pList1)
#plt.xlim(0.5,5.5)
#plt.ylim(0,1)
plt.axis([0.5, 5.5, 0, 0.8])
plt.xlabel('随机变量:正面向上次数')
plt.ylabel('概率')
plt.title('二项分布:n=%i,p=%.2f' %(n1,p1))
plt.show()
二、伯努利分布
步骤:
1.定义随机变量X
2.计算概率
3.绘制概率分布图
#1'定义随机变量:1次抛硬币,成功正面向上计为1,失败反面向上计为0(概率为0.5)
p2 = 0.5
n2 = 1
X2 = np.arange(0,n2+1,1)
#2. 求概率质量函数
pList2 = stats.bernoulli.pmf(X2, p2)
# 3 绘图
plt.plot(X2, pList2, marker='o',linestyle='None')
plt.vlines(X2, 0, pList2)
#plt.ylim(0,1)
plt.axis([-0.5, 1.5, 0, 0.8])
#设置坐标轴间隔为1
x_major_locator=MultipleLocator(1)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.xlabel('随机变量:抛硬币1次')
plt.ylabel('概率')
plt.title('伯努利分布:p=%.2f' % p2)
plt.show()
三、泊松分布
#某商店门口1分钟经过n个人的概率
mu=2
n3=4
X3=np.arange(0,n3+1,1)
pList3=stats.poisson.pmf(X3,mu)
plt.plot(X3,pList3,marker='o',linestyle='None')
plt.vlines(X3,0,pList3)
plt.axis([0.5, 4.5, 0, 0.5])
#设置坐标轴间隔为1
x_major_locator=MultipleLocator(1)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.xlabel('随机变量:某商店门口1分钟经过n个人')
plt.ylabel('概率')
plt.title('泊松分布:平均值mu=%i' % mu)
plt.show()
四、几何分布
步骤:
1.定义随机变量X
2.计算概率
3.绘制概率分布图
# 1. 定义随机变量:投球进篮筐的概率
#5次投球才进框的概率
n4 = 5
#假定每次入篮概率为40%
p4 =0.4
X4 = np.arange(0,n4+1,1)
# 2 概率函数
pList4 = stats.geom.pmf(X4,p4)
# 3 绘图
plt.plot(X4,pList4,marker='o',linestyle='None')
plt.vlines(X4,0,pList4)
plt.axis([0.5, 5.5, 0, 0.5])
#设置坐标轴间隔为1
x_major_locator=MultipleLocator(1)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.xlabel('随机变量:投n次球才入篮')
plt.ylabel('概率')
plt.title('几何分布:概率p=%.2f' %p4)
plt.show()
五、正态分布
#1 绘制一个均值为0 标准差为1 的正态分布
u = 0
sigma = 1
X4 = np.arange(-5 ,5 ,0.1)
#2 概率密度函数
y=stats.norm.pdf(X4,u,sigma)
plt.plot(X4, y)
plt.xlabel('随机变量:x')
plt.ylabel('概率:y')
plt.title('正态分布:u=%.1f, sigma^2=%.1f' % (u,sigma))
plt.show()