在Python中,判断数据是否符合正态分布可以通过以下几种统计检验方法进行:
可视化方法
使用散点图和直方图来观察数据的分布情况。
利用核密度估计(KDE)图来展示数据的概率密度。
统计检验方法
Shapiro-Wilk检验:适用于小样本(样本容量小于5000)的正态分布检验。
Kolmogorov-Smirnov检验(K-S检验):适用于连续分布的检验,原假设为数据符合正态分布。
kstest:是K-S检验的一种实现,可以检验数据是否符合指定的分布类型。
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
生成一组随机数据
data = np.random.normal(0, 1, 500)
可视化方法
fig = plt.figure(figsize=(10, 6))
ax1 = fig.add_subplot(2, 1, 1)
ax1.scatter(range(len(data)), data)
plt.grid()
ax2 = fig.add_subplot(2, 1, 2)
data.hist(bins=30, alpha=0.5, ax=ax2)
data.plot(kind='kde', secondary_y=True, ax=ax2)
plt.grid()
plt.show()
统计检验方法
Shapiro-Wilk检验
stat, p = stats.shapiro(data)
print(f"Shapiro-Wilk Statistic: {stat}, P-value: {p}")
K-S检验
stat, p = stats.kstest(data, 'norm')
print(f"Kolmogorov-Smirnov Statistic: {stat}, P-value: {p}")
使用自定义函数进行正态性检验
def is_normal_distribution(data, alpha=0.05):
stat, p = stats.shapiro(data)
return p > alpha
判断数据是否符合正态分布
is_normal = is_normal_distribution(data)
print(f"数据是否符合正态分布:{is_normal}")
以上代码展示了如何使用可视化方法和统计检验方法来判断一组数据是否符合正态分布。你可以根据数据的特点和需求选择合适的方法进行检验。需要注意的是,统计检验方法得出的结论依赖于所选的显著性水平,通常取0.05。如果P值小于显著性水平,则拒绝原假设,认为数据不符合正态分布;否则,接受原假设,认为数据符合正态分布