当前位置 主页 > 网站技术 > 代码类 >

    Python求正态分布曲线下面积实例

    栏目:代码类 时间:2019-11-20 12:07

    正态分布应用最广泛的连续概率分布,其特征是“钟”形曲线。这种分布的概率密度函数为:

    其中,μ为均值,σ为标准差。

    求正态分布曲线下面积有3σ原则:

    正态曲线下,横轴区间(μ-σ,μ+σ)内的面积为68.268949%,横轴区间(μ-1.96σ,μ+1.96σ)内的面积为95.449974%,横轴区间(μ-2.58σ,μ+2.58σ)内的面积为99.730020%。

    求任意区间内曲线下的面积,通常可以引用scipy包中的相关函数

    norm函数生成一个给定均值和标准差的正态分布,cdf(x)表示-∞到x的概率

    例:(2,1)正态分布下 2-3曲线下的面积

    >>> import scipy.stats
    >>> scipy.stats.norm(2,1).cdf(3)-0.5
    0.34134474606854293

    由于有时候不便于引用scipy包,自编这一函数也很简单

    求积分函数参考:复化梯形求积分

    cdfd(a,b,u,o)

    a,b 为区间起始范围,u,o分别为正态分布的均值和标准差。

    import math
    
    def pdf(x):
      return math.exp(-(x) ** 2 / (2)) / (math.sqrt(2 * math.pi))
    
    def sum_fun_xk(xk, func):
      return sum([func(each) for each in xk])
    
    def integral(a, b, n, func):
      h = (b - a)/float(n)
      xk = [a + i*h for i in range(1, n)]
      return h/2 * (func(a) + 2 * sum_fun_xk(xk, func) + func(b))
    
    def cdfd(a,b,u,o):
      return integral((a-u)/o,(b-u)/o,10000,pdf)
    
    cdfd(2,3,2,1)
    
    Out: 0.3413399854638336
    
    

    以上这篇Python求正态分布曲线下面积实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持IIS7站长之家。