📜  Python – 统计中的正态分布(1)

📅  最后修改于: 2023-12-03 14:46:11.290000             🧑  作者: Mango

Python – 统计中的正态分布

在统计学中,正态分布是一种重要的概率分布,也被称为高斯分布。它在科学和工业界广泛应用,因为许多自然现象的分布都可以近似地描述为正态分布。在Python中,我们可以使用scipy.stats模块来进行正态分布的计算和可视化。

正态分布的参数

正态分布有两个参数,即均值(mu)和标准差(sigma)。均值定义了分布的中心位置,标准差定义了分布的形状。

正态分布的概率密度函数

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

$$ f(x|\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$

其中,$x$是变量,$\mu$表示均值,$\sigma$表示标准差。

在Python中使用正态分布
计算正态分布的概率密度函数

我们可以使用scipy.stats.norm类来计算正态分布的概率密度函数。例如,计算$x=2$处的概率密度函数值,均值为$0$,标准差为$1$,代码如下:

from scipy.stats import norm

x = 2
mu = 0
sigma = 1

pdf = norm.pdf(x, mu, sigma)

print("pdf({0}) = {1}".format(x, pdf))

输出:

pdf(2) = 0.05399096651318806
生成正态分布的随机数

我们可以使用scipy.stats.norm类的rvs()方法来生成指定均值和标准差的正态分布的随机数。例如,生成$100$个均值为$0$,标准差为$1$的正态分布的随机数,代码如下:

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

mu = 0
sigma = 1

samples = norm.rvs(mu, sigma, size=100)

plt.hist(samples, bins=20, density=True, alpha=0.6, color='g')

x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, norm.pdf(x, mu, sigma), 'r-', lw=2, label='pdf')

plt.legend()
plt.show()

输出结果如下图所示:

正态分布的随机数

计算正态分布的累积分布函数

我们可以使用scipy.stats.norm类的cdf()方法来计算指定均值和标准差的正态分布的累积分布函数值。例如,计算$x=2$处的累积分布函数值,均值为$0$,标准差为$1$,代码如下:

from scipy.stats import norm

x = 2
mu = 0
sigma = 1

cdf = norm.cdf(x, mu, sigma)

print("cdf({0}) = {1}".format(x, cdf))

输出:

cdf(2) = 0.9772498680518208
计算正态分布的反函数

我们可以使用scipy.stats.norm类的ppf()方法来计算指定均值和标准差的正态分布的反函数值。例如,计算$x=0.25$处的反函数值,均值为$0$,标准差为$1$,代码如下:

from scipy.stats import norm

p = 0.25
mu = 0
sigma = 1

x = norm.ppf(p, mu, sigma)

print("ppf({0}) = {1}".format(p, x))

输出:

ppf(0.25) = -0.6744897501960817
小结

在Python中,我们可以使用scipy.stats模块来进行正态分布的计算和可视化。我们可以使用norm类的pdf()方法来计算概率密度函数值,rvs()方法来生成随机数,cdf()方法来计算累积分布函数值,ppf()方法来计算反函数值。这些方法非常方便,可以帮助我们更好地理解和应用正态分布。