Python拟合正态分布
正态分布(也称为高斯分布)是统计学中最常见的分布之一。它具有钟形曲线的形状,对称分布在均值周围。在许多实际应用中,我们需要对数据进行拟合以找到最佳的正态分布模型。在本文中,我们将使用Python编程语言来拟合正态分布并可视化结果。
正态分布简介
正态分布是由高斯函数定义的。其概率密度函数(PDF)如下所示:
$$ f(x) = \frac{1}{{\sigma \sqrt{2\pi}}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$
其中,$x$ 是随机变量,$\mu$ 是均值,$\sigma$ 是标准差。
正态分布具有以下特性:
- 均值、中位数和众数相等;
- 曲线呈钟形,对称分布在均值周围;
- 标准差决定曲线的宽度。
正态分布在自然界和社会科学中广泛应用,例如测量误差、人口统计学、财务数据等。
Python中的正态分布拟合
在Python中,我们可以使用scipy
库中的stats
模块来进行正态分布的拟合。该模块提供了许多用于统计分析的函数和类。
首先,我们需要导入所需的库:
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
接下来,我们生成一组符合正态分布的随机数据:
np.random.seed(0)
data = np.random.normal(loc=0, scale=1, size=1000)
在上述代码中,loc
参数表示均值,scale
参数表示标准差,size
参数表示生成数据的数量。
接下来,我们可以使用fit()
函数来拟合正态分布:
mu, sigma = stats.norm.fit(data)
fit()
函数返回拟合后的均值和标准差。我们可以使用这些参数来计算概率密度函数并绘制拟合曲线:
x = np.linspace(-4, 4, 100)
pdf = stats.norm.pdf(x, mu, sigma)
plt.plot(x, pdf, 'r-', label='fit')
plt.hist(data, bins=30, density=True, alpha=0.6, color='g', label='data')
plt.legend()
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Normal Distribution Fit')
plt.show()
上述代码中,我们使用linspace()
函数生成一组等间距的$x$值,然后使用pdf()
函数计算对应的概率密度函数值。最后,我们使用plot()
函数绘制拟合曲线,使用hist()
函数绘制原始数据的直方图。
运行以上代码,我们将得到一个包含拟合曲线和数据直方图的图形。
示例结果
下面是使用上述代码生成的示例结果:
[![](