在对数据进行处理前,有事需要判断数据是否呈正态分布,比如线性回归,比如使用3-sigma判断数据是否异常。常用的正态分布检测方法:
Shapiro-Wilk test
Shapiro-Wilk test是一种在频率上统计检验中检验正态性的方法。该检验的零检验是样本$x_1,\cdots ,x_n$来自于一个正态分布的母体。这个检验的统计量是:
$$W = \frac{(\sum_{i=1}^{n}a_{i}x_{(i)})^2}{\sum_{i=1}^{n}(x_i-\bar{x})^2}$$
其中:
$x_{(i)}$用括号包含下标索引i的;不与x混淆,它是第i阶统计量,即样本中的第i个最小数
$\overline {x}=(x_{1}+\cdots +x_{n})/n$是样本的平均值。
常量$a_i$通过公式$(a_1,\dots ,a_n)=\frac{m^{T}V^{-1}}{\sqrt{(m^{T}V^{-1}V^{-1}m)}}, m=(m_1,\dots ,m_n)^T$,其中$m_1,\dots ,m_n$是从一个标准的正态分布随机变量上采样的有序独立同分布的统计量的期望值。V是这些有序统计量的协方差。
这个统计检验的假设是样本来自于一个正态母体,因此,一方面,如果p值小于选择的显著度水平(通常0.05),那么在更大概率下我们应该拒绝零假设,数据的证据显示我们的样本不是来自一个正态分布母体。另一方面,如果p值比选择的显著度水平大,那么我们没有证据拒绝零假设,数据来自于一个正态分布。
Python代码:
import numpy as np
from scipy import stats
np.random.seed(0