Python如何拟合正态分布曲线

Python如何拟合正态分布曲线

作者:Joshua Lee发布时间:2026-01-07阅读时长:0 分钟阅读次数:8

用户关注问题

Q
怎样使用Python估计正态分布的参数?

我有一组数据,想知道如何用Python来估计正态分布的均值和标准差?

A

用Python估计正态分布参数的方法

在Python中,可以使用SciPy库的stats模块里的norm.fit方法来估计正态分布的参数。这个方法接受你的数据数组作为输入,返回对应的均值和标准差。示例代码如下:

from scipy import stats
import numpy as np

data = np.array([...])  # 替换为你的数据
mu, std = stats.norm.fit(data)
print(f"估计的均值: {mu}, 标准差: {std}")
Q
如何用Python绘制拟合后的正态分布曲线?

我已经得到数据的均值和标准差,想用Python绘制对应的正态分布曲线,该怎么做?

A

使用Matplotlib绘制拟合的正态分布曲线

可以借助Matplotlib和NumPy,先生成一组连续的x值,再用scipy.stats.norm.pdf计算对应的概率密度函数值,最后绘制曲线。例如:

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

mu, std = 0, 1  # 替换为你的估计值
x = np.linspace(mu - 4*std, mu + 4*std, 1000)
pdf = norm.pdf(x, mu, std)

plt.plot(x, pdf, label='拟合的正态分布曲线')
plt.legend()
plt.show()
Q
如何验证数据是否适合用正态分布拟合?

我想知道我的数据是不是可以用正态分布来拟合,有什么Python方法可以做假设检验?

A

使用正态性检验判断数据适合度

可以使用Python的SciPy库中的正态性检验方法,如Shapiro-Wilk检验、Kolmogorov-Smirnov检验或Anderson-Darling检验。示例是Shapiro检验:

from scipy import stats

stat, p = stats.shapiro(data)
if p > 0.05:
    print("数据符合正态分布假设")
else:
    print("数据不符合正态分布假设")

p值大于0.05时,表示无足够证据拒绝数据为正态分布的假设。