Python计算标准正太分布概率密度函数积分

前言

正太分布是一个很重要的概率分布,又名高斯分布,在统计学、数据科学、机器学习等领域有着广泛应用。在日常生活中,人群的身高、鞋码、成年人的血压、班级的成绩、测量误差等都近似服从正太分布。一般来说,如果一个量是由许多微小的独立随机因素影响的结果,那么就可以认为这个量具有正态分布。正太分布曲线呈钟型,两头低,中间高,左右对称,故常称之为钟形曲线。

实现思路

正太分布公式:

f(x)=\frac{1}{\sqrt{2\pi}\delta}e^{-\frac{(x-\mu)^2}{2\delta}}

其中\mu为期望,\delta为方差

当(\mu =0\delta =1)时,有标准正太分布公式:

f(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}

标准正太分布曲线在X-Y坐标轴为一关于Y轴的对称钟型曲线,与X轴围成的面积等于1

随机概率可以通过对概率密度函数f(x)求积分而得

\phi(t)=\int_{-\infty}^tf(x)dx

但是f(x)的积分初等的方法无法求得,可以通过泰勒级数分拆为多个项分步积分,再求和

泰勒公式:

e^x=1+x+\frac{1}{2!}x^2+\frac{1}{3!}x^3+\frac{1}{4!}x^4+\cdots+\frac{1}{n!}x^n=\sum_{n=0}^{+\infty}\frac{1}{n!}x^n

故有:

e^\frac{-x^2}{2}=1-\frac{x^2}{2}+\frac{1}{2!*4}x^4-\frac{1}{3!*8}x^6+\cdots+\frac{(-1)^n}{n!*2^n}x^{2n}=\sum_{n=0}^{+\infty}\frac{(-1)^n}{n!*2^n}x^{2n}

t>0时,进一步有:

\int_{-\infty}^{t}\frac{1}{\sqrt{2\pi}}e^\frac{-x^2}{2}dx=1/2+\frac{1}{\sqrt{2\pi}}\int_{0}^{t}e^\frac{-x^2}{2}dx=1/2+\frac{1}{\sqrt{2\pi}}\int_{0}^{t}\sum_{n=0}^{+\infty}\frac{(-1)^n}{n!*2^n}x^{2n}dx \\ \Rightarrow \int_{-\infty}^{t}\frac{1}{\sqrt{2\pi}}e^\frac{-x^2}{2}dx=1/2+\frac{1}{\sqrt{2\pi}}\sum_{n=0}^{+\infty}\frac{(-1)^n}{n!*2^n*(2n+1)}x^{2n+1}\bigg|_0^t=1/2+\frac{1}{\sqrt{2\pi}}\sum_{n=0}^{+\infty}\frac{(-1)^nt^{2n+1}}{n!*2^n*(2n+1)}\\ \Rightarrow \phi(t)=\int_{-\infty}^{t}\frac{1}{\sqrt{2\pi}}e^\frac{-x^2}{2}dx=1/2+\frac{1}{\sqrt{2\pi}}\sum_{n=0}^{+\infty}\frac{(-1)^nt^{2n+1}}{n!*2^n*(2n+1)}

通过上面公式推导,可以实现将无法用初等方法求出的积分转换为无穷多个多项式的求和,n取得越大,计算结果越准确,取n=50精度已经足够,这样就可以求出标准正太分布概率密度函数积分的近似值(精确到小数点后11位)。以前高中学概率统计正太分布都是查表来得到近似值,现在我们可以写一段python代码来实现。

代码实现

import math

def cal_normal_distribution(t):
    result1=0
    for n in range(0,50):
        result1+=(-1)**n*t**(2*n+1)/(math.factorial(n)*2**n*(2*n+1))
    result2 = 0.5+(1 / math.sqrt(2 * math.pi)) * result1
    print(result2)

if __name__ == '__main__':
    cal_normal_distribution(3)

总结

微积分的本质就是求和,将复杂而连续的问题切分成无穷多个简单或者我们熟悉的部分,然后分别求解,最后将结果组合在一起。泰勒公式在近似计算、估计误差、函数极限的应用很多,体现了微积分“逼近法”的精髓,可以将非线性问题化为线性问题,且具有很高的精确度,是一个很好的数学工具。

最后让我回想起初中学正弦、余弦、正切,记得课本后有三角函数表可以查询,还可以用计算器来计算。那时就在思考一个问题,计算器是怎么计算出任意一个角度的正弦、余弦值呢,更一步的,是怎么实现加减乘除的。后来学了数电,知道了加法器原理,明白了加减乘除的实现过程,再结合高数学过的泰勒公式,似乎恍然大悟了,可以将三角函数转化为多项式的求和来实现。这个比较简单,就不展开详述了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值