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()函数绘制原始数据的直方图。

运行以上代码,我们将得到一个包含拟合曲线和数据直方图的图形。

示例结果

下面是使用上述代码生成的示例结果:

[![](