Python

您所在的位置:网站首页 多维随机变量的分布函数 Python

Python

#Python| 来源: 网络整理| 查看: 265

前言

《Python人工智能:原理、实践及应用》中随机变量分布的学习。 随机变量可能取得的值,可以把它们分为两种基本类型:离散型和连续型

离散型

离散型随机变量即在一定区间内变量取值为有限个或可数个。 离散型随机变量根据不同的概率分布有伯努利分布、二项分布、几何分布、泊松分布、超几何分布等。

连续型

连续型随机变量即在一定区间内变量取值有无限个,或数值无法一一列举出来。 连续型随机变量根据不同的概率分布有均匀分布、指数分布、正态分布、伽马分布等。

代码实现 伯努利分布(Bernoulli Distribution)

伯努利分布(Bernoulli Distribution)又称两点分布或0-1分布, 其样本空间中只有两个点,一般取为{0,1},不同的伯努利分布只是取到这两个值的概率不同。 伯努利分布只有一个参数 ,记作 X ~ B e r n o u l l i ( p ) X~Bernoulli(p) X~Bernoulli(p),或 X ~ B ( 1 , p ) X~B(1, p) X~B(1,p),读作 X X X服从参数为 p p p的伯努利分布

import numpy as np from scipy import stats import matplotlib.pyplot as plt def bernoulli_pmf(p=0.0): """ 抛硬币 描述离散型随机变量的概率质量分布函数(Probability Mass Function,PMF) :param p: 硬币正面朝上的概率 :return: """ ber_dist = stats.bernoulli(p) x = [0, 1] x_name = ['0', '1'] pmf = [ber_dist.pmf(x[0]), ber_dist.pmf(x[1])] plt.bar(x, pmf, width=0.15) plt.xticks(x, x_name) plt.ylabel('Probability') plt.title('PMF of bernoulli distribution') plt.show() bernoulli_pmf(p=0.3)

在这里插入图片描述

二项式分布

如果把一个伯努利分布独立地重复 n次,就得到了一个二项分布。 二项分布是最重要的离散型概率分布之一。随机变量 要满足这个分布有两个重要条件: ①各次试验的条件是稳定的; ②各次试验之间是相互独立的。

一个随机变量 服从参数为 n n n和 p p p的二项分布,记作 X ~ B i n o m i a l ( n , p ) X~Binomial(n , p) X~Binomial(n,p)或 X ~ B ( n , p ) X~B( n, p) X~B(n,p)。

利用抛硬币的例子来比较伯努利分布和二项分布的区别。

如果将抛一次硬币看作一次伯努利实验,且将正面朝上记为1,反面朝上记为0。那么抛 n n n次硬币,记录正面朝上的次数 Y Y Y, 就服从二项分布。 假如硬币是均匀的, 取值应该大部分集中在 n / 2 n/2 n/2附近,而非常大或非常小的值都很少。由此可见,二项分布关注的是计数,而伯努利分布关注的是比值( 正面朝上的计数 / n 正面朝上的计数/ n 正面朝上的计数/n)。 import numpy as np from scipy import stats import matplotlib.pyplot as plt def binom_dis(n=1, p=1): """ n=20, p=0.6的二项分布,表示每次试验抛硬币,该硬币正面朝上的概率大于背面朝上的概率,共抛20次并记录正面朝上的次数。 :param n: 次数 :param p: 正面朝上的概率 :return: """ binom_dis = stats.binom(n, p) # ppf 累积分布函数(cdf)的反函数 x = np.arange(binom_dis.ppf(0.0001), binom_dis.ppf(0.9999)) print(x) # [ 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.] fig, ax = plt.subplots(1, 1) ax.plot(x, binom_dis.pmf(x), 'bo', label='binom pmf') ax.vlines(x, 0, binom_dis.pmf(x), colors='b', lw=5, alpha=0.5) ax.legend(loc='best', frameon=False) plt.ylabel('Probability') plt.title('PMF of binomial distribution(n = {}, p = {})'.format(n, p)) plt.show() binom_dis(n=20, p=0.6)

在这里插入图片描述

泊松分布

如果某事件以固定强度随机且独立地出现,该事件在单位时间内出现的次数(个数)可以看成是服从泊松分布。 我们把一个随机变量 X X X服从参数为 λ \lambda λ 的泊松分布,记作 X ~ P o i s s o n ( λ ) X~Poisson( \lambda) X~Poisson(λ),或 X ~ P (  l a m b d a ) X~P(\ lambda) X~P( lambda)。泊松分布适合于描述单位时间内随机事件发生次数的概率分布

import numpy as np from scipy import stats import matplotlib.pyplot as plt def poisson_pmf(mu=3): poisson_dis = stats.poisson(mu) # print(poisson_dis.ppf(0.001)) # print(poisson_dis.ppf(0.999)) # print(poisson_dis.cdf(0.001)) x = np.arange(poisson_dis.ppf(0.001), poisson_dis.ppf(0.999)) # print(type(x)) # print(poisson_dis.pmf(x)) print(x) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.] fig, ax = plt.subplots(1, 1) # 子图行列数为 1 ax.plot(x, poisson_dis.pmf(x), 'bo', ms=8, label='Poisson pmf') # matplotlib库的axiss模块中的Axes.vlines()函数用于在从ymin到ymax的每个x处绘制垂直线。 ax.vlines(x, 0, poisson_dis.pmf(x), colors='b', lw=5, alpha=0.5) # 图例位置 图例边框 ax.legend(loc='best', frameon=False) plt.ylabel('Probability') plt.title('PMF of poisson distribution(mu = {})'.format(mu)) plt.show() poisson_pmf(mu=8)

在这里插入图片描述

均匀分布(Uniform Distribution)

均匀分布(Uniform Distribution)是最简单的连续型概率分布,因为其概率密度是一个常数,不随随机变量取值的变化而变化。 如果连续型随机变量 具有如下的概率密度函数,则称 服从 [ a , b ] [ a, b] [a,b]上的均匀分布,记作 X ~ U ( a , b ) X~U( a, b) X~U(a,b)或 X ~ U n i f ( a , b ) X~Unif( a, b) X~Unif(a,b)。 f ( x ) = { 1 / ( b − a ) , a < x < b 0 , x < a 或 x > b f(x)=\begin{cases}1 / (b - a), &a< x < b \\ 0 ,& x< a 或 x > b\end{cases} f(x)={1/(b−a),0,​a 0 \\ 0, &其他 \end{cases} f(x)={λ∗e−λ∗e,0,​x>0其他​ 就称 X X X为服从参数 lambda 的指数分布(Exponential Distribution),记作 X ~ E ( λ ) X~E(\lambda ) X~E(λ)或 X ~ E x p ( λ ) X~Exp(\lambda ) X~Exp(λ)。指数分布只有一个参数 λ \lambda λ,且 λ > 0 \lambda >0 λ>0。

指数分布的一个显著的特点是其具有无记忆性。

import numpy as np from scipy import stats import matplotlib.pyplot as plt def exponential_dis(loc=0, scale=1.0): """ 指数分布, exponential continuous random variable 按照定义,指数分布只有一个参数lambda, 这里的scale = 1 / lambda :param loc: 定义与的左端点,相当于将整体分布沿x轴平移loc :param scale: lambda的倒数,loc + scale表示该分布的均值, scale ^ 2表示该分布的方差 :return: """ exp_dis = stats.expon(loc=loc, scale=scale) x = np.linspace(exp_dis.ppf(0.000001), exp_dis.ppf(0.999999), 100) fig, ax = plt.subplots(1, 1) # 直接传入参数 ax.plot(x, stats.expon.pdf(x, loc=loc, scale=scale), 'r-', lw=5, alpha=0.6, label='exponential pdf') # 从冻结的均匀分布取值 ax.plot(x, exp_dis.pdf(x), 'k-', lw=2, label='frozen pdf') # 计算pdf分别等于0.001、0.5和0.999是的x值 vals = exp_dis.ppf([0.001, 0.5, 0.999]) print(vals) # [2.00100067e-03 1.38629436e+00 1.38155106e+01] # 检测cdf和pdf的精确度 print(np.allclose([0.001, 0.5, 0.999], exp_dis.cdf(vals))) # True r = exp_dis.rvs(size=10000) ax.hist(r, density=True, histtype='stepfilled', alpha=0.2) plt.ylabel('Probability') plt.title('PDF of Exp(0.5)') ax.legend(loc='best', frameon=False) plt.show() exponential_dis(loc=0, scale=2)

在这里插入图片描述

正态分布(Normal Distribution

正态分布(Normal Distribution),也称常态分布,又名高斯分布(Gaussian Distribution),最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。正态分布是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。正态曲线呈钟形,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称其为钟形曲线。

若随机变量X 服从一个数学期望为 μ μ μ 、方差为 σ 2 σ^2 σ2的正态分布,记为 N ( μ , σ 2 ) N( μ, σ^2) N(μ,σ2)。 其概率密度函数为正态分布的期望值 μ μ μ 决定了其位置,其标准差 σ σ σ决定了分布的幅度。 当 μ = 0 , σ = 1 μ =0, σ=1 μ=0,σ=1时的正态分布是标准正态分布

概率密度函数为 f ( x ) = ( 1 / σ ∗ 2 π ) ∗ e − ( x − μ ) 2 / 2 σ 2 ) f(x) = (1 / σ * \sqrt{2π}) * e^{-(x-μ)^2} / 2σ^2) f(x)=(1/σ∗2π ​)∗e−(x−μ)2/2σ2)

正态分布中的两个参数含义如下:

当固定 σ σ σ,改变 μ μ μ 的大小时, f ( x ) f(x) f(x)图形的形状不变,只是沿着轴作平移变换,因此 μ μ μ 被称为位置参数(决定对称轴的位置);当固定 μ μ μ,改变 σ σ σ 的大小时, f ( x ) f(x) f(x)图形的对称轴不变,形状改变, σ σ σ越小,图形尖峰越陡峭。 σ σ σ越大,图形越平坦,因此 σ σ σ被称为尺度参数,决定曲线的分散程度。 import math import numpy as np from scipy import stats import matplotlib.pyplot as plt u = 0 # 均值μ sig = math.sqrt(0.2) # 标准差σ x = np.linspace(u - 3 * sig, u + 3 * sig, 50) y_sig = np.exp(-(x - u) ** 2 / (2 * sig ** 2)) / (math.sqrt(2 * math.pi) * sig) print(x) print('=' * 20) print(y_sig) plt.plot(x, y_sig, 'r-', linewidth=2) plt.grid(True) plt.show()

在这里插入图片描述

总结

随机变量的性质主要有两类:

一类是大而全的性质,这类性质可以详细描述述所有可能取值的概率, 例如描述连续型随机变量的累积分布函数(Cumulative Distribution Function,CDF)、概率密度函数(Probability Density Function,PDF), 描述离散型随机变量的概率质量分布函数(Probability Mass Function,PMF)等;另一类是找 到 该 随 机 变 量 的 一 些 特 征 或 代 表 值 , 例 如 随 机 变 量的 方 差(Variance)、期望(Expectation)、置信区间等数字特征。

以上是我个人在学习过程中的记录所学,希望对正在一起学习的小伙伴有所帮助!!! 如果对你有帮助,希望你能一键三连【关注、点赞、收藏】!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3