一. 随机变量
随机变量是一个从样本空间Ω\OmegaΩ到实数空间RRR的函数,比如随机变量XXX可以表示投骰子的点数。随机变量一般可以分为两类:
- 离散型随机变量:随机变量的取值为有限个。
- 连续型随机变量:随机变量的取值是连续的,有无限多个。
scipy.stat模块中包含了多种概率分布的随机变量,包含离散型随机变量和连续型随机变量。离散型随机变量的常见接口如下:
| 方法名 | 功能 |
|---|---|
| rvs | 生成该分布的随机序列 |
| pmf | 概率质量函数 |
| cdf | 累计概率分布函数 |
| stats | 计算该分布的均值,方差,偏度,峰度。[Mean(‘m’), variance(‘v’), skew(‘s’), kurtosis(‘k’)] |
连续型随机变量的常见接口如下:
| 方法名 | 功能 |
|---|---|
| rvs | 生成该分布的随机序列 |
| 概率密度函数 | |
| cdf | 累计概率分布函数 |
| stats | 计算该分布的均值,方差,偏度,峰度。[Mean(‘m’), variance(‘v’), skew(‘s’), kurtosis(‘k’)] |
二. 常见离散分布
1. 二项分布
如果随机变量XXX的分布律为P(X=k)=Cnkpkqn−k,k=0,1,...n,P(X=k) = C^k_np^kq^{n-k},k = 0,1,...n,P(X=k)=Cnkpkqn−k,k=0,1,...n,其中 p+q=1p + q = 1p+q=1 ,则称XXX服从参数为n,pn,pn,p的二项分布,记为X∼B(n,p)X \sim B(n,p)X∼B(n,p)。
- 期望:E(X)=npE(X) = npE(X)=np
- 方差:D(X)=np(1−p)D(X) = np(1 - p)D(X)=np(1−p)
-
画出不同参数下的二项分布,n,pn, pn,p分别为(10,0.3),(10,0.5),(10,0.7)(10,0.3),(10,0.5),(10,0.7)(10,0.3),(10,0.5),(10,0.7)
import numpy as np from scipy.stats import binom import matplotlib.pyplot as plt plt.rcParams["font.family"] = "SimHei" # 设置字体 plt.rcParams["axes.unicode_minus"] = False # 正常显示负号 if __name__ == '__main__': fig, ax = plt.subplots(3, 1, figsize = (10, 10)) # 调整子图间距 fig.subplots_adjust(hspace = 0.5) params = [(10, 0.3), (10, 0.5), (10, 0.7)] for i in range(len(params)): n = params[i][0] p = params[i][1] x = np.arange(0, n + 1) y = binom(n, p).pmf(x) # 计算随机变量的期望,方差 mean, var = binom.stats(n, p, moments='mv') ax[i].scatter(x, y, color = 'blue', marker = 'o') ax[i].set_title('n = {}, p = {}'.format(n, p)) ax[i].set_xticks(x) ax[i].text(1, 0.2, '期望: {:.2f}\n方差: {:.2f}'.format(mean, var)) ax[i].grid() plt.show()运行结果:

-
生成服从不同参数二项分布的随机数组(采样100000次),然后查看数组的频率分布
import numpy as np from scipy.stats import binom import matplotlib.pyplot as plt plt.rcParams["font.family"] = "SimHei" # 设置字体 plt.rcParams["axes.unicode_minus"] = False # 正常显示负号 if __name__ == '__main__': fig, ax = plt.subplots(3, 1, figsize = (10, 10)) # 调整子图间距 fig.subplots_adjust(hspace = 0.5) params = [(10, 0.3), (10, 0.5), (10, 0.7)] for i in range(len(params)): n = params[i][0] p = params[i][1] x = np.arange(0, 11) # 抽样10万次 sample = binom.rvs(n = n, p = p, size = 100000) print(sample) ax[i].hist(sample, color = 'blue',<

最低0.47元/天 解锁文章
488

被折叠的 条评论
为什么被折叠?



