在Python中,检验数据是否符合正态分布可以使用SciPy库中的函数。以下是几种常用的正态性检验方法:
Shapiro-Wilk检验(`scipy.stats.shapiro`)
from scipy import stats
a = np.random.normal(0,1,50) 生成标准正态分布数据
stat, p = stats.shapiro(a) 进行Shapiro-Wilk检验
print(f"统计量:{stat}, P值:{p}")
Kolmogorov-Smirnov检验(`scipy.stats.kstest`)
from scipy import stats
a = np.random.normal(0,1,50) 生成标准正态分布数据
stat, p = stats.kstest(a, 'norm') 进行Kolmogorov-Smirnov检验
print(f"统计量:{stat}, P值:{p}")
Anderson-Darling检验(`scipy.stats.anderson`)
from scipy import stats
a = np.random.normal(0,1,50) 生成标准正态分布数据
result = stats.anderson(a, dist='norm')
print(f"统计量:{result.statistic}, P值:{result.pvalue}")
图(Quantile-Quantile plot)
import matplotlib.pyplot as plt
import numpy as np
a = np.random.normal(0,1,50) 生成标准正态分布数据
stats.probplot(a, plot=plt) 绘制图
plt.show()
直方图和核密度估计(Histogram and KDE)
import matplotlib.pyplot as plt
import numpy as np
a = np.random.normal(0,1,50) 生成标准正态分布数据
plt.hist(a, bins=30, alpha=0.5) 绘制直方图
plt.plot(np.linspace(-3, 3, 100), stats.norm.pdf(np.linspace(-3, 3, 100)), 'r--') 绘制核密度估计
plt.show()
以上方法都可以用来检验数据是否符合正态分布。其中,Shapiro-Wilk检验适用于样本量较小的情况,而Kolmogorov-Smirnov检验适用于样本量较大的情况。Anderson-Darling检验则提供了多个统计量,可以更全面地评估数据是否符合正态分布。图和直方图结合核密度估计也是一种直观的方法,可以用来初步判断数据是否符合正态分布。
请根据您的具体需求选择合适的方法进行正态性检验