Python中的统计假设检验速查表

编译:yxy

出品:ATYUN订阅号

也许你会使用数百种统计假设检验,但一般在机器学习项目中你只需要使用一小部分。

本文是一个机器学习项目中最流行的统计假设检验的速查表,包含使用Python接口的示例。

每个统计检验都以相同的方式介绍,包括:

  • 检验的名称。
  • 检验的内容是什么。
  • 检验的关键假设。
  • 如何解释检验结果。
  • 用于使用检验的Python接口。

注:当涉及诸如预期的数据分布或样本大小之类的假设时,如果违反了假设,给定检验的结果可能会小幅地降级,而不是在违反假设时立即无法使用。

通常,数据样本需要具有领域代表性,并且要大到足以将其分布暴露给分析。

在某些情况下,可以校正数据以满足假设,例如通过去除离群值将近似正态分布校正为正态,或者在样本具有不同方差时使用统计检验中的自由度校正,命名为二个实例。

最后,对于给定的关注点可能存在多个检验(如,正态性检验)。我们无法通过统计数据获得清晰的问题答案。我们一般得到的是概率答案。因此,我们可以通过以不同的方式思考同一个问题来得到不同的答案。也因此,我们可能需要对数据进行多种不同的检验。

让我们开始吧。

本教程分为四个部分; 他们是:

  1. 正态性检验
  2. 相关性检验
  3. 参数统计假设检验
  4. 非参数统计假设检验

1.正态性检验

本节列出了可用于检查数据是否具有高斯分布的统计检验。

W检验(SHAPIRO-WILK TEST)

检验数据样本是否具有高斯分布。

假设

  • 每个样本中的观察是独立同分布的(iid)。

解释

  • H0:样本具有高斯分布。
  • H1:样本没有高斯分布。

Python代码

from scipy.statsimport shapiro
data1= ....
stat, p= shapiro(data)

更多信息

  • scipy.stats.shapiro:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.shapiro.html
  • 维基百科:https://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test

D’AGOSTINO’S K^2 TEST

检验数据样本是否具有高斯分布。

假设

  • 每个样本中的观察是独立同分布的(iid)。

解释

  • H0:样本具有高斯分布。
  • H1:样本没有高斯分布。

Python代码

from scipy.statsimport normaltest
data1= ....
stat, p= normaltest(data)

更多信息

  • scipy.stats.normaltest:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.normaltest.html
  • 维基百科:https://en.wikipedia.org/wiki/D%27Agostino%27s_K-squared_test

ANDERSON-DARLING检验

检验数据样本是否具有高斯分布。

假设

  • 每个样本中的观察是独立同分布的(iid)。

解释

  • H0:样本具有高斯分布。
  • H1:样本没有高斯分布。

Python代码

from scipy.statsimport anderson
data1= ....
result= anderson(data)

更多信息

  • scipy.stats.anderson:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.anderson.html
  • 维基百科:https://en.wikipedia.org/wiki/Anderson%E2%80%93Darling_test

2.相关性检验

本节列出了可用于检查两个样本是否相关的统计检验。

皮尔逊相关系数( PEARSON CORRELATION COEFFICIENT)

检验两个样本是否具有单调关系。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 每个样本的观察都是正态分布的。
  • 每个样本中的观察具有相同的方差。

解释

  • H0:两个样本是独立的。
  • H1:样本之间存在依赖关系。

Python代码

from scipy.statsimport pearsonr
data1, data2= ...
corr, p= pearsonr(data1, data2)

更多信息

  • scipy.stats.pearsonr:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html
  • 维基百科:https://en.wikipedia.org/wiki/Pearson_correlation_coefficient

SPEARMAN相关系数(SPEARMAN’S RANK CORRELATION)

检验两个样本是否具有单调关系。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 可以对每个样本中的观察进行排序。

解释

  • H0:两个样本是独立的。
  • H1:样本之间存在依赖关系。

Python代码

from scipy.statsimport spearmanr
data1, data2= ...
corr, p= spearmanr(data1, data2)

更多信息

  • scipy.stats.spearmanr:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html
  • 维基百科:https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient

KENDALL秩相关系数(KENDALL’S RANK CORRELATION)

检验两个样本是否具有单调关系。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 可以对每个样本中的观察进行排序。

解释

  • H0:两个样本是独立的。
  • H1:样本之间存在依赖关系。

Python代码

from scipy.statsimport kendalltau
data1, data2= ...
corr, p= kendalltau(data1, data2)

更多信息

  • scipy.stats.kendalltau:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kendalltau.html
  • 维基百科:https://en.wikipedia.org/wiki/Kendall_rank_correlation_coefficient

卡方检验(CHI-SQUARED TEST)

检验两个分类变量是相关的还是独立的。

假设

  • 用于计算列联表的观察是独立的。
  • 列联表的每个单元格中有25个或更多个实例。

解释

  • H0:两个样本是独立的。
  • H1:样本之间存在依赖关系。

Python代码

from scipy.statsimport chi2_contingency
table= ...
stat, p, dof, expected= chi2_contingency(table)

更多信息

  • scipy.stats.chi2_contingency:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chi2_contingency.html
  • 维基百科:https://en.wikipedia.org/wiki/Chi-squared_test

3.参数统计假设检验

本节列出了可用于比较数据样本的统计检验。

T检验(STUDENT’S T-TEST)

检验两个独立样本的均值是否存在显著差异。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 每个样本的观察都是正态分布的。
  • 每个样本中的观察具有相同的方差。

解释

  • H0:样本的均值相等。
  • H1:样本的均值不相等。

Python代码

from scipy.statsimport ttest_ind
data1, data2= ...
stat, p= ttest_ind(data1, data2)

更多信息

  • scipy.stats.ttest_ind:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html
  • 维基百科:https://en.wikipedia.org/wiki/Student%27s_t-test

配对T检验(PAIRED STUDENT’S T-TEST)

检验两个配对样本的均值是否存在显著差异。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 每个样本的观察都是正态分布的。
  • 每个样本中的观察具有相同的方差。 每个样本的观察结果是成对的。

解释

  • H0:样本的均值相等。
  • H1:样本的均值不相等。

Python代码

from scipy.statsimport ttest_rel
data1, data2= ...
stat, p= ttest_rel(data1, data2)

更多信息

  • scipy.stats.ttest_rel:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_rel.html
  • 维基百科:https://en.wikipedia.org/wiki/Student%27s_t-test

方差分析(ANOVA)

测试两个或两个以上独立样本的均值是否存在显著差异。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 每个样本的观察都是正态分布的。
  • 每个样本中的观察具有相同的方差。

解释

  • H0:样本的均值相等。
  • H1:一个或多个样本的均值不相等。

Python代码

from scipy.statsimport f_oneway
data1, data2, ...= ...
stat, p= f_oneway(data1, data2, ...)

更多信息

  • scipy.stats.f_oneway:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.f_oneway.html
  • 维基百科:https://en.wikipedia.org/wiki/Analysis_of_variance

重复测量方差分析检验(REPEATED MEASURES ANOVA TEST)

检验两个或更多配对样本的均值是否存在显著差异。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 每个样本的观察都是正态分布的。
  • 每个样本中的观察具有相同的方差。
  • 每个样本的观察是成对的。

解释

  • H0:样本的均值相等。
  • H1:一个或多个样本的均值不相等。

Python代码

目前在Python中不支持。

更多信息

  • 维基百科:https://en.wikipedia.org/wiki/Analysis_of_variance

4.非参数统计假设检验

曼-惠特尼U检验(MANN-WHITNEY U TEST)

检验两个独立样本的分布是否相等。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 可以对每个样本中的观察进行排序。

解释

  • H0:两个样本的分布相等。
  • H1:两个样本的分布不相等。

Python代码

from scipy.statsimport mannwhitneyu
data1, data2= ...
stat, p= mannwhitneyu(data1, data2)

更多信息

  • scipy.stats.mannwhitneyu:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html
  • 维基百科:https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test

威尔科克森符号秩检验(WILCOXON SIGNED-RANK TEST)

检验两个配对样本的分布是否均等。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 可以对每个样本中的观察进行排序。

解释

  • H0:两个样本的分布均等。
  • H1:两个样本的分布不均等。

Python代码

from scipy.statsimport wilcoxon
data1, data2= ...
stat, p= wilcoxon(data1, data2)

更多信息

  • scipy.stats.wilcoxon:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html
  • 维基百科:https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test

KRUSKAL-WALLIS H检验(KRUSKAL-WALLIS H TEST)

检验两个或多个独立样本的分布是否相等。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 可以对每个样本中的观察进行排序。

解释

  • H0:所有样本的分布均等。
  • H1:一个或多个样本的分布不均等。

Python代码

from scipy.statsimport kruskal
data1, data2, ...= ...
stat, p= kruskal(data1, data2, ...)

更多信息

  • scipy.stats.kruskal:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kruskal.html
  • 维基百科:https://en.wikipedia.org/wiki/Kruskal%E2%80%93Wallis_one-way_analysis_of_variance

FRIEDMAN检验(FRIEDMAN TEST)

检验两个或更多配对样本的分布是否相等。

假设

  • 每个样本中的观察是独立同分布的(iid)。
  • 可以对每个样本中的观察进行排序。
  • 每个样本的观察是成对的。

解释

  • H0:所有样本的分布均等。
  • H1:一个或多个样本的分布不均等。

Python代码

from scipy.statsimport friedmanchisquare
data1, data2, ...= ...
stat, p= friedmanchisquare(data1, data2, ...)

更多信息

  • scipy.stats.friedmanchisquare:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kruskal.html
  • 维基百科:https://en.wikipedia.org/wiki/Friedman_test

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2018-08-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

开发 | Keras版faster-rcnn算法详解(RPN计算)

AI科技评论按:本文首发于知乎专栏Learning Machine,作者张潇捷, AI科技评论获其授权转载。 前段时间学完Udacity的机器学习和深度学习的课...

64511
来自专栏AI科技大本营的专栏

如何用TensorFlow实现基于深度学习的图像补全?看完这篇就明白了

作者|Brandon Amos 译者|@MOLLY && 寒小阳 简介 第一步:将图像理解为一个概率分布的样本 你是怎样补全缺失信息的呢? 但是怎样着手统...

1.9K10
来自专栏marsggbo

贝叶斯优化(Bayesian Optimization)深入理解

tags: 贝叶斯优化,Bayesian Optimization,hyperparameters optimization,Bayes

3961
来自专栏marsggbo

贝叶斯优化(Bayesian Optimization)深入理解

我们都知道神经网络训练是由许多超参数决定的,例如网络深度,学习率,卷积核大小等等。所以为了找到一个最好的超参数组合,最直观的的想法就是Grid Search,其...

3134
来自专栏专知

【论文推荐】最新5篇图像分割相关论文—条件随机场和深度特征学习、移动端网络、长期视觉定位、主动学习、主动轮廓模型、生成对抗性网络

【导读】专知内容组整理了最近五篇视觉图像分割(Image Segmentation)相关文章,为大家进行介绍,欢迎查看! 1. Conditional Rand...

4438
来自专栏Pytorch实践

Pytorch实现Logistic回归二分类

? 摘要:本文主要介绍使用深度学习框架Pytorch实现简单的Logistic回归模型,进而实现简单的分类问题。 一.逻辑回归简述 逻辑回归实质上是线性回...

1.2K14
来自专栏AI研习社

如何用 Caffe 生成对抗样本?这篇文章告诉你一个更高效的算法

Fast Gradient Sign方法 先回顾一下《杂谈CNN:如何通过优化求解输入图像》中通过加噪音生成对抗样本的方法,出自Christian Szeg...

3123
来自专栏贾志刚-OpenCV学堂

使用OpenCV与sklearn实现基于词袋模型(Bag of Word)的图像分类预测与搜索

基于OpenCV实现SIFT特征提取与BOW(Bag of Word)生成向量数据,然后使用sklearn的线性SVM分类器训练模型,实现图像分类预测。实现基于...

4593
来自专栏云时之间

深度学习与TensorFlow:FCN论文翻译(二)

Each layer of data in a convnet is a three-dimensional array of size h × w × d, ...

2142
来自专栏Spark学习技巧

【深度学习】②--细说卷积神经网络

1. 神经网络与卷积神经网络 先来回忆一下神经网络的结构,如下图,由输入层,输出层,隐藏层组成。每一个节点之间都是全连接,即上一层的节点会链接到下一层的每一个节...

4358

扫码关注云+社区

领取腾讯云代金券