基于python/scipy学习概率统计(3):正态分布

这篇具有很好参考价值的文章主要介绍了基于python/scipy学习概率统计(3):正态分布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 前言

2. 概率密度函数(PDF: Probability Density Function)¶

3. 累积分布函数(CDF: Cumulative Distribution Function)

4. 百分点函数(PPF: Percent Point Function)

5. 生成函数和风险函数

6. 常用统计特征

7. 应用示例

7.1 从正态分布中采样

7.2 The 68-95-99.7 Rule

8. Why is the normal distribution useful and important?


1. 前言

        在概率论和统计的世界里,正态分布(Normal Distribution),通常也称为高斯分布(Gaussian Distribution), 是最重要的连续概率分布. 有时候也称为钟形分布,因为它的概率密度函数(pdf)曲线呈钟形曲线(bell curve)的形状。由于大数定律的作用,高斯分布在现实世界中处处可见。进一步,它也可以用于对于其它概率分布的近似表示。所以高斯分布是最常用、最基本、最重要的概率分布(可能不需要之一)。
        遵循正态分布的一维随机变量记为:
                
        或者 
                

        其中表示均值(mean),表示方差(variance),则称为标准偏差(standard deviation).

        

        为了后面的代码示例,首先导入必要的库。

import random
import numpy as np
from scipy.stats import norm
%matplotlib inline
import matplotlib.pyplot as plt

2. 概率密度函数(PDF: Probability Density Function)¶

        与离散随机变量用概率质量函数(PMF)或分布律来表示不同,连续随机变量的概率分布特性用概率密度函数(PDF: Probability Density Function)来刻画。 一维高斯分布的概率密度函数(PMF中通常用大写字母P,而概率密度函数则通常用小写的p或f)如下式所示:

        正态分布的概率密度函数为:

基于python/scipy学习概率统计(3):正态分布

        其中表示均值(mean),表示方差(variance),则称为标准偏差(standard deviation).

        其中均值为0方差为1的正态分布称为标准正态分布。

        正态分布的概率密度函数如下图所示,用scipy.stats中norm类的pdf(x, loc=0, scale=1)函数生成。 缺省参数条件下,norm.pdf()生成标准正态分布的概率密度函数。loc参数用于指定𝜇, scale参数用于指定𝜎。

        scipy.stats还提供了logpdf()用于绘制对数概率密度函数,其调用方法与pdf()相同。

fig, ax = plt.subplots(1,1,figsize=(8,4))
x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
ax.plot(x, norm.pdf(x),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.plot(x, norm.pdf(x,scale=0.25),'k-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
ax.plot(x, norm.pdf(x,scale=0.49),'g-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
ax.plot(x, norm.pdf(x,scale=0.09),'b-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
ax.plot(x, norm.pdf(x,loc = 1, scale=0.16),'y-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm pdf')
ax.grid()
ax.legend()

基于python/scipy学习概率统计(3):正态分布

3. 累积分布函数(CDF: Cumulative Distribution Function)

        标准正态分布的累积分布函数如下所示:

基于python/scipy学习概率统计(3):正态分布

        但是这个积分没有简单的闭式解(closed formula),需要以数值计算的方式进行求解。

        正态分布的概率密度函数如下图所示,用scipy.stats中norm类的pdf(x, loc=0, scale=1)函数生成。 缺省参数条件下,norm.pdf()生成标准正态分布的概率密度函数。loc参数用于指定𝜇, scale参数用于指定𝜎。

        scipy.stats提供了cdf()用于绘制累积分布函数,其调用参数与pdf()相同。 如下为正态分布的累积分布函数曲线绘制代码及运行结果。注意,正态分布的累积分布函数有两个特征:

        (1) 在均值点处到达0.5. 这是因为正态分布是以均值点处左右对称的

        (2) 方差越小,意味着在均值点左右的斜率越大

fig, ax = plt.subplots(1,1,figsize=(8,4))
x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
ax.plot(x, norm.cdf(x),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.plot(x, norm.cdf(x,scale=0.25),'y-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
ax.plot(x, norm.cdf(x,scale=0.49),'b-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
ax.plot(x, norm.cdf(x,scale=0.09),'g-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
ax.plot(x, norm.cdf(x,loc = 1, scale=0.16),'k-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm cdf')
ax.grid()
ax.legend()

 基于python/scipy学习概率统计(3):正态分布

4. 百分点函数(PPF: Percent Point Function)

        百分点函数PPF是CDF的反函数: 

        它回答了“为了得到一定的累积分布概率,CDF相应的输入值是什么”的问题。

        与累积分布函数相同的是,正态分布的百分点函数同样没有闭式表达形式,只能通过数值方式求解。

        scipy.stats提供了ppf(q, loc=0, scale=1)用于求解百分点值。参数loc和scale含义同上,参数q在这里指定所希望得到的累积概率。

        事实上在上面的示例中,我们已经用到了ppf函数,通过以下语句将横坐标(x)取值范围限制到累积分布概率为0.01到0.99之间。

        x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)

        以下代码段绘制了不同参数设定条件下的ppf图。

fig, ax = plt.subplots(1,1,figsize=(8,4))
q = np.linspace(0,1, 200)
ax.plot(q, norm.ppf(q),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.plot(q, norm.ppf(q,scale=0.25),'k-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
ax.plot(q, norm.ppf(q,scale=0.49),'g-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
ax.plot(q, norm.ppf(q,scale=0.09),'b-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
ax.plot(q, norm.ppf(q,loc = 1, scale=0.16),'y-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm ppf')
ax.grid()
ax.legend()

基于python/scipy学习概率统计(3):正态分布

5. 生成函数和风险函数

        生存函数(Survial Function)定义为:𝑆(𝑥)=𝑃𝑟[𝑋>𝑥]=1−𝐹(𝑥)

        S(x)通常用于可靠性分析及其相关领域。

        风险函数为概率密度函数与生存函数之比:  𝐻(𝑥)=𝑓(𝑥)/𝑆(𝑥)=𝑓(𝑥)/(1−𝐹(𝑥))

        由于它们都是基于累积分布函数定义的,自然都没有闭式表达形式,只能通过数值方式求解。

        scipy.stats提供了sf(q, loc=0, scale=1)用于求解生存函数。参数loc和scale含义同上。 风险函数则可以基于以上定义计算而得。

fig, ax = plt.subplots(1,1,figsize=(8,4))
x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
ax.plot(x, norm.cdf(x),'r-', lw=2, alpha=0.6, label='cdf')
ax.plot(x, norm.sf(x),'g-', lw=2, alpha=0.6, label='survival function')
ax.plot(x, norm.pdf(x)/norm.sf(x),'y-', lw=2, alpha=0.6, label='hazard function')
#ax.plot(x, norm.cdf(x,scale=0.25),'y-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
#ax.plot(x, norm.cdf(x,scale=0.49),'b-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
#ax.plot(x, norm.cdf(x,scale=0.09),'g-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
#ax.plot(x, norm.cdf(x,loc = 1, scale=0.16),'k-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm: sf, hf vs cdf')
ax.grid()
ax.legend()

基于python/scipy学习概率统计(3):正态分布

        与生存函数、风险函数相关联的常用概率函数还有累积风险函数(cumulative hazard function),逆生存函数(inverse survival function), 这里就不一一说明了。

6. 常用统计特征

        正态分布由于是基于它的均值和方差进行定义的,所以它的常用统计特征非常简单明了,对于𝑋∼𝑁(𝜇,𝜎^2):

        𝐸[𝑋]=𝜇

        𝑉𝑎𝑟[𝑋]=𝜎^2

        此外,正态分布的中位数(median)和众数(mode)都等于𝜇. 正态分布的取值范围为(−∞,∞)(−∞,∞)

        

        

        正态分布由于是对称的,所以它的Skew为0是,因为Skew就是用于评估偏度的,对称函数的偏度自然为0。

        正态分布的峰度(Kurtosis)为0,事实上,这个是一个定义的问题。以上是scipy.stats中计算峰度的公式(也有不减3的),之所以减3就是将正态分布当作一个基准,-3是要使得正态分布的峰度为0.

        用scipy.stats提供的函数计算正态分布的以上几个统计特征的示例如下:

mean, var, skew, kurt = norm.stats(moments='mvsk')
print('Normal Distribution: \nmean = {0}\nvar = {1}\nskew = {2}\nkurt = {3}\n'.format(mean, var, skew, kurt))

 Output:

Normal Distribution: 
mean = 0.0
var = 1.0
skew = 0.0
kurt = 0.0

7. 应用示例

7.1 从正态分布中采样

r = norm.rvs(0, size=100000)
fig,ax=plt.subplots(1,1)
ax.hist(r, bins='auto', density=True)  # arguments are passed to np.histogram
x = np.linspace(np.min(r),np.max(r),100)
ax.plot(x, norm.pdf(x),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')

ax.set_title("Histogram with 'auto' bins")
ax.grid()

print('sample means of r = {0}'.format(np.mean(r)))
print('sample variance of r = {0}'.format(np.var(r)))

基于python/scipy学习概率统计(3):正态分布

        以上示例是从标准正态分布中采样10000个样点。从直方图可以看出基本上符合钟形曲线的特征(其轮廓也与pdf理论曲线非常吻合),样本均值和样本方差也基本上符合预期。 

7.2 The 68-95-99.7 Rule

        对于正态分布,以均值点为中心的[-\sigma, \sigma]区间的面积大概为68%,这意味着在正态分布总体中68%的样本落在均值加减1个标准偏差范围内。同理,正态分布总体中95%的样本落在均值加减2个标准偏差范围内,正态分布总体中99.7%的样本落在均值加减3个标准偏差范围内。如下图所示:

基于python/scipy学习概率统计(3):正态分布

        可以利用以下代码计算出任意范围内的总概率。 

for k in range(1,6):
    print('prob with [-{0}*sigma, {1}*sigma] = {2}'.format(k,k,norm.cdf(k) - norm.cdf(-k)))
prob with [-1*sigma, 1*sigma] = 0.6826894921370859
prob with [-2*sigma, 2*sigma] = 0.9544997361036416
prob with [-3*sigma, 3*sigma] = 0.9973002039367398
prob with [-4*sigma, 4*sigma] = 0.9999366575163338
prob with [-5*sigma, 5*sigma] = 0.9999994266968562

8. Why is the normal distribution useful and important?

        不管是从理论的角度还是从使用的角度来说,正态分布都可以说是概率统计中最重要的分布。

        (1) 许多经典的统计测试都是基于正态分布假设。在对数据进行这些统计测试时,需要首先确认数据是否符合正态分布。

        (2) 在建模应用中,比如说线性或非线性回归,误差项通常都被假定遵循正态分布。

        (3) 正态分布也被用于在需要假设检验以及置信区间检验中确定显著性水平。

        (4) 现实世界中许许多多的事物或现象都是呈正态分布或者近似于正态分布的。比如说,正常人的身高的分布,智商的分布都是近似于正态分布的。测量误差也通常是呈正态分布。

        (5) 正态分布非常方便于数学处理。在许多实际应用中,基于正态分布理论所开发的应用方法都工作得非常好,即便在处理对象并不是正态分布时。

        (6) 大数定律和中心极限定理从理论上证明了为什么正态分布为什么如此常见以及为什么如此有用。根据中心极限定理,不管原始的总体分布是什么,独立同分布的N个随机变量的平均会随着N的增大而逼近正态分布。第(4)点其实也可以看作是大数定律和中心极限定理的作用在现实世界的一个具体体现。

        The central limit theorem basically states that as the sample size (N) becomes large, the following occur: The sampling distribution of the mean becomes approximately normal regardless of the distribution of the original variable. The sampling distribution of the mean is centered at the population mean, μ, of the original variable. In addition, the standard deviation of the sampling distribution of the mean approaches 𝜎/𝑁.

        本系列计划目录:

        (1) 均匀分布       基于python/scipy学习概率统计(1):均匀分布(Uniform Distribution)_chenxy_bwave的专栏-CSDN博客

        (2) 伯努利分布:  基于python/scipy学习概率统计(2):伯努利分布(Bernoulli Distribution)_chenxy_bwave的专栏-CSDN博客_伯努利分布的概率分布函数

        (3) 正态分布:      基于python/scipy学习概率统计(3):正态分布_chenxy_bwave的专栏-CSDN博客

        (4) 二项分布

        (5) Student-T分布

        (6) Chi-Square分布

        (7) Rayleigh/Rice分布

        (8) Beta分布

        (9) Gamma分布

        (10) 玻尔兹曼分布

        (11) 指数分布

        (12) dirichlet分布

        ......
 

Reference:

[1] 1.3.6.6.1. Normal Distribution

[2] scipy.stats.norm — SciPy v1.7.1 Manual文章来源地址https://www.toymoban.com/news/detail-405140.html

到了这里,关于基于python/scipy学习概率统计(3):正态分布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【概率论与数理统计】猴博士 笔记 p41-44 统计量相关小题、三大分布的判定、性质、总体服从正态分布的统计量小题

    题干: 总体X 有一些样本X1、X2、X3… 解法: 注意,S的分母是 n-1 接下来练习套公式: 例1:直接背公式。 例2: 解:除X,S,n外有其他位置数的就不是统计量。 则,D。 例3: 解: 用到的考点: 还有正态分布的方差。 答案:n-1 题型如下: 题解: 只有三种分布: X(卡方)

    2023年04月08日
    浏览(39)
  • 【小呆的概率论学习笔记】正态分布的代数运算

    0. 正态分布简介 正态分布应该是概率论和数理统计中最重要的一类概率分布,最早的完整论述是由数学王子高斯提出,高斯主要用来分析观测的误差分析中推导出正态分布。虽然随着概率统计学的发展,自然分布形式多种多样,但是正态分布仍然可以说是最重要的自然分布。

    2024年02月11日
    浏览(43)
  • 【概率论】正态分布

    前导知识: 概率密度函数(密度函数):描述一个随机变量的在某个确定的取值点附近的可能性的函数。  随机变量的取值落在某个区域内的概率为概率密度函数在这个区域上的积分。 性质: f(x)=0 数学期望 又称均值,是实验中每次结果的概率乘以其结果的总和,反映随机

    2024年02月13日
    浏览(99)
  • 正态分布的概率密度函数|多种正态分布检验|Q-Q图

    正态分布的概率密度函数(Probability Density Function,简称PDF)的函数取值是指在给定的正态分布参数(均值 μ 和标准差 σ)下,对于特定的随机变量取值 x,计算得到的概率密度值 f(x)。这个值表示了在正态分布下,随机变量取值为 x 的概率密度。 具体地,正态分布的概率密度

    2024年02月07日
    浏览(34)
  • 标准正态分布的概率密度函数和累积分布函数

    标准正态分布概率密度函数: 累积分布函数: 图像:

    2024年02月11日
    浏览(173)
  • 正态分布t个标准差范围内的概率

    如果一个随机变量具有概率密度函数 f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 , − ∞ x ∞ begin{aligned} f(x)=frac{1}{sqrt{2pi} sigma} e^{-frac{(x-mu)^2}{2sigma^2}}, quad -infty x infty end{aligned} f ( x ) = 2 π ​ σ 1 ​ e − 2 σ 2 ( x − μ ) 2 ​ , − ∞ x ∞ ​ 则称X为正态随机变量并记为 X ∼ N

    2024年02月07日
    浏览(45)
  • 概率论之 证明 正态分布的上a 分位点的对称的性质

    公式(Z(a) = -Z(1-a)) 表示正态分布的上(a)分位点与下(1-a)分位点在分布曲线上关于均值的对称性。 左侧 (Z(a)): 这是分布曲线上累积概率为(a)的那个点。也就是说,这是一个使得这个点及其左侧的面积占据整个曲线下方(a)的位置。 右侧 (Z(1-a)): 这是分布曲线上累积概率为(1-a)的

    2024年01月15日
    浏览(23)
  • 统计基础:1.1_正态分布及其检验

      正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由棣莫弗(Abraham de Moivre)在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等

    2024年02月05日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包