请点击阅读原文,在语雀中查看
https://www.yuque.com/alipayqgthu1irbf/sharkfin/enrzni
翻译自
https://machinelearningmastery.com/statistical-hypothesis-tests-in-python-cheat-sheet/
应用机器学习中需要的17种统计假设检验的快速参考指南,并提供Python中的示例代码。
虽然有数百种统计假设检验可以使用,但只有一小部分子集可能需要在机器学习项目中使用。
在这篇文章中,你将看到一个机器学习项目中最流行的统计假说检验的手册,其中有使用Python API的例子。每一个统计检验的表述方式都是一致的,包括。检验的名称
检验的内容。
检验的关键假设。
测试结果如何解释。
使用测试的Python API。
注意,当涉及到数据的预期分布或样本大小等假设时,如果违反了某个假设,某个测试的结果很可能会优雅地退化,而不是立即变得不可用。
一般来说,数据样本需要具有领域的代表性,并且足够大,以暴露其分布进行分析。
在某些情况下,可以对数据进行修正以满足假设,例如通过去除离群值将近似正态分布修正为正态分布,或者当样本具有不同的方差时,在统计测试中使用对自由度的修正,这是两个例子。
最后,对于一个给定的关注点,如正态性,可能有多种检验方法。我们无法通过统计学得到问题的明确答案;相反,我们得到的是概率性的答案。因此,我们可以通过考虑问题的不同方式,对同一问题得出不同的答案。因此,我们对数据的一些问题可能需要进行多种不同的检验。
目录正态性检验
相关性检验
平稳性检验
参数统计假设检验
非参数统计假设检验
夏皮罗-威尔克检验
D'Agostino's K^2检验
安德森-达林检验
皮尔逊相关系数
斯皮尔曼秩相关
Kendall's Rank Correlation
卡方检验
Augmented Dickey-Fuller
Kwiatkowski-Phillips-Schmidt-Shin案
学生T检验
配对学生T检验
方差分析检验(ANOVA)
重复计量方差分析检验
Mann-Whitney U检验
Wilcoxon Signed-Rank检验
Kruskal-Wallis H检验
弗里德曼检验
本教程分为5个部分,它们是:。
1. 正态性检验 Normality Tests
本节列出了可以用来检查数据是否具有高斯分布的统计测试。
夏皮罗-威尔克测试 Shapiro-Wilk Test假设
解释H0:样本具有高斯分布。
H1:样本不具有高斯分布。
每个样本中的观测值都是独立和相同分布的(iid)。
Python代码# Example of the Shapiro-Wilk Normality Test
from scipy.stats import shapiro
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
stat, p = shapiro(data)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('Probably Gaussian')
else:
print('Probably not Gaussian')
更多资料A Gentle Introduction to Normality Tests in Python
scipy.stats.shapiro
Shapiro-Wilk test on Wikipedia
D'Agostino's K^2检验 D’Agostino’s K^2 Test测试数据样本是否具有高斯分布。
假设
解释H0:样本具有高斯分布。
H1:样本不具有高斯分布。
每个样本中的观测值都是独立和相同分布的(iid)。
Python Code# Example of the D'Agostino's K^2 Normality Test
from scipy.stats import normaltest
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
stat, p = normaltest(data)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('Probably Gaussian')
else:
print('Probably not Gaussian')
More InformationA Gentle Introduction to Normality Tests in Python
scipy.stats.normaltest
D’Agostino’s K-squared test on Wikipedia
安德森-达林检验 Anderson-Darling Test测试数据样本是否具有高斯分布。
假设
解释H0:样本具有高斯分布。
H1:样本不具有高斯分布。
每个样本中的观测值都是独立和相同分布的(iid)。
Python Code# Example of the Anderson-Darling Normality Test
from scipy.stats import anderson
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
result = anderson(data)
print('stat=%.3f' % (result.statistic))
for i in range(len(result.critical_values)):
sl, cv = result.significance_level[i], result.critical_values[i]
if result.statistic < cv:
print('Probably Gaussian at the %.1f%% level' % (sl))
else:
print('Probably not Gaussian at the %.1f%% level' % (sl))
More InformationA Gentle Introduction to Normality Tests in Python
scipy.stats.anderson
Anderson-Darling test on Wikipedia
2. 相关性检验 Correlation Tests
This section lists statistical tests that you can use to check if two samples are related.
皮尔逊相关系数 Pearson’s Correlation Coefficient检验两个样本是否有线性关系。
假设
解释H0:两个样本是独立的。
H1:样本之间有 dependency。
每个样本中的观测值都是独立和相同分布的(iid)。
每个样本中的观测值都是正态分布。
每个样本中的观测值具有相同的方差。
Python Code# Example of the Pearson's Correlation test
from scipy.stats import pearsonr
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [0.353, 3.517, 0.125, -7.545, -0.555, -1.536, 3.350, -1.578, -3.537, -1.579]
stat, p = pearsonr(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('Probably independent')
else:
print('Probably dependent')
More InformationHow to Calculate Correlation Between Variables in Python
scipy.stats.pearsonr
Pearson’s correlation coefficient on Wikipedia
斯皮尔曼秩相关 Spearman’s Rank Correlation检验两个样本是否有单调关系(monotonic relationship)。
假设
解释H0:两个样本是独立的。
H1:样本之间有dependency。
每个样本中的观测值都是独立的、同分布的(iid)。