百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

15个 Python统计假设测试(备忘单)

toyiye 2024-09-14 13:38 3 浏览 0 评论


应用于机器学习的15个统计假设测试速查指南,附 Python代码

尽管在日常开发中会用到数以百计的统计假设测试,但在机器学习实际项目中可能只需要使用到其中一小部分。

在本文中,将涵括最流行的Python API的机器学习项目统计假设测试的备忘单。

每项统计测试均以下述统一的方式给出,包括:

  • 测试名称
  • 测试检测内容
  • 测试的关键假设是
  • 如何解释测试结果
  • 用于测试的Python API。

注:当涉及到数据的预期分布或样本大小这样的假设时,即使在不满足假设的情况下,给定测试的结果也可能会不尽如人意,但是也不会无法使用。

通常,数据样本域必须足够大,以便能够分析出它们的分布。

在某些情况下,可以对数据进行校正以满足假设,例如:可以通过删除异常值将接近正态分布修正为正态分布,或在样本有不同方差时使用对自由度的修正。

最后,可能会对某一特定问题进行多项测试,例如:正态化。有时不能用统计数据直接得出清晰的答案,测试后得到的答案却是概率。为此,可以利用不同的方式考虑同一个问题,得出不同的答案。所以,对于某些数据问题,需要进行多个不同的测试。

在我的新书中会涉及:统计假设检验、重采样方法,估计统计和非参数方法,并附有有29个进阶教程和完整的源代码。让我们开始吧。

教程概述

本教程分为以下四部分:

1.正态性测试

1. Shapiro-Wilk测试

2. D’Agostino’s K^2测试

3. Anderson-Darling测试

2. 相关性测试

1. Pearson相关系数

2.Spearmans序相关性

3 Kendall序相关性

4 Chi-Squared测试。

3 参数统计假设测试

1.学生t测试

2.配对学生t测试

3.方差分析测试(ANOVA)

4.重复测量方差分析(ANOVA)测试

4.非参数统计假设测试

1.Mann-Whitney U测试

2.Wilcoxon带符号序测试

3.Kruskal-Wallis H测试

4.Friedman测试

1. 正态性测试

本节所列出的统计测试,可以利用它们来检查数据是否为高斯分布。

Shapiro-Wilk测试

测试数据样本是否为高斯分布。

假设:

  • 各样本中的观察数据独立同分布(iid)。

解释:

  • H0:样本为高斯分布。
  • H1:样本为非高斯分布。

Python代码。

  • 详细信息请参考:
  • scipy.stats.shapiro
  • 维基百科:Shapiro-Wilk 测试

D’Agostino’s K^2 测试

测试数据样本是否为高斯分布。

假设:

各样本中的观察数据独立同分布(iid)。

解释

H0:样本为高斯分布。

H1:样本为非高斯分布。

Python代码

详细信息请参考:

  • scipy.stats.normaltest
  • 维基百科:D’Agostino’s $K$-squared 测试

Anderson-Darling测试

测试数据样本是否为高斯分布。

假设

·各样本中的观察数据独立同分布(iid)。

解释

H0:样本为高斯分布。

H1:样本为非高斯分布。

Python代码

  • 详细信息请参考:
  • scipy.stats.anderson
  • 维基百科:Anderson-Darling测试

2. 相关性测试

本节所列出的统计测试,可利用它们来检查两个样本是否相关。

Pearson相关系数

检验两个样本是否线性相关。

假设:

·各样本中的观察数据独同分布(iid)。

·各样本中的观测数据呈正态分布。

·各样本的观测数据有相同的方差。

解释

·H0:两个样本之间相互独立。

·H1:样本之间存在依存关系。

Python代码

  • 详细信息请参考:
  • scipy.stats.pearsonr
  • 维基百科:Pearson相关系数

Spearman序相关性

测试两个样本是否存在单调关系。

假设

·各样本中的观察数据独立同分布(iid)。

·各样本中的观测数据可以进行排序。

解释

·H0:两个样本之间相互独立。

·H1:样本之间存在依存关系。

Python代码

详细信息请参考:

  • scipy.stats.spearmanr
  • 维基百科:Spearman序相关系数

Kendall序相关性

测试两个样本是否存在单调关系。

假设

  • 各样本中的观察数据独立同分布(iid)。
  • 各样本中的观测数据都可以进行排序。

解释

H0:两个样本之间相互独立。

H1:样本之间存在依存关系。

Python代码。

详细信息请参考:

  • scipy.stats.kendalltau
  • 维基百科Kendall序相关系数

Chi-Squared测试

测试两个范畴变量是相关的还是独立的。

假设

·计算相依表时使用的观察数据是独立的。

·相依表的每个单元格中至少有25个例子。

解释

·H0:两个样本之间相互独立。

·H1:样本之间存在依存关系。

Python代码

详细信息请参考:

  • scipy.stats.chi2_contingency
  • 维基百科:Chi-Squared测试

3. 参数统计假设测试

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

学生t测试

测试两个独立样本的均值是否有显著不同。

假设

·各样本中的观察结果独立同分布(IID)。

·各个样本中的观察数据呈正态分布。

·各样本中的观察数据具有相同的方差。

解释

·H0:样本的均值相等。

·H1:样本的均值不等。

Python代码

详细信息请参考:

  • scipy.stats.ttest_ind
  • 维基百科:Student’s t-test测试

成对的学生t测试

测试两个样本对的均值是否存在显着性差异。

假设

·各样本中的观测数据是独立同分布的(Iid)。

·各样本中的观测数据呈正态分布。

·各样本的观测数据有相同的方差。

·各样本的观测数据成对出现。

解释

·H0:样本的均值相等。

·H1:样本的均值不等。

Python代码

详细信息请参考:

  • scipy.stats.ttest_rel
  • 维基百科:Student’s t-test测试

方差分析(ANOVA)测试

测试两个或多个独立样本的均值是否存在显着性差异。

假设

  • ·各样本中的观测数据独立同分布 (Iid)。
  • 各样本中的观测数据呈正态分布。
  • 各样本的观测数据有相同的方差。

解释

·H0:样本的均值相等。

·H1:一个或多个样本的均值不等。

Python代码

重复测量方差分析(ANOVA)测试

测试两个或更多样本对的均值是否存在显着性差异。

假设

  • 各样本中的观测数据独立同分布 (Iid)。
  • 各样本中的观测数据呈正态分布。
  • 各样本的观测数据有相同的方差。
  • 各样本的观测数据成对。

解释

·H0:样本的均值相等。

·H1:一个或多个样本的均值不等。

Python代码

目前Python不支持这种测试。

4. 非参数统计假设测试

MannWhitney U测试。

测试两个独立样本的分布是否相等。

假设

·各样本中的观测数据为独立同分布的(Iid)。

·可对各样本中的观察数据进行排序。

解释

·H0:样本之间同分布。

·H1:样本之间分布不同。

Python代码

详细信息请参考:

  • scipy.stats.mannwhitneyu
  • 维基百科:Mann-Whitney U 测试

Wilcoxon带符号 –序测试

测试样本对的分布是否相等。

假设:

  • 各样本中的观测数据为独立同分布 (Iid)。
  • 可对各样本中的观察数据进行排序。
  • 各样本的观察数据是成对的。

解释

H0:样本之间同分布。

H1:样本之间的分布不等。

Python代码。

详细信息请参考:

  • scipy.stats.wilcoxon
  • 维基百科 signed-rank 测试

Kruskal-Wallis H 测试

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

假设

·各样本中的观察数据独立同分布(IID)。

·可对各样本中的观察数据进行排序。

解释:

·H0:所有样本同分布。

·H1:一个或多个样本的分布不相同。

Python代码

详细信息请参考:

  • scipy.stats.kruskal
  • 维基百科Kruskal-Wallis方差分析

Friedman 测试

测试两对或多对样本的分布是否相等。

假设

·各样本中的观察数据独立同分布(IID)。

·可对各样本中的观察数据进行排序。

·各样本的观测数据成对。

解释

·H0:所有样本同分布。

·H1:一个或多个样本的分布不同。

Python代码

详细信息请参考:

  • scipy.stats.friedmanchisquare
  • 维基百科Friedman测试

课外阅读

如果想深入了解本专题的话,本节给出了更多关于本主题的参考资料。

  • ·Python正态测试通论
  • ·如何利用相关性来理解变量之间的关系?
  • 如何利用Python进行的参数统计测试?
  • 统计假设测试通论

总结

在本教程中,对机器学习项目中可能需要用到的重要的统计假设测试做了介绍。

具体而言,通过本文可以了解到:

  • 在不同应用环境下使用到的不同种类的测试,如:正态性检查、变量之间的关系和样本之间的差异。
  • 每个测试的关键假设以及如何解释测试结果。
  • ·如何使用Python API实现该测试。

还有问题吗?

可在下面的评论中提出你的问题,我会尽量作答。

我是否遗漏了一项重要的统计测试?或者遗漏了列表中的测试的关键假设?请在下面的评论中告诉我。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码