前面两小节对随机变量做了一个概述:
数理统计与概率论及Python实现(1)——概率论中基本概念
数理统计与概率论及Python实现(2)——随机变量
数理统计与概率论及Python实现(3)——随机变量概述
这一节主要记录一维离散型随机变量以及关于它们的一些性质。对于概率论与数理统计方面的计算及可视化,主要的Python包有scipy, numpy和matplotlib等。
1. Python中调用一个分布函数的步骤
scipy是Python中使用最为广泛的科学计算工具包,再加上numpy和matplotlib,基本上可以处理大部分的计算和作图任务。下面是对scipy的介绍:
SciPy是一个开源的Python算法库和数学工具包。SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。与其功能相类似的软件还有MATLAB、GNU Octave和Scilab。SciPy目前在BSD许可证下发布。它的开发由Enthought资助。
上面的介绍中没有提到stats模块,这个模块中包含了概率论及统计相关的函数。
下面是调用一个分布函数的常用方法(以最常见的正态分布为例):
初始化一个分布函数(也叫作冻结的分布);
调用该分布函数的方法或计算其数值特征;
import numpy as npfrom scipy import statsimport matplotlib.pyplot as pltnorm_dis = stats.norm(5, 3) # 利用相应的分布函数及参数,创建一个冻结的正态分布(frozen distribution)x = np.linspace(-5, 15, 101) # 在区间[-5, 15]上均匀的取101个点# 计算该分布在x中个点的概率密度分布函数值(PDF)pdf = norm_dis.pdf(x)# 计算该分布在x中个点的累计分布函数值(CDF)cdf = norm_dis.cdf(x)# 下面是利用matplotlib画图plt.figure(1)# plot pdfplt.subplot(211) # 两行一列,第一个子图plt.plot(x, pdf, 'b-', label='pdf')plt.ylabel('Probability')plt.title(r'PDF/CDF of normal distribution')plt.text(-5.0, .12, r'$\mu=5,\ \sigma=3$') # 3是标准差,不是方差plt.legend(loc='best', frameon=False)# plot cdfplt.subplot(212)plt.plot(x, cdf, 'r-', label='cdf')plt.ylabel('Probability')plt.legend(loc='best', frameon=False)plt.show()
正态分布N(5,3**2)的概率密度函数和累计分布函数
2. 伯努利分布
伯努利分布应该是所有分布里面最简单的分布,也是二项分布的基本单元。其样本空间中只有两个点,一般取为{0、1};不同的伯努利分布只是取到这两个值的概率不同。如果将抛一次硬币看作是一次伯努利实验,且将正面朝上记做1,反面朝上记做0。那么伯努利分布中的参数p就表示硬币正面朝上的概率,其期望同参数p,也是关注硬币正面朝上的概率。
每种分布都是一种模型,都有其适用的实例。伯努利分布适合于试验结果只有两种可能的单次试验。例如抛