📅  最后修改于: 2023-12-03 14:46:11.290000             🧑  作者: Mango
在统计学中,正态分布是一种重要的概率分布,也被称为高斯分布。它在科学和工业界广泛应用,因为许多自然现象的分布都可以近似地描述为正态分布。在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$表示标准差。
我们可以使用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()
方法来计算反函数值。这些方法非常方便,可以帮助我们更好地理解和应用正态分布。