• 数学之美_正态分布(Python代码)


    1  在概率统计中,我们针对某个事件当中各个样本发生的概率的频率进行统计,用一个函数的形式写出的这个概率的频率函数就叫做分布函数。

    2  分布函数顾名思义,就是某个连续事件发生频率的汇总表示。再直白一点儿来说,就是一堆事情我们把他们堆砌起来只管的去观察他们的组合特点就叫分布。

    3  这种组合特点有很多种,我们很多时候用图像的形式表示出来,而且针对不同组合的这种图像出现了二项分布、伯努利分布、正态分布等等分布,其实就是把近似于某种组合特点的图像的差别进行分别研究他们的性质等。这里用到的是近似,因为根据iid(独立同分布)的这种性质,任何图形不可能百分比跟我们所观察的这种分布一样,但是随着样本的不断增加,观察的这种组合会越来越近似的趋于某一种分布图像。

    4  在分布中,我们在很多软件中我们会看到这种图像

    其中一根一根的紫色柱子就叫概率频率,其实求分布就是在求概率频率,什么叫做概率频率呢?比如一个样本有1000个数值,如果这个样本中存在各种重复(或者不重复都一样)把他们在这1000个数值中出现的次数进行记录,然后把这些次数按照数值的大小进行正负和大小排列起来就是形成了某种图像,然后我们把每种图像的每一个最高点进行连线,就是叫密度曲线。其实这个很好理解。

    5  我们对于不同的分布,都会对应一个这种分布的标准形式,然后这个标准形式会对应一个分布函数。其实从上面我们就知道,这个分布函数就是求概率频率的值。给函数一个值,返回给你一个概率值,然后把这些值按照大小,出现次数堆砌起来就是这个分布图像。

    6  最常见的就是如上图,曲线跟一个佛堂里面的鈡的外形很像,这个就叫做正太的分布,也叫正太分布,英文叫Normal Distribution。如果都是一一对应,左右对称的样子,那么它就叫做标准正太分布。(但是在处理实际问题的时候很少会遇到标准的正太分布,实际图像近似于这种分布,而且如果是正太的这种分布,随着你样本的不断增加,会无限趋近于标准正太分布,这也叫所谓渐进无偏性。)。这里的正太分布还有一个名字叫做“高斯分布”Guass Distribution,都是一会儿事儿。我们发现高斯大神在数学领域那个地方随时能见到他的身影。要不说是数学王子呢。

    7  废话少说,对应每种分布我们先把他的分布函数写出了:

      这个函数我们看到可以写做两种形式我们知道方差开方等于标注差,这就不用多说了。

      另外,我们另方差为方差为1,均值为0,这个公式变形为如下形式:

      这个玩意儿就叫做标准正太分布,也就是上面那个图像的样子。但是平时的分布如果不太标准的话,就用上面两个式子。

    8  我们用python来写一下这个代码:

     1 Sample = []
     2 i = 0
     3 with open("Raw.txt", "r", encoding="utf-8") as f:
     4     TS = f.readlines()
     5     while i < len(TS):
     6         Sample.append(int(TS[i]))
     7         i += 1
     8 i = 0
     9 
    10 NorN = int(input("输入1位求非标准正太分布,输入0位求标准正太分布"))
    11 import numpy as np
    12 # 求非标准的正太分布
    13 if NorN == 1:
    14 # step 1    求样本的均值
    15     i = 0
    16     avg = 0
    17     while i < len(Sample):
    18         avg = avg + Sample[i]
    19         i += 1
    20     avg = avg / len(Sample)
    21 # step 2    求样本的方差
    22     sigma2 = np.var(Sample, 0)
    23 # step 3    求密度函数
    24     Func = []
    25     i = 0
    26     for i in Sample:
    27         Func.append(round((np.exp(-0.5 * ((i - avg) / sigma2)) / (np.sqrt(2*np.pi*sigma2))), 4))
    28     print(Func)
    29 
    30 if NorN == 0:
    31 # step 1    求样本的均值
    32     avg = int(input("请输入均值,标准为0"))
    33 # step 2    求样本的方差
    34     sigma2 = int(input("请输入方差,标准为1"))
    35 # step 3    求密度函数
    36     Func = []
    37     i = 0
    38     for i in Sample:
    39         Func.append(round((np.exp(-0.5 * ((i - avg) / sigma2)) / (np.sqrt(2 * np.pi * sigma2))), 4))
    40     print(Func)
    41 
    42 
    43 # 输入结果:
    44 # 输入1位求非标准正太分布,输入0位求标准正太分布1
    45 # [0.1173, 0.128, 0.1226, 0.1593, 0.0943, 0.0864, 0.0943, 0.1173, 0.1173, 0.1338, 0.0902, 0.1226, 0.1173, 0.0985, 0.1397, 
    46 # 0.1123, 0.1338, 0.1173, 0.1173, 0.1338, 0.1075, 0.1075, 0.128, 0.1226, 0.1123, 0.1173, 0.0943, 0.1226, 0.128, 0.1029, 0.128, 
    47 # 0.1338, 0.128, 0.1075, 0.1338, 0.1173, 0.1816, 0.1123, 0.1397, 0.1173, 0.1029, 0.1397, 0.1075, 0.1226, 0.1593, 0.0985, 0.1525, 
    48 # 0.1075, 0.1226, 0.1664, 0.1525, 0.0864, 0.1029, 0.1173, 0.1029, 0.1075, 0.1173, 0.1173, 0.1173, 0.128, 0.1123, 0.1123, 0.1029, 
    49 # 0.128, 0.1397, 0.1029, 0.128, 0.1123, 0.1173, 0.1397, 0.1338, 0.1029, 0.1123, 0.1593, 0.1123, 0.1029, 0.0943, 0.1123, 0.1173, 
    50 # 0.1029, 0.1338, 0.128, 0.1226, 0.1173, 0.1338, 0.0985, 0.128, 0.1397, 0.1075, 0.1397, 0.1075, 0.1123, 0.1397, 0.1123, 0.1123, 
    51 # 0.1123, 0.1029, 0.1029, 0.1226, 0.1173, 0.1029, 0.128, 0.1173, 0.1173, 0.1075, 0.0943, 0.1397, 0.0864, 0.1226, 0.1226, 0.1525, 
    52 # 0.1397, 0.1226, 0.1075, 0.0943, 0.0792, 0.1338, 0.146, 0.1173]
    53 
    54 # 输入结果:
    55 # [0.3989, 1.0844, 0.6577, 13.2112, 0.0327, 0.012, 0.0327, 0.3989, 0.3989, 1.7879, 0.0199, 0.6577, 0.3989, 0.054, 2.9478, 0.242, 
    56 # 1.7879, 0.3989, 0.3989, 1.7879, 0.1468, 0.1468, 1.0844, 0.6577, 0.242, 0.3989, 0.0327, 0.6577, 1.0844, 0.089, 1.0844, 1.7879, 
    57 # 1.0844, 0.1468, 1.7879, 0.3989, 59.2083, 0.242, 2.9478, 0.3989, 0.089, 2.9478, 0.1468, 0.6577, 13.2112, 0.054, 8.013, 0.1468, 
    58 # 0.6577, 21.7815, 8.013, 0.012, 0.089, 0.3989, 0.089, 0.1468, 0.3989, 0.3989, 0.3989, 1.0844, 0.242, 0.242, 0.089, 1.0844, 2.9478, 
    59 # 0.089, 1.0844, 0.242, 0.3989, 2.9478, 1.7879, 0.089, 0.242, 13.2112, 0.242, 0.089, 0.0327, 0.242, 0.3989, 0.089, 1.7879, 1.0844, 
    60 # 0.6577, 0.3989, 1.7879, 0.054, 1.0844, 2.9478, 0.1468, 2.9478, 0.1468, 0.242, 2.9478, 0.242, 0.242, 0.242, 0.089, 0.089, 0.6577, 
    61 # 0.3989, 0.089, 1.0844, 0.3989, 0.3989, 0.1468, 0.0327, 2.9478, 0.012, 0.6577, 0.6577, 8.013, 2.9478, 0.6577, 0.1468, 0.0327, 0.0044, 
    62 # 1.7879, 4.8601, 0.3989]

     9  我们少说了一点儿就是直方图和正态分布图。

      (1)  直方图表现的是频数、正态分布图表现的是频率。

      (2)  μ(均值)的大小是影响正太曲线的左移和右移的关系;sigma2(方差)的大小是影响正太曲线的胖瘦。

  • 相关阅读:
    开源 免费 java CMS FreeCMS功能说明单位管理
    用Spring让Java Mail支持简化邮件发送
    Java Mail简化邮件发送+附件发送(源码奉上)
    java common practice to rethrow exceptions
    浅谈Java内存泄露
    全局样式
    求最大公约数和最小公倍数
    求所有水仙花数
    indexedDB数据库的使用
    fileReader读取文件
  • 原文地址:https://www.cnblogs.com/noah0532/p/8526286.html
Copyright © 2020-2023  润新知