假定有自定义的分布数据(X, P),其中X表示随机变量 X X X的取值序列,P表示对应 X X X的每个取值的概率序列。scipy.stats包为我们提供了一个rv_discrete类,可以用数据(X, P)创建自定义的离散型随机变量的分布。例如设 X X X~ ( 1 2 10 0.15 0.55 0.3 ) \begin{pmatrix}1&2&10\\0.15&0.55&0.3\end{pmatrix} (10.1520.55100.3),我们用下列代码生成一个以序列X={1, 2, 10},P={0.15, 0.55, 0.3}表示的分布律的离散型分布mydist。并生成200个服从mydist分布的随机数,模拟此分布描述的随机试验。
from scipy.stats import rv_discrete #导入rv_discrete类
import numpy as np #导入numpy取别名为np
from matplotlib import pyplot as plt #导入pyplot取别名plt
X=np.array([1, 2, 10]) #X的取值序列
P=np.array([0.15, 0.55, 0.3]) #对应的概率序列
mydist=rv_discrete(values=(X, P)) #用X,P创建分布mydist
data=mydist.rvs(size=200) #200个mydist分布的随机数
plt.hist(data, density=True) #绘制直方图
plt.plot(X, mydist.pmf(X), 'bo') #绘制Y的分布律图形
plt.show()
程序的第4~5行设置表示随机变量 X X X的分布律的数组X与P。第6行调用rv_discrete函数(第1行导入)用X,P创建自定义离散型分布mydist。该函数的调用接口为
re_discrete(value) \text{re\_discrete(value)} re_discrete(value)
参数value传递表示离散型随机变量的取值序列X与对应取值的概率序列P组成的序偶(X, P)。
第7行调用mydist的rvs方法产生200个服从mydist的随机数,存于数组data。第8行调用plt(第3行导入)的hist方法,用data数据绘制直方图。第9行调用plt的plot方法,绘制随机变量 Y Y Y的概率质量函数(分布律)图形。运行程序,展示下图。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
返回《导引》