统计假设检验入门

数据必须经过解释才能获得意义。

我们可以通过假设结果的特定结构来解释数据,并使用统计方法来确认或拒绝该假设。这种假设称为假设,用于此目的的统计检验称为统计假设检验。

每当我们要对数据分布或应用机器学习中某组结果是否与另一组结果不同做出断言时,都必须依赖统计假设检验。

在本教程中,您将了解统计假设检验以及如何解释和仔细陈述统计检验的结果。

完成本教程后,您将了解:

  • 统计假设检验对于量化数据样本问题的答案非常重要。
  • 统计假设检验的解释需要正确理解 p 值和临界值。
  • 无论显著性水平如何,假设检验的结果仍可能包含误差。

通过我的新书《机器学习统计学启动您的项目,其中包含所有示例的分步教程Python 源代码文件。

让我们开始吧。

  • 2018 年 5 月更新:添加了关于“拒绝”与“未能拒绝”的注释,改进了此问题上的措辞。
  • 2018 年 6 月更新:修正了 I 型和 II 型错误解释中的拼写错误。
  • 2019 年 6 月更新:添加了检验示例和指向 Python 教程的链接。
A Gentle Introduction to Statistical Hypothesis Tests

统计假设检验简明入门
图片由 Kevin Verbeem 拍摄,保留部分权利。

教程概述

本教程分为五个部分;它们是:

  1. 统计假设检验
  2. 统计检验解释
  3. 统计检验中的错误
  4. 假设检验示例
  5. Python 教程

需要机器学习统计学方面的帮助吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

统计假设检验

仅凭数据本身并不有趣。我们真正感兴趣的是对数据的解释。

在统计学中,当我们希望开始提出关于数据的问题并解释结果时,我们使用提供关于答案的置信度或可能性的统计方法。通常,这类方法被称为统计假设检验,或显著性检验。

假设”这个词可能会让您想到科学,我们在科学中研究一个假设。这是正确的思路。

在统计学中,假设检验在给定假设下计算某个量。检验结果使我们能够解释该假设是否成立或该假设是否已被违反。

我们将在机器学习中大量使用的两个具体例子是:

  • 假设数据具有正态分布的检验。
  • 假设两个样本来自同一基础总体分布的检验。

统计检验的假设称为零假设,或简称 H0。它通常被称为默认假设,或假设没有发生任何变化的假设。

违反检验假设通常称为第一假设,简称 H1。H1 实际上是“某些其他假设”的简写,因为我们所知道的只是证据表明 H0 可以被拒绝。

  • 零假设(H0):检验的假设成立,并在一定显著性水平下未能被拒绝。
  • 备择假设(H1):检验的假设不成立,并在一定显著性水平下被拒绝。

在拒绝或未能拒绝零假设之前,我们必须解释检验的结果。

统计检验解释

统计假设检验的结果必须进行解释,我们才能开始做出声明。

这一点可能会让初学者和经验丰富的从业者都感到困惑。

统计假设检验的结果有两种常见形式,它们必须以不同的方式进行解释。它们是 p 值和临界值

解释 p 值

我们通过解释 p 值来描述一个发现是否具有统计显著性。

例如,我们可能对数据样本执行正态性检验,发现数据样本不太可能偏离高斯分布,从而未能拒绝零假设。

统计假设检验可能会返回一个称为 p 或 p 值的值。这是一个我们可以用来解释或量化检验结果并拒绝或未能拒绝零假设的量。这是通过将 p 值与预先选择的称为显著性水平的阈值进行比较来完成的。

显著性水平”通常用希腊小写字母 α 表示。

α 的常用值为 5% 或 0.05。较小的 α 值表示对零假设的解释更为可靠,例如 1% 或 0.1%。

p 值与预先选择的 α 值进行比较。当 p 值小于 α 时,结果具有统计显著性。这表明检测到变化:可以拒绝默认假设。

  • 如果 p 值 > α:未能拒绝零假设(即结果不显著)。
  • 如果 p 值 <= α:拒绝零假设(即结果显著)。

例如,如果我们正在测试数据样本是否正态,并且我们计算出的 p 值为 .07,我们可以这样说:

该检验发现数据样本是正态的,在 5% 的显著性水平下未能拒绝零假设。

显著性水平可以通过从 1 中减去它来反转,从而给出给定观测样本数据的假设的置信水平。

因此,也可以做出以下声明:

该检验发现数据是正态的,在 95% 的置信水平下未能拒绝零假设。

“拒绝”与“未能拒绝”

p 值是概率性的。

这意味着当我们解释统计检验的结果时,我们不知道什么是真或假,只知道什么是可能。

拒绝零假设意味着有足够的统计证据表明零假设看起来不太可能。否则,这意味着没有足够的统计证据来拒绝零假设。

我们可以从拒绝和接受零假设的两分法来看待统计检验。危险在于,如果我们说我们“接受”零假设,这种措辞会暗示零假设是真的。相反,更安全的说法是“未能拒绝”零假设,就像没有足够的统计证据来拒绝它一样。

初次阅读“拒绝”与“未能拒绝”时,会感到非常困惑。你可以在心里将其视为“拒绝”与“接受”,只要你提醒自己结果是概率性的,即使是“接受的”零假设仍然有很小的错误概率。

常见的 p 值误解

本节重点介绍统计检验结果中 p 值的一些常见误解

零假设的真假

p 值的解释并不意味着零假设是真或假。

它确实意味着我们已选择在特定的统计显著性水平上拒绝或未能拒绝零假设,基于经验证据和选择的统计检验。

您仅限于做出概率性声明,而不是关于结果的清晰二元或真/假声明。

p 值作为概率

一个常见的误解是 p 值是给定数据下零假设为真或为假的概率。

在概率中,这将被写成如下:

这是不正确的。

相反,p 值可以被认为是给定统计检验中嵌入的预设假设下数据的概率。

再次使用概率符号,这将写成:

它允许我们推断数据是否符合假设,而不是反过来。

p 值是衡量如果零假设为真,数据样本被观测到的可能性有多大。

事后调整

这并不意味着您可以重新抽样您的领域或调整您的数据样本并重新运行统计检验,直到您达到所需的结果。

这也不意味着您可以在运行测试后选择您的 p 值。

这被称为 p 值操纵或爬山算法,将意味着您呈现的结果将脆弱且不具代表性。在科学中,这充其量是不道德的,最糟糕的是欺诈。

解释临界值

有些检验不返回 p 值。

相反,它们可能会返回一个临界值列表及其相关的显著性水平,以及一个检验统计量。

这些通常是非参数或免分布统计假设检验。

返回 p 值或临界值列表实际上是实现的选择。

结果以类似的方式解释。不是将单个 p 值与预设的显著性水平进行比较,而是将检验统计量与所选显著性水平下的临界值进行比较。

  • 如果检验统计量 < 临界值:未能拒绝零假设。
  • 如果检验统计量 >= 临界值:拒绝零假设。

同样,结果的含义相似,即所选的显著性水平是关于给定数据下拒绝或未能拒绝检验基本假设的概率决策。

结果以与 p 值相同的方式呈现,作为显著性水平或置信水平。例如,如果计算了一个正态性检验,并且将检验统计量与 5% 显著性水平下的临界值进行比较,结果可以表述为

该检验发现数据样本是正态的,在 5% 的显著性水平下未能拒绝零假设。

该检验发现数据是正态的,在 95% 的置信水平下未能拒绝零假设。

统计检验中的错误

统计假设检验的解释是概率性的。

这意味着检验的证据可能表明一种结果,但可能是错误的。

例如,如果 α 为 5%,则表明(最多)20 次中有 1 次由于数据样本中的统计噪声,零假设会被错误地拒绝或未能被拒绝。

给定一个小的 p 值(拒绝零假设)意味着零假设是错误的(我们做对了),或者它是真的并且观察到了一些罕见且不太可能发生的事件(我们犯了一个错误)。如果发生这种类型的错误,则称为假阳性。我们错误地相信拒绝零假设。

或者,给定一个大的 p 值(未能拒绝零假设),这可能意味着零假设是正确的(我们做对了),或者零假设是错误的并且发生了一些不太可能发生的事件(我们犯了一个错误)。如果发生这种类型的错误,则称为假阴性。我们错误地相信统计检验的零假设或假定。

这两种错误各有一个具体的名称。

  • I 型错误:错误地拒绝真实的零假设或假阳性。
  • II 型错误:错误地未能拒绝错误的零假设或假阴性。

所有统计假设检验都有可能犯这两种错误。虚假发现或虚假发现并非不可能;它们是可能发生的。

理想情况下,我们希望选择一个能将这些错误之一的可能性降到最低的显著性水平。例如,一个非常小的显著性水平。尽管 0.05 和 0.01 等显著性水平在许多科学领域都很常见,但像物理学这样的硬科学则更具侵略性。

通常使用 3 * 10^-7 或 0.0000003 的显著性水平,通常称为 5 西格玛。这意味着由于偶然性,该发现发生的概率是 350 万次独立重复实验中的 1 次。使用这样的阈值可能需要更大的数据样本。

然而,这些类型的错误总是存在,在呈现和解释统计检验结果时必须牢记。这也是为什么独立验证研究结果很重要的原因。

假设检验示例

统计假设检验有很多种。

本节列出了一些统计假设检验的常见示例以及它们用于解决的问题类型。

变量分布类型检验(高斯)

  • 夏皮罗-威尔克检验 (Shapiro-Wilk Test)
  • D’Agostino’s K^2 检验
  • 安德森-达令检验 (Anderson-Darling Test)

变量关系检验(相关性)

  • 皮尔逊相关系数
  • 斯皮尔曼等级相关 (Spearman's Rank Correlation)
  • 肯德尔等级相关 (Kendall's Rank Correlation)
  • 卡方检验

比较样本均值(参数)

  • 学生 t 检验
  • 配对学生 t 检验
  • 方差分析检验 (ANOVA)
  • 重复测量方差分析检验 (Repeated Measures ANOVA Test)

比较样本均值(非参数)

  • Mann-Whitney U 检验
  • Wilcoxon 符号秩检验
  • Kruskal-Wallis H 检验
  • Friedman 检验

有关如何使用这些检验的 Python 代码示例,请参阅下一节。

Python 教程

本节提供指向统计假设检验 Python 教程的链接

许多测试的例子

变量分布检验

评估变量关系

比较样本均值

扩展

本节列出了一些您可能希望探索的扩展本教程的想法。

  • 找一篇不使用 p 值呈现结果的研究论文示例。
  • 找一篇呈现统计显著性结果,但对 p 值存在常见误解的研究论文示例。
  • 找一篇呈现统计显著性结果,并正确解释和呈现 p 值和发现的研究论文示例。

如果您探索了这些扩展中的任何一个,我很想知道。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

文章

总结

在本教程中,您了解了统计假设检验以及如何解释和仔细陈述统计检验的结果。

具体来说,你学到了:

  • 统计假设检验对于量化数据样本问题的答案非常重要。
  • 统计假设检验的解释需要正确理解 p 值。
  • 无论显著性水平如何,假设检验的结果仍可能包含误差。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握机器学习统计学!

Statistical Methods for Machine Learning

培养对统计学的实用理解

...通过在 python 中编写代码

在我的新电子书中探索如何实现
机器学习的统计方法

它提供关于以下主题的自学教程
假设检验、相关性、非参数统计、重采样,以及更多...

探索如何将数据转化为知识

跳过学术理论。只看结果。

查看内容

统计假设检验入门的 42 条回复

  1. DC 2018 年 5 月 14 日下午 2:18 #

    可以接受一个假设吗?我以为只是拒绝或未能拒绝。

    • Jason Brownlee 2018 年 5 月 14 日下午 2:25 #

      是的,零假设可以被接受,但这并不意味着它是真的。

      使用“未能拒绝”而不是“接受”是为了提醒您我们不知道什么是真实的,我们只拥有概率性发现的证据。

      • Jarad 2018 年 5 月 18 日下午 1:59 #

        这真的取决于你问谁。一些统计学家对此非常坚决,认为在实验结束时绝不能使用“接受”一词。我认为统计学界的共识是,你绝不能“接受”它。

        • Jason Brownlee 2018 年 5 月 18 日下午 2:42 #

          同意。我们不接受,但未能拒绝。

          对于初学者来说,“拒绝”与“未能拒绝”的两分法非常令人困惑。

          只要初学者承认结果是概率性的,我们不知道真相,那么他们就可以在脑海中思考“接受”/“拒绝”,然后继续进行。

          注意,我更新了帖子并添加了一个关于这个主题的部分,以使事情更清晰。我不想让一群愤怒的统计学家来敲我的门 🙂

  2. Yusoof Raheem 2018 年 5 月 14 日下午 4:20 #

    这很有启发性,很有趣,我很想读更多,非常感谢

  3. Emily P. 2018 年 5 月 15 日凌晨 2:21 #

    嗯,我觉得下面这些短语应该颠倒过来:

    如果 p 值 > α:接受零假设。
    如果 p 值
    如果 p 值 > α:不接受零假设(即拒绝零假设)。
    如果 p 值 < α:接受零假设。

    • Jason Brownlee 2018 年 5 月 15 日上午 8:03 #

      我不这么认为。你为什么这么说?

      小的 p 值(<=0.05)表明有充分证据拒绝零假设。

  4. Scot 2018 年 5 月 15 日凌晨 3:57 #

    另一篇很棒的文章,布朗利先生。我非常喜欢您提到 p 值的解释并不意味着零假设是真或假。我相信这经常被遗忘!

    在章节下
    解释 p 值

    我觉得下面这句话多了一个词:

    例如,我们可能会进行对数据样本进行正态性检验,发现这不太可能

    我想您是想说:

    例如,我们可能会对数据样本进行正态性检验,发现这不太可能

  5. MM 2018 年 5 月 18 日下午 12:58 #

    可以用 Excel 测试假设检验(p 值)吗?

    • Jason Brownlee 2018 年 5 月 18 日下午 2:38 #

      我相信你可以。抱歉,我不知道怎么做。

  6. Anthony The Koala 2018 年 5 月 18 日下午 1:25 #

    尊敬的Jason博士,
    您遇到过这样的情况吗:如果您拒绝零假设,就有机会接受它。反之,如果您接受零假设,就有可能拒绝它?

    换句话说,如果您遇到假阳性或假阴性,该怎么办。请参阅 https://en.wikipedia.org/wiki/Type_I_and_type_II_errors

    谢谢你,
    贝尔菲尔德的安东尼

    • Jason Brownlee 2018 年 5 月 18 日下午 2:40 #

      p 值是概率性的,所以总有出错的可能性,特别是发现是统计巧合而非代表性的情况。

      过去,如果我对实验结果持怀疑态度,我会

      ——重复实验多次,看看我们是否遇到了巧合
      ——增加样本量以提高发现的稳健性。
      ——仍然使用结果。

      设计足够好的实验以信任结果需要很大的纪律性。关心你的声誉并将你的声誉押在结果上。真正的科学家很少。真正的科学很难。

  7. Fabian Ockenfels 2018 年 6 月 4 日凌晨 3:11 #

    “例如,如果 α 为 5%,则表明(最多)20 次中有 1 次零假设会被错误地拒绝或未能被拒绝,因为数据样本中存在统计噪声。”

    这部分是不正确的。虽然 5% 的 α 值确实限制了 I 型错误(假阳性)的概率,但它不会以相同的方式影响 II 型错误。在指定显著性水平 α 下,“错误地未能拒绝”(假阴性)H0 最多 20 次中有一次的说法不成立。

    在 II 型错误的情况下,您感兴趣的是控制 β。有关参考,请参阅 https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2996198/#!po=87.9310 (α,β,AND POWER)

  8. Stas 2019 年 4 月 16 日下午 5:55 #

    > 较小的 α 值表示对零假设的解释更为可靠
    请问“更可靠的解释”是什么意思?这是否意味着在 α 值较小的情况下需要更多的调查?

    • Jason Brownlee 2019 年 4 月 17 日上午 6:56 #

      一个更可能的结果。

      • Dr.Suvendu Kumar Mohanty 2019 年 12 月 17 日凌晨 12:15 #

        非常有用

        • Jason Brownlee 2019 年 12 月 17 日上午 6:36 #

          谢谢。

        • Mayur Mhaske 2021 年 3 月 3 日上午 6:20 #

          假设检验具体在哪个阶段使用?数据收集、清洗、模型创建还是准确性计算?
          假设我们未能拒绝零假设,那么创建模型的下一步是什么?
          您能举一个在机器学习中创建模型时进行假设检验的实时示例吗?

          • Jason Brownlee 2021 年 3 月 3 日上午 8:05 #

            它主要用于模型选择,例如,这些模型/配置之间的差异是否显著。

  9. Mhzed 2019 年 4 月 17 日下午 4:45 #

    嗨,Jason,

    我觉得,通过一个具体的例子(正如您在其他文章中经常做的那样)将进一步提高这篇已经非常出色的文章的可读性,并具有更高的置信水平,🙂

  10. Sudhanshu 2019 年 6 月 8 日上午 10:51 #

    嗨,Jason,

    为了检查两组方差是否相等,我们使用 F 检验,将 s1^2/s2^2 与 F 分布进行比较,其中 F 分布的自由度等于 s1 和 s2,s1^2 和 s2^2 是两个分布的估计方差。

    我想我们也可以做 s1^2 -s2^2 并将其与卡方分布进行比较,这将是卡方检验。我想我们不这样做是因为 Neyman-Pearson 引理,它说似然检验是最强大的,而这里 F 检验是 LR 检验。

    然而,我不明白为什么我们不做 (s1^2-s2^2)/(s2^2) 的检验,就像我们在多重线性回归中检验系数子集的显著性时所做的那样。为什么我们在多重线性回归中从似然比中减去 1,而这里却没有。是什么驱动了检验统计量的设计?

    我真的需要帮助来理解这一点。我搜索了整个网络,但找不到任何答案。

    提前感谢

    • Jason Brownlee 2019 年 6 月 9 日上午 6:18 #

      抱歉,我没有比较方差的教程,希望以后能涵盖。

  11. Sudhanshu 2019 年 6 月 11 日上午 11:41 #

    嗨,Jason。我需要您的帮助来理解这个技术细节。为什么这两个统计量的设计存在矛盾。

    • Jason Brownlee 2019 年 6 月 11 日下午 2:22 #

      你具体是什么意思?能详细说明一下吗?

  12. Yoni Krichevsky 2019 年 12 月 16 日下午 8:09 #

    嗨,Jason,
    我认为上面的链接有拼写错误。“如何在 Python 中计算参数统计假设检验”这句话在谈论参数和非参数链接时都出现了两次。
    感谢您的精彩网站!
    Yoni

  13. Jose 2020 年 4 月 10 日上午 7:52 #

    嗨,Jason!
    您无法想象您的文章对我学习 Python、机器学习和统计学有多大帮助,非常感谢您撰写这些文章......
    只是一个观察

    它说

    如果 p 值 > α:未能拒绝零假设(即不显著结果)。
    它应该说

    如果 p 值 > α:未能拒绝零假设(即不显著结果)。

    我知道这是一个小问题,但您精彩的文章值得没有任何错误......
    再次感谢
    José

  14. Krishnamita Banerjee 2020 年 5 月 22 日下午 6:28 #

    我认为 II 类错误是真阴性,而不是假阴性!!

  15. Shamine 2021 年 12 月 14 日下午 7:04 #

    嗨,Jason,

    我有一些数据,其中包含技术技能、角色和评级(好、差、一般)变量。技术技能根据角色进行聚类。我的零假设是:到处都有的技能是差技能,备择假设是:并非到处都有的技能不是差技能。我有 500 个观测数据。我有点困惑在这种情况下使用哪种检验。请给我一些指导。

    谢谢。

    • Adrian Tam
      Adrian Tam 2021 年 12 月 15 日上午 7:21 #

      首先你需要定义什么是差技能以及什么是“到处”。统计假设是关于概率分布的。你需要用分布来表达你的假设。

  16. Waheed 2022 年 2 月 4 日上午 10:23 #

    你好杰森,相信你一切安好,感谢你制作了这个很棒的页面。
    关于统计显著性检验,我有三个问题。

    作为新手,有时我有些主题无法完全理解。其中之一是检查统计显著性。例如,当我进行 A/B 测试时,我明白在查看效应大小之前,我必须检查我的结果是否具有统计显著性(p 值检验)。

    1. 问题
    我有一个问题,那就是我是否只在假设检验的背景下进行统计显著性检验?当我考虑在训练模型之前进行 EDA 时,这个问题就出现了。到目前为止,我还没有对数据集进行任何统计显著性检验。我做了一些研究,发现这对于深度学习用例可能至关重要。但通常有人说,如果你正在使用机器学习,那么对底层分布没有合理的假设,所以它通常不适用。

    2. 问题
    但是你可以进行统计显著性检验:
    ——在构建模型后,在测试集上进行检查——>“测试集上的表现如何代表总体表现?”
    ——检查性能指标是否具有统计显著性

    当我查看这些要点时,我想到其他指标,例如交叉验证、准确率、召回率。这些还不够好吗?

    3. 问题
    在您上面的帖子中提到,您可以在假设数据具有正态分布(假设检验)的情况下使用统计显著性检验。难道不是通过视觉检查数据是否呈正态分布或检查以下各项更容易吗?
    ——偏度
    ——峰度
    ——均值=众数=中位数?

    感谢您的帮助,提前谢谢!干杯

  17. Kenny Goodness 2022 年 2 月 28 日上午 9:27 #

    “我们可以通过假设结果具有特定结构,并使用统计方法来确认或拒绝该假设来解释数据。”

    应该是

    “我们可以通过假设结果具有特定结构,然后使用统计方法来确认或拒绝该假设来解释数据。”

    • James Carmichael 2022 年 2 月 28 日上午 11:56 #

      感谢您的反馈,Kenny!

  18. Mohammad 2022 年 4 月 9 日上午 8:09 #

    感谢 Jason 撰写的所有博客,您是一位出色的导师。

    但是,我有一个分类 Python 程序,它在 P 值和 T 值上比较了四种算法。对于每种算法,我运行了三次,捕获了它们的值、p 值和 T 检验。对预测标签和原始标签进行了比较。最后,我使用箱线图绘制了 p 值和测试值。

    我的问题是
    您认为哪种算法是最好的(比较 t 值和 p 值)以及为什么?箱线图中 T 检验的平均值越高越好,对吗?

    非常感谢您的提前帮助..

留言

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。