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

2018年08月20日 由 yuxiangyu 发表 147609 0
也许你会使用数百种统计假设检验,但一般在机器学习项目中你只需要使用一小部分。

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

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

  • 检验的名称。

  • 检验的内容是什么。

  • 检验的关键假设。

  • 如何解释检验结果。

  • 用于使用检验的Python接口。


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

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

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

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

让我们开始吧。

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

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

  1. 正态性检验

  2. 相关性检验

  3. 参数统计假设检验

  4. 非参数统计假设检验


1.正态性检验


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

w检验(Shapiro-Wilk Test)


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

假设

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


解释

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

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


Python代码
from scipy.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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.stats import 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官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消