diff --git a/docs/0.md b/docs/0.md deleted file mode 100644 index 8467ff737cc539443dec746d858f5668b141c48f..0000000000000000000000000000000000000000 --- a/docs/0.md +++ /dev/null @@ -1,41 +0,0 @@ -# 零、前言 - -## 0.1 本书为什么存在? - -2018 年,我开始在斯坦福大学教授统计学本科课程(psych 10/stats 60)。我以前从未教过统计学,这是一个振作起来的机会。我对心理学的本科统计教育越来越不满意,我想把一些新的想法和方法带到课堂上。特别是,我希望采用 21 世纪实际统计实践中越来越多使用的方法。正如 Brad Efron 和 Trevor Hastie 在他们的《计算机时代统计推断:算法、证据和数据科学》一书中所阐述的那样,这些方法利用了当今日益增强的计算能力,以远远超出标准方法的方式解决统计问题。E 通常在心理学本科生的统计学课程中教授。 - -在我教这门课的第一年,我用安迪·菲尔德的令人惊叹的图形小说《统计学的冒险》作为教科书。这本书有许多我真正喜欢的东西——特别是,我喜欢它围绕模型的构建构建构建统计实践的框架,并以足够的谨慎对待无效假设测试(在我看来,尽管没有足够的轻蔑)。不幸的是,我的大多数学生都讨厌这本书,主要是因为它涉及到大量的故事,以获得统计知识。我还发现它是想要的,因为有很多主题(特别是那些来自人工智能领域,被称为机器学习(htg0)的主题),我想包括但没有在他的书中讨论。我最终感觉到学生们最好能得到一本跟我讲课很近的书,所以我开始把我的讲课写进一套计算笔记本,最终成为这本书。这本书的提纲大致遵循菲尔德书的提纲,因为讲课最初大部分是基于这本书的流程,但内容却大不相同(而且也不那么有趣和聪明)。 - -## 0.2 你不是统计学家-我们为什么要听你的? - -我受过心理学家和神经科学家的训练,而不是统计学家。然而,我过去 20 年对脑成像的研究需要使用复杂的统计和计算工具,这需要我自学许多统计学的基本概念。因此,我认为我有一个坚实的感觉,什么样的统计方法是重要的科学战壕。几乎可以肯定的是,这本书中有些东西会让一个真正的统计学家恼火(例如,我确信有些地方我应该在变量上放一个![](img/4fdfcc4c22892cfa15494d9d626fc389.jpg)但没有)。 - -尽管如此,我欢迎拥有比我更专业的统计知识的读者的意见。 - -## 0.3 为什么是 R? - -在我的课程中,学生学习使用 R 语言实际分析数据。“为什么是 R?”可以解释为“为什么 R 而不是像(在这里插入名称)这样的图形软件包?”毕竟,我班上的大多数学生以前从来没有编程过,所以把他们教给编程将使他们从统计学概念的教学中脱离出来。我的答案是,我认为学习统计工具的最佳方法是直接使用数据,而使用图形包会使人与数据和方法隔离开来,从而阻碍真正的理解。此外,对于我班的许多学生来说,这可能是他们接触编程的唯一课程;鉴于编程在越来越多的学术领域中是必不可少的能力,我认为为这些学生提供基本的编程知识对他们的学习至关重要。未来的成功,并希望能激励他们中的至少一些人学习更多。 - -这个问题也可以解释为“为什么 R 而不是(在这里插入语言)”。在这个问题上,我更加矛盾,因为我非常不喜欢 R 作为编程语言(我非常喜欢 Python)。那我为什么要用它?这个问题的第一个答案是实际的——几乎所有潜在的助教(大部分是我们系的研究生)都有 R 方面的经验,因为我们的研究生统计课程使用 R。事实上,他们中的大多数人在 R 方面的技能比我强得多!另一方面,他们中相对较少的人拥有 Python 方面的专业知识。因此,如果我想要一支技能熟练的助教队伍,使用 R 是有意义的。 - -另一个原因是免费的 rstudio 软件使新用户使用 r 相对容易。特别是,我喜欢 Rmarkdown 笔记本功能,它允许将叙述性代码和可执行代码与集成输出混合在一起。它在精神上类似于我们许多人在 Python 编程中使用的 Jupyter 笔记本,但我发现它更容易处理,因为您将其编辑为纯文本文件,而不是通过 HTML 接口。在我的课上,我给学生一个问题集的框架 rmarkdown 文件,他们提交文件并添加解决方案,然后我使用一组自动评分脚本评分。 - -## 0.4 数据的黄金时代 - -在这本书中,我尽可能使用真实数据中的例子。这现在很容易,因为我们正在开放数据集中游泳,因为政府、科学家和公司越来越多地免费提供数据。我认为使用真实数据集很重要,因为它让学生准备好使用真实数据而不是玩具数据集,我认为这应该是统计培训的主要目标之一。它还帮助我们认识到(正如我们将在书中的不同点看到的那样),数据并不总是会出现在我们准备分析的地方,而且常常需要 _ 争论 _ 来帮助它们成形。使用真实数据还表明,通常在统计方法中假定的理想化统计分布并不总是适用于真实世界——例如,正如我们将在第[4 章](#summarizing-data)中看到的,一些真实世界数量的分布(如 Facebook 上的朋友数)可能非常长的尾巴可以打破许多标准假设。 - -## 0.5 开源书籍 - -这本书是一个活生生的文件,这就是为什么它的来源可以在[https://github.com/poldrack/psych10-book](https://github.com/poldrack/psych10-book)在线获得的原因。如果您在本书中发现任何错误或想提出改进建议,请在 Github 网站上打开一个问题。更好的方法是,提交一个请求,其中包含您建议的更改。 - -本书根据[Creative Commons 属性非商业 2.0 通用(CC BY-NC 2.0)许可证](https://creativecommons.org/licenses/by-nc/2.0/)获得许可。有关详细信息,请参阅该许可证的条款。 - -## 0.6 确认 - -我首先要感谢苏珊·福尔摩斯,她首先激励我考虑写我自己的统计书。露西金提供了整本书的详细评论和编辑,并帮助清理代码,使之与 tidyverse 一致。迈克尔·亨利·泰斯勒对贝叶斯分析一章提供了非常有用的评论。特别感谢 Bookdown 软件包的创建者谢一辉(音译)改进了书籍对 Bookdown 功能的使用(包括用户通过编辑按钮直接生成编辑的功能)。 - -我还要感谢其他提供了有益的评论和建议的人:阿塔纳西奥斯的原爸爸,韦斯利·坦西,杰克·范·霍恩。 - -感谢以下 Twitter 用户提供的有用建议:@noriverbend - -感谢以下个人/用户名通过 Github 或电子邮件提交编辑或问题:Mehdi Rahim、Shanathanan Modchalingam、Alan He、Wenjin Tao、Martijn Stegeman、Dan Kessler、Philipp Kuhnke、James Kent、Michael Waskom、Alexander Wang、Isis Anderson、Albane Valenzuela、Chuanji Gao、JA 萨里·里科·赫雷拉、巴斯克维奇、嘉明港、卡洛西瓦尔、香港唐、特维尔、埃佩森、布雷特利扎贝特。 \ No newline at end of file diff --git a/docs/00.md b/docs/00.md new file mode 100644 index 0000000000000000000000000000000000000000..7264404272cf8eef54b6b5025b7c68416b362edd --- /dev/null +++ b/docs/00.md @@ -0,0 +1,65 @@ +
+ +# 前言 + +这本书的目标是讲述统计的故事,因为它今天被全世界的研究人员使用。这与大多数统计学入门书籍讲述的故事不同,后者侧重于教授如何使用一套工具来实现非常具体的目标。这本书侧重于理解*统计思维*的基本思想——一种关于我们如何描述世界和使用数据做出决策和预测的系统思维方式,所有这些都是在现实世界中存在的固有不确定性的背景下进行的。它还带来了当前的方法,这些方法只有在过去几十年计算能力惊人增长的情况下才变得可行。在20世纪50年代可能需要几年时间的分析现在可以在标准的笔记本电脑上几秒钟内完成,这种能力释放了使用计算机模拟以新的和强大的方式提出问题的能力。 + +这本书也是在自2010年以来席卷许多科学领域的再现性危机之后写的。这场危机的一个重要根源在于研究人员使用(和滥用)统计假设检验的方式(正如我在本书最后一章详述的那样),这与统计教育直接相关。因此,这本书的一个目标是强调当前的统计方法可能有问题的方式,并提出替代方案。 + +
+ +## 0.1 这本书为什么会存在? + +2018年,我开始在斯坦福大学教授本科统计学课程(Psych 10/Stats 60)。我以前从未教过统计学,这是一个改变现状的机会。我对心理学本科统计教育越来越不满意,我想给班级带来一些新的想法和方法。特别是,我想利用在21世纪的实际统计实践中日益广泛使用的方法。正如Brad Efron和Trevor Hastie在他们的书《计算机时代的统计推断:算法、证据和数据科学》中所描述的那样,这些方法利用了当今日益增长的计算能力来解决统计问题,远远超出了通常在心理学学生的本科统计学课程中教授的更标准的方法。 + +我教这门课的第一年,我使用了安迪·菲尔德令人惊叹的图形小说《统计学的冒险》作为教材。这本书有很多地方是我非常喜欢的——特别是,我喜欢它围绕模型的构建来构建统计实践的方式,并且非常谨慎地对待零假设检验。不幸的是,我的许多学生不喜欢这本书(除了英语专业的学生,他们喜欢这本书!),主要是因为它涉及涉水通过大量的故事,以获得统计知识。我还发现它不够全面,因为有许多主题(特别是那些来自人工智能新兴领域的主题,被称为*机器学习*)我想包括在内,但没有在他的书中讨论。我最终觉得,学生们最好读一本与我的讲座紧密相关的书,所以我开始把我的讲座写在一套计算笔记本上,这些笔记本最终成为了这本书。这本书的大纲大致遵循菲尔德的书,因为讲座最初在很大程度上是基于那本书的流程,但内容是本质上不同的(几乎可以肯定的是,少得多的乐趣和聪明)。我还为我们在斯坦福使用的10周季度系统量身定制了这本书,这比大多数统计教科书建立的16周学期提供的时间更少。 + +
+ +
+ +## 0.2 数据的黄金时代 + +在本书中,我尽可能使用真实数据中的例子。这现在非常容易,因为我们正在开放的数据集中游泳,因为政府、科学家和公司越来越多地免费提供数据。我认为使用真实数据集很重要,因为它让学生准备好使用真实数据而不是玩具数据集,我认为这应该是统计培训的主要目标之一。它还帮助我们认识到(正如我们将在整本书的不同地方看到的),数据并不总是随时可供我们分析,通常需要*争论*来帮助它们成形。使用真实数据还表明,统计方法中经常假设的理想化统计分布在现实世界中并不总是成立的——例如,正如我们将在第 [3](#summarizing-data) 章中看到的,一些现实世界数量的分布(如脸书上的朋友数量)可能有非常长的尾部,可以打破许多标准假设。 + +我首先道歉,数据集严重以美国为中心。这主要是因为许多演示的最佳数据集是作为R包提供的国家健康和营养检查调查(NHANES)数据集,还因为R包中包含的许多其他复杂数据集(如`fivethirtyeight`包中的数据集)也位于美国。如果你对其他地区的数据集有什么建议,请告诉我! + +
+ +
+ +## 0.3 做统计的重要性 + +真正学好统计学的唯一方法就是*做*统计。虽然历史上许多统计课程是使用点击式统计软件教授的,但统计教育越来越多地使用开源语言,学生可以用这些语言编写自己的分析。我认为,能够对自己的分析进行编码对于深入理解统计分析是至关重要的,这就是为什么我在斯坦福大学的课程中的学生除了从本书中学到的理论知识之外,还应该学习使用R统计编程语言来分析数据。 + +这本教科书有两个在线伙伴,可以帮助读者开始学习编程;[一个专注于R编程语言](https://statsthinking21.github.io/statsthinking21-R-site/),[另一个专注于Python语言](https://statsthinking21.github.io/statsthinking21-python/)。两者都是目前正在进行中的工作-请随时贡献! + +
+ +
+ +## 0.4 一本开源的书 + +这本书旨在成为一份活的文件,这也是为什么它的来源可以在https://github.com/statsthinking21/statsthinking21-core网上找到。如果您发现书中有任何错误,或者想提出如何改进的建议,请在Github网站上发表。更好的是,提交一个包含您建议的更改的拉请求。 + +这本书是根据[知识共享署名-非商业性2.0通用(CC BY-NC 2.0)许可](https://creativecommons.org/licenses/by-nc/2.0/)授权的。有关详细信息,请参阅该许可的条款。 + +
+ +
+ +## 0.5 致谢 + +我首先要感谢苏珊·霍尔曼,是他第一次激励我考虑写一本自己的统计学书籍。Anna Khazenzon提供了早期的评论和灵感。Lucy King对整本书提供了详细的评论和编辑,并帮助清理代码,使其与Tidyverse保持一致。迈克尔·亨利·特斯勒在贝叶斯分析一章中提供了非常有用的评论。还要特别感谢Bookdown软件包的创建者Yihui Xie,他改进了Bookdown功能的使用(包括用户通过编辑按钮直接生成编辑内容的能力)。最后,珍妮特·芒福德为整本书提供了非常有用的建议。 + +我还要感谢提供了有益的意见和建议的其他人:Athanassios Protopapas,Wesley Tansey,Jack Van Horn,Thor Aspelund。 + +感谢以下推特用户的有益建议:@enoriverbend + +感谢通过Github或电子邮件提供编辑或问题的以下个人:Isis Anderson、Larissa Bersh、Isil Bilgin、Forrest Dollins、Gao、Nate Guimond、Alan He、吴、、Dan Kessler、Philipp Kuhnke、Leila Madeleine、Lee Matos、Ryan McCormick、Jarod Meng、Kirsten Mettler、Shanaathanan Modchalingam、Martijn Stegeman、Mehdi Rahim、Jassary Rico-Herrera、Mingquian Tan、Tao、Laura Tobar、Albane + +特别感谢Isil Bilgin帮助修复了其中的许多问题。 + +
+ +
\ No newline at end of file diff --git a/docs/01.md b/docs/01.md new file mode 100644 index 0000000000000000000000000000000000000000..c9938fb30844aa7d8455e7854e630aa79cf50af9 --- /dev/null +++ b/docs/01.md @@ -0,0 +1,138 @@ +
+ +# 1 简介 + +"总有一天,统计思维会像读写能力一样成为高效公民的必要条件."赫伯特·乔治·威尔斯 + +
+ +## 1.1 什么是统计思维? + +统计思维是一种理解复杂世界的方式,它用相对简单的术语描述复杂的世界,但仍能捕捉到其结构或功能的基本方面,并让我们知道我们对这些知识有多不确定。统计思维的基础主要来自数学和统计学,但也来自计算机科学、心理学和其他研究领域。 + +我们可以将统计思维与其他不太可能准确描述世界的思维形式区分开来。特别是,人类的直觉经常试图回答我们使用统计思维可以回答的相同问题,但经常得到错误的答案。例如,近年来大多数美国人报告说,他们认为暴力犯罪比前一年更严重。然而,对实际犯罪数据的统计分析表明,事实上自20世纪90年代以来,暴力犯罪已经稳步*下降*。直觉让我们失望,因为我们依赖最佳猜测(心理学家称之为*试探法*),而这往往会出错。例如,人类经常使用*可用性试探法*来判断某个事件(如暴力犯罪)的流行程度——也就是说,我们可以多么容易地想到一个暴力犯罪的例子。由于这个原因,我们对犯罪率上升的判断可能更多地反映了新闻报道的增加,尽管犯罪率实际上是下降了。统计思维为我们提供了更准确地理解世界和克服人类判断偏见的工具 + +
+ +
+ +## 1.2 应对统计焦虑 + +许多人带着许多恐惧和焦虑来到他们的第一堂统计学课,尤其是当他们听说为了分析数据他们还必须学习编码时。在我的课堂上,我在第一节课之前给学生做了一个调查,以测量他们对统计数据的态度,要求他们按照1(非常不同意)到7(非常同意)的等级对一些陈述进行评级。调查中有一项是“一想到要参加统计学课程,我就紧张”。在最近的一堂课上,几乎三分之二的学生给出了五分或更高的答案,大约四分之一的学生表示他们非常赞同这一说法。所以如果你对开始学习统计学感到紧张,你并不孤单。 + +焦虑让人感觉不舒服,但心理学告诉我们,这种情绪唤醒实际上可以通过集中我们的注意力,帮助我们在许多任务上做得更好。因此,如果你开始对本书中的内容感到焦虑,提醒自己许多其他读者也有类似的感觉,这种情绪激发实际上可以帮助你更好地学习材料(即使看起来不像!). + +
+ +
+ +## 1.3 统计能为我们做什么? + +我们可以利用统计数据做三件主要的事情: + +* *描述*:世界是复杂的,我们往往需要用一种我们能理解的简化方式来描述。 + +* *决策*:我们经常需要根据数据做出决策,通常是在面临不确定性的情况下。 +* 预测:我们经常希望根据我们对以前情况的了解来预测新的情况。 + +让我们来看一个例子,围绕一个我们很多人都感兴趣的问题:我们如何决定吃什么是健康的?有许多不同的指导来源;政府饮食指南,饮食书籍,博客,仅举几例。让我们关注一个具体的问题:我们饮食中的饱和脂肪是一件坏事吗? + +我们可以用常识来回答这个问题。如果我们吃脂肪,那么它会直接转化为我们体内的脂肪,对吗?而且我们都看过动脉被脂肪堵塞的照片,所以吃脂肪会堵塞我们的动脉,对吧? + +我们回答这个问题的另一种方式是听权威人士的意见。美国美国食品药品监督管理局的膳食指南将“健康的饮食模式限制饱和脂肪”作为其主要建议之一。你可能希望这些指南基于良好的科学,在某些情况下确实如此,但正如尼娜·泰科尔兹在她的书《大惊喜》中概述的那样,这一建议似乎更多地基于营养研究人员的长期教条,而不是实际证据。 + +最后,我们可以看看实际的科学研究。让我们先来看看一项名为PURE study的大型研究,该研究调查了来自18个不同国家的13.5万多人的饮食和健康结果(包括死亡)。在对这个数据集的分析之一中(发表于2017年*The Lancet*; Dehghan等人( [2017](ch020.xhtml#ref-dehg:ment:zhan:2017) ) ),纯粹的调查者报告了一项分析,分析了在人们被跟踪的时间内,各种类型的宏量营养素(包括饱和脂肪和碳水化合物)的摄入与死亡可能性之间的关系。人们被随访的中位时间为7.4年,这意味着研究中一半的人被随访的时间更短,另一半被随访超过7.4年。图 [1.1](#fig:PureDeathSatFat) 绘制了该研究的一些数据(摘自论文),显示了饱和脂肪和碳水化合物的摄入与任何原因导致的死亡风险之间的关系。 + +![A plot of data from the PURE study, showing the relationship between death from any cause and the relative intake of saturated fats and carbohydrates.](../media/file0.png) + +图1.1:PURE研究的数据图,显示了任何原因导致的死亡与饱和脂肪和碳水化合物的相对摄入量之间的关系。 + +这个图是基于十个数字。为了获得这些数据,研究人员将135,335名研究参与者(我们称之为“样本”)分成5组(“五分位数”),根据他们对任一种营养物质的摄入量进行排序;第一个五分位数包含摄入量最低的20%的人,第五个五分位数包含摄入量最高的20%的人。然后,研究人员计算了在他们被跟踪期间,每一组中的人死亡的频率。该图通过与最低五分之一人口相比的相对死亡风险来表达这一点:如果该数字大于1,则意味着该群体中的人比最低五分之一人口更有可能死亡,而如果该数字小于1,则意味着该群体中的人更有可能死亡。数据非常清楚:在研究过程中,摄入更多饱和脂肪的人死亡的可能性更小,死亡率最低的是第四个五分之一人口(也就是说,他们摄入的脂肪比最低的60%多,但比最高的20%少)。碳水化合物则相反;一个人吃的碳水化合物越多,在研究过程中死亡的可能性就越大。这个例子展示了我们如何使用统计数据来用一组简单得多的数字描述复杂的数据集;如果我们必须同时查看来自每个研究参与者的数据,我们将会数据超载,并且很难看到当他们被更简单地描述时出现的模式。 + +图 [1.1](#fig:PureDeathSatFat) 中的数字似乎表明,死亡随着饱和脂肪的减少而减少,随着碳水化合物的摄入而增加,但我们也知道,数据中存在很大的不确定性;有些人虽然吃了低碳水化合物食物,但还是过早死亡,同样,有些人吃了大量的碳水化合物,却活到了很老。鉴于这种可变性,我们希望*决定*我们在数据中看到的关系是否足够大,如果饮食和长寿之间没有真正的关系,我们不会期望它们随机发生。统计为我们提供了做出这种决定的工具,通常外界的人认为这是统计的主要目的*。但正如我们将在整本书中看到的那样,这种基于模糊证据的黑白决策的需求经常会让研究人员误入歧途。* + +基于这些数据,我们还想对未来的结果做出预测。例如,一家人寿保险公司可能希望使用关于特定人的脂肪和碳水化合物摄入量的数据来预测他们可能会活多久。预测的一个重要方面是,它要求我们从已有的数据中归纳出一些其他情况,通常是在未来;如果我们的结论仅限于特定时间研究中的特定人群,那么这项研究就不会很有用。一般来说,研究人员必须假设他们的特定样本代表了更大的*人口*,这要求他们以一种提供人口无偏图像的方式获得样本。例如,如果PURE研究招募了所有来自实践素食主义的宗教派别的参与者,那么我们可能不想将结果推广到遵循不同饮食标准的人。 + +
+ +
+ +## 1.4 统计学的大思想 + +有许多非常基本的观点贯穿了统计思维的几乎所有方面。斯蒂格勒( [2016](19.html#ref-stig) ) 在其杰出的著作《统计智慧的七大支柱》中概述了其中几个,我在这里对其进行了补充。 + +
+ +### 1.4.1 数据学习 + +一种看待统计的方式是将它视为一套工具,使我们能够从数据中学习。在任何情况下,我们都是从一系列想法或假设开始的。在纯粹的研究中,考虑到关于饱和脂肪的普遍负面教条,研究人员可能已经开始预期吃更多的脂肪会导致更高的死亡率。在本课程的后面,我们将介绍*先验知识*的概念,这意味着反映我们对某一情况的了解。这种先验知识的强度可能不同,通常基于我们的经验量;如果我第一次去一家餐馆,我很可能会对它有多好有一个微弱的预期,但如果我去一家我以前吃过十次的餐馆,我的预期会强烈得多。类似地,如果我在一个餐馆评论网站上看到一家餐馆的平均四星评级仅仅基于三个评论,那么我的期望会比基于300个评论时更弱。 + +统计学为我们提供了一种方法来描述新数据如何被最好地用来更新我们的信念,这样统计学和心理学之间就有了很深的联系。事实上,许多来自心理学的人类和动物学习理论都与来自新领域*机器学习*的想法密切相关。机器学习是统计学和计算机科学交界处的一个领域,它专注于如何构建可以从经验中学习的计算机算法。虽然统计学和机器学习经常试图解决相同的问题,但这些领域的研究人员经常采取非常不同的方法;著名的统计学家Leo Breiman曾经称他们为“两种文化”,以反映他们的方法是多么的不同 ( [Breiman 2001](19.html#ref-breiman2001) ) 。在本书中,我将尝试将两种文化融合在一起,因为这两种方法都为思考数据提供了有用的工具。 + +
+ +
+ +### 1.4.2 聚合 + +另一种思考统计学的方式是“丢弃数据的科学”。在上面纯研究的例子中,我们取了100,000多个数字,浓缩成10个。这种聚合是统计学中最重要的概念之一。当它第一次被提出时,这是革命性的:如果我们抛开每个参与者的所有细节,那么我们怎么能确定我们没有遗漏重要的东西呢? + +正如我们将看到的,统计学为我们提供了表征数据集合结构的方法,并提供了解释为什么这种方法通常很有效的理论基础。然而,同样重要的是要记住,聚合可能会走得太远,以后我们会遇到这样的情况,汇总可能会提供非常误导性的数据汇总情况。 + +
+ +
+ +### 1.4.3 不确定性 + +世界是一个不确定的地方。我们现在知道吸烟会导致肺癌,但这种因果关系是概率性的:一名68岁的男子在过去50年里每天抽两包烟,并继续吸烟,他患肺癌的风险为15%(7分之一),远远高于不吸烟者患肺癌的风险。然而,这也意味着将有许多人一生都在吸烟,却从未患过肺癌。统计学为我们提供了描述不确定性的工具,在不确定性下做出决策,并做出我们可以量化其不确定性的预测。 + +人们经常看到记者写道,科学研究人员已经“证明”了一些假设。但是统计分析永远不能“证明”一个假设,也就是证明它一定是真的(就像逻辑或数学证明那样)。统计数据可以为我们提供证据,但它总是试探性的,并受制于现实世界中始终存在的不确定性。 + +
+ +
+ +### 1.4.4 从人群中取样 + +聚合的概念意味着我们可以通过压缩数据来获得有用的见解——但是我们需要多少数据呢?*抽样*的想法是,只要这些样本是以正确的方式获得的,我们就可以根据人口中的少量样本来总结整个人口。例如,PURE研究招募了约135,000人的样本,但其目标是提供关于构成这些人样本的数十亿人的见解。正如我们上面已经讨论过的,获取研究样本的方式至关重要,因为它决定了我们能够在多大程度上概括研究结果。关于抽样的另一个基本观点是,虽然样本越大越好(就其准确代表整个人口的能力而言),但随着样本越大,回报也越小。事实上,较大样本的好处减少的速度遵循一个简单的数学规则,随着样本大小的平方根增长,因此为了使我们的估计精度加倍,我们需要将样本大小增加四倍。 + +
+ +
+ +
+ +## 1.5 因果关系和统计 + +这项纯粹的研究似乎为吃饱和脂肪和长寿之间的积极关系提供了非常有力的证据,但这并没有告诉我们真正想知道的事情:如果我们吃更多的饱和脂肪,会导致我们长寿吗?这是因为我们不知道吃饱和脂肪和长寿之间是否有直接的因果关系。这些数据与这种关系是一致的,但它们同样与导致更高饱和脂肪和更长寿命的一些其他因素一致。例如,人们可能会想象,更富有的人吃更多的饱和脂肪,更富有的人往往更长寿,但他们更长寿不一定是因为脂肪的摄入——相反,这可能是因为更好的医疗保健,心理压力的减轻,更好的食品质量或许多其他因素。纯研究调查人员试图解释这些因素,但我们不能确定他们的努力完全消除了其他变量的影响。其他因素可能解释饱和脂肪摄入和死亡之间的关系,这一事实是为什么统计学导论课经常教授“相关性并不意味着因果关系”的一个例子,尽管著名的数据可视化专家爱德华·塔夫特补充说,“但它肯定是一个提示。” + +虽然观察性研究(像纯研究)不能最终证明因果关系,我们通常认为因果关系可以通过实验控制和操纵特定因素的研究来证明。在医学上,这样的研究被称为*随机对照试验* (RCT)。比方说,我们想做一个RCT来检验增加饱和脂肪摄入量是否会延长寿命。为了做到这一点,我们将对一组人进行抽样,然后将他们分配到治疗组(他们将被告知增加饱和脂肪的摄入量)或对照组(他们将被告知保持和以前一样的饮食)。重要的是,我们要随机地将个人分配到这些组中。否则,选择治疗的人可能在某些方面与选择对照组的人不同——例如,他们可能也更有可能从事其他健康的行为。然后我们会跟踪这些参与者一段时间,看看每组中有多少人死亡。因为我们将参与者随机分配到治疗组或对照组,所以我们有理由相信两组之间没有其他差异会*混淆*治疗效果;然而,我们仍然不能确定,因为有时随机分组产生的治疗组与对照组相比*在某些重要方面有所不同。研究人员经常试图使用统计分析来解决这些混杂因素,但从数据中消除混杂因素的影响可能非常困难。* + +许多随机对照试验研究了改变饱和脂肪摄入量是否会导致更健康和更长寿的问题。这些试验集中于减少饱和脂肪,因为营养研究人员强烈认为饱和脂肪是致命的;这些研究人员中的大多数可能会争辩说,让人们吃更多的饱和脂肪是不道德的!然而,随机对照试验显示了一个非常一致的模式:总体而言,减少饱和脂肪摄入对死亡率没有明显的影响。 + +
+ +
+ +## 1.6 学习目标 + +阅读完本章后,您应该能够: + +* 描述统计的中心目标和基本概念 +* 描述实验研究和观察研究在因果关系推断方面的区别 +* 解释随机化如何提供对因果关系进行推断的能力。 + +
+ +
+ +## 1.7 建议读数 + +* 统计智慧的七大支柱 +* 《品茶的女士:统计学如何在二十世纪革新科学》,作者大卫·萨尔斯堡 +* 查尔斯·惠兰的《赤裸裸的统计:从数据中剥离恐惧》 + +
+ +
\ No newline at end of file diff --git a/docs/02.md b/docs/02.md new file mode 100644 index 0000000000000000000000000000000000000000..c4e4e589a70c26bd987efde4970c053415a17f0b --- /dev/null +++ b/docs/02.md @@ -0,0 +1,170 @@ +
+ +# 2 处理数据 + +
+ +## 2.1 什么是数据? + +关于数据的第一个要点是,数据*是*——这意味着“数据”这个词是复数(尽管有些人不同意我的观点)。你可能还想知道如何读“数据”——我说“day-tah”,但我知道许多人说“dah-tah”,尽管如此,我还是能和他们保持朋友关系。现在,如果我听到他们说“数据是”,那么这将是一个更大的问题… + +
+ +### 2.1.1 定性数据 + +数据由*个变量*组成,其中一个变量反映了一个独特的度量或数量。一些变量是*定性的*,这意味着它们描述的是质量而不是数字量。例如,在我的统计学课程中,我通常会做一个介绍性的调查,既为了获取课堂上使用的数据,也为了更多地了解学生。我问的一个问题是“你最喜欢的食物是什么?”答案是:蓝莓、巧克力、玉米粉蒸肉、意大利面、披萨和芒果。这些数据本质上不是数字;我们可以给每一个分配数字(1 =蓝莓,2 =巧克力,等等),但是我们只是把数字作为标签,而不是真正的数字。这也限制了我们应该如何处理这些数字;例如,计算这些数字的平均值是没有意义的。然而,我们通常会使用数字对定性数据进行编码,以使它们更容易处理,稍后您将会看到这一点。 + +
+ +
+ +### 2.1.2 定量数据 + +更常见的是,在统计学中,我们将使用*定量*数据,即数字数据。例如,这里的表格 [2.1](#tab:WhyTakingClass) 显示了我在介绍性课程中提出的另一个问题的结果,即“你为什么要上这门课?” + +Table 2.1: Counts of the prevalence of different responses to the question “Why are you taking this class?” +| 你为什么要上这门课? | 学生人数 | +| --- | --- | +| 它满足学位计划的要求 | One hundred and five | +| 它满足了一般教育的广度要求 | Thirty-two | +| 这不是必需的,但我对这个话题感兴趣 | Eleven | +| 其他的 | four | + +请注意,学生的答案是定性的,但是我们通过计算每个答案有多少学生给出,生成了定量的总结。 + +
+ +#### 2.1.2.1数字的种类 + +在统计学中,我们使用几种不同类型的数字。理解这些差异很重要,部分原因是统计分析语言(比如R)经常区分它们。 + +**二进制数字**。最简单的是二进制数,即0或1。我们会经常用二进制数来表示某事物是真还是假,是存在还是不存在。例如,我可能会问10个人他们是否经历过偏头痛,记录他们的回答是“是”还是“不是”。使用*逻辑*值通常是有用的,它接受`TRUE`或`FALSE`的值。当我们开始使用像R这样的编程语言来分析我们的数据时,这可能特别有用,因为这些语言已经理解了真和假的概念。事实上,大多数编程语言都同等对待真值和二进制数。数字1等于逻辑值`TRUE`,数字0等于逻辑值`FALSE`。 + +**整数**。整数是没有分数或小数部分的整数。我们在计数时最常遇到整数,但它们也经常出现在心理测量中。例如,在我的介绍性调查中,我提出了一系列关于对统计学的态度的问题(例如“统计学对我来说似乎很神秘。”),学生们用1(“强烈反对”)到7(“强烈同意”)之间的数字来回答。 + +**实数**。在统计学中,我们最常见的是处理实数,它有一个分数/小数部分。例如,我们可以测量某人的体重,这可以测量到任意精度水平,从千克到微克。 + +
+ +
+ +
+ +
+ +## 2.2 离散与连续测量 + +*离散*测量是取特定值的有限集合中的一个。这些可以是定性值(例如,不同品种的狗)或数值(例如,一个人在脸书上有多少朋友)。重要的是,在测量之间没有中间地带;说一个人有33.7个朋友没有意义。 + +*连续*测量是根据实数定义的测量。它可以落在特定值范围内的任何地方,尽管通常我们的测量工具会限制我们测量它的精度;例如,尽管理论上可以更精确地测量重量,但地秤可能会精确到千克。 + +在统计学课程中,更详细地介绍不同的测量“尺度”是很常见的,这将在本章的附录中更详细地讨论。由此得出的最重要的一点是,某些类型的统计对某些类型的数据没有意义。例如,假设我们要从许多个人那里收集邮政编码数据。这些数字被表示为整数,但它们实际上并不表示一个数值范围;每个邮政编码基本上是不同地区的标签。因此,举例来说,谈论平均邮政编码是没有意义的。 + +
+ +
+ +## 2.3 什么是好的测量? + +在心理学等许多领域,我们测量的东西不是一个物理特征,而是一个不可观测的理论概念,我们通常称之为*结构*。例如,假设我想测试你对上述不同类型的数字之间的区别的理解程度。我可以给你一个突击测验,问你几个关于这些概念的问题,然后数你答对了几个。这个测试可能是也可能不是一个很好的测量你实际知识的方法——例如,如果我以一种混乱的方式写测试或者使用你不理解的语言,那么这个测试可能会暗示你不理解这些概念,而实际上你是理解的。另一方面,如果我给了一个有明显错误答案的选择题,那么即使你实际上并不理解材料,你也可能在测试中表现良好。 + +通常不可能测量一个结构而没有一定的误差。在上面的例子中,你可能知道答案,但你可能会错意了问题,答错了。在其他情况下,被测量的事物存在固有误差,例如当我们测量一个人在一个简单的反应时间测试中需要多长时间做出反应时,由于许多原因,每次测试都会有所不同。我们通常希望我们的测量误差尽可能低,这可以通过提高测量质量(例如,使用更好的时间来测量反应时间)或通过对大量的个体测量进行平均来实现。 + +有时有一个标准可以用来测试其他测量,我们可能会称之为“黄金标准”——例如,睡眠的测量可以使用许多不同的设备来完成(如测量床上运动的设备),但它们通常被认为不如多导睡眠图的黄金标准(使用脑电波的测量来量化一个人在每个睡眠阶段花费的时间)。通常情况下,金本位制执行起来更困难或更昂贵,尽管可能会有更大的误差,还是会使用更便宜的方法。 + +当我们思考什么是好的度量时,我们通常区分好的度量的两个不同方面:它应该是*可靠的*,它应该是*有效的*。 + +
+ +### 2.3.1 可靠性 + +可靠性是指我们测量的一致性。一种常见的可靠性形式,被称为“测试-再测试可靠性”,衡量如果相同的测量被执行两次,测量结果有多一致。例如,我可能今天给你一份关于你对统计的态度的问卷,明天重复这份相同的问卷,并比较两天的答案;我们希望它们彼此非常相似,除非在两个测试之间发生了一些事情,改变了你对统计学的看法(比如阅读这本书!). + +另一种评估可靠性的方法是在数据包含主观判断的情况下。例如,假设一名研究人员想要确定一种治疗是否会改变自闭症儿童与其他儿童的互动,这是通过让专家观察儿童并对他们与其他儿童的互动进行评级来衡量的。在这种情况下,我们希望确保答案不依赖于单个评定者,也就是说,我们希望有较高的*评定者间可靠性*。这可以通过让一个以上的评定者进行评定,然后比较他们的评定,以确保他们彼此一致。 + +如果我们想要将一个测量值与另一个测量值进行比较,可靠性是很重要的,因为两个不同变量之间的关系不会比任何一个变量与其自身之间的关系(即其可靠性)更强。这意味着一个不可靠的度量永远不会与任何其他度量有很强的统计关系。出于这个原因,研究人员在开发一种新的测量方法(比如一项新的调查)时,通常会不遗余力地建立和提高其可靠性。 + +![A figure demonstrating the distinction between reliability and validity, using shots at a bullseye. Reliability refers to the consistency of location of shots, and validity refers to the accuracy of the shots with respect to the center of the bullseye. ](../media/file1.png) + +图2.1:一个展示信度和效度区别的图,使用靶心射击。可靠性指的是射击位置的一致性,而有效性指的是射击相对于靶心中心的准确性。 + +
+ +
+ +### 2.3.2 有效期 + +可靠性很重要,但光靠它是不够的:毕竟,我可以通过使用相同的数字对每个答案重新编码来创建一个完全可靠的人格测试测量,而不管这个人实际上是如何回答的。我们希望我们的度量也是*有效的*——也就是说,我们希望确保我们确实在度量我们认为我们正在度量的结构(图 [2.1](#fig:ReliabilityValidity) )。通常讨论的有效性有许多不同的类型;我们将集中讨论其中的三种。 + +*票面有效期*。从表面上看,这种测量有意义吗?如果我告诉你,我要通过观察一个人舌头的颜色来测量他的血压,你可能会认为从表面上看这不是一个有效的测量方法。另一方面,使用血压袖带将具有面部有效性。在我们深入更复杂的有效性方面之前,这通常是第一个现实检查。 + +*结构效度*。该测量是否以适当的方式与其他测量相关联?这往往细分为两个方面。*收敛有效性*意味着测量应该与被认为反映相同结构的其他测量密切相关。比方说,我感兴趣的是用问卷或面试来衡量一个人的外向程度。如果这两种不同的测量方法彼此密切相关,就可以证明收敛的有效性。另一方面,被认为反映不同结构的测量应该是不相关的,被称为*差异效度*。如果我的人格理论说外向性和责任心是两个不同的概念,那么我也应该看到我对外向性的测量与责任心的测量是不相关的。 + +*预测效度*。如果我们的测量真的有效,那么它们也应该可以预测其他结果。例如,假设我们认为寻求感觉的心理特质(对新体验的渴望)与现实世界中的冒险有关。为了测试感觉寻求测量的预测有效性,我们将测试该测试的分数在多大程度上预测另一项测量现实世界冒险行为的调查的分数。 + +
+ +
+ +
+ +## 2.4 学习目标 + +阅读完本章后,您应该能够: + +* 区分不同类型的变量(定量/定性、二进制/整数/实数、离散/连续),并给出每种变量的例子 +* 区分可靠性和有效性的概念,并将每个概念应用于特定的数据集 + +
+ +
+ +## 2.5 建议读数 + +* 心理测量理论介绍及其在R 中的应用——关于心理测量的免费在线教材 + +
+ +
+ +## 2.6 附录 + +
+ +### 2.6.1 测量尺度 + +所有变量必须至少有两个不同的可能值(否则它们将是一个*常数*而不是一个变量),但是变量的不同值可以以不同的方式相互关联,我们称之为*度量尺度*。变量的不同值有四种不同的方式。 + +* *恒等式*:变量的每个值都有唯一的意义。 + +* *量级*:变量的值反映了不同的量级,并且彼此之间具有有序的关系——也就是说,一些值较大,一些值较小。 +* *等间距*:测量刻度上的单位彼此相等。这意味着,例如,1和2之间的差在数量上等于19和20之间的差。 +* *绝对零点*:秤有一个真正有意义的零点。例如,对于许多物理量的测量,如身高或体重,这是完全没有被测量的东西。 + +有四种不同的测量尺度,伴随着变量值的不同方式。 + +*标称刻度*。名义变量满足恒等式的标准,因此变量的每个值都代表不同的东西,但是数字只是作为上面讨论的定性标签。例如,我们可能会询问人们的政党归属,然后用数字编码:1 =“共和党”,2 =“民主党”,3 =“自由主义者”,等等。然而,不同的数字彼此之间没有任何有序的关系。 + +*序数刻度*。序数变量满足同一性和大小的标准,因此值可以根据它们的大小排序。例如,我们可能会要求一个患有慢性疼痛的人每天填写一份表格,使用1-7的数字量表评估他们的疼痛程度。请注意,虽然人们在报告6分的一天比报告3分的一天可能感觉到更多的疼痛,但说他们在前一天比后一天疼痛两倍是没有意义的;排序为我们提供了关于相对大小的信息,但是值之间的差异不一定在大小上相等。 + +*区间刻度*。区间标尺具有顺序标尺的所有特征,但是除此之外,度量标尺上单位之间的区间可以被视为相等。一个标准的例子是用摄氏度或华氏度测量的物理温度;10度和20度之间的物理差异与90度和100度之间的物理差异相同,但是每个标度也可以取负值。 + +*比例刻度*。比率标度变量具有上述所有四个特征:同一性、量值、等间隔和绝对零度。比率标度变量和间隔标度变量的区别在于比率标度变量有一个真正的零点。比例变量的例子包括身体高度和体重,以及以开尔文测量的温度。 + +有两个重要的原因使我们必须注意衡量一个变量的尺度。首先,标度决定了我们可以对数据应用什么样的数学运算(见表 [2.2](#tab:MeasurementTypes) )。一个名义变量只能进行相等性比较;也就是说,对那个变量的两次观察有相同的数值吗?对一个名义变量应用其他数学运算是没有意义的,因为它们在名义变量中并不真正起到数字的作用,而是起到标签的作用。对于顺序变量,我们也可以测试一个值是大于还是小于另一个值,但是我们不能做任何算术。区间和比值变量允许我们进行算术运算;对于区间变量,我们只能加或减数值,而对于比值变量,我们还可以乘或除数值。 + +Table 2.2: Different scales of measurement admit different types of numeric operations +| | 相等/不相等 | >/< | +/- | 乘/除 | +| --- | --- | --- | --- | --- | +| 名义上的 | 好 | | | | +| 序数 | 好 | 好 | | | +| 间隔 | 好 | 好 | 好 | | +| 比例 | 好 | 好 | 好 | 好 | + +这些限制也意味着我们可以对每种类型的变量计算某些种类的统计数据。简单地涉及不同值的计数的统计(例如最常见的值,称为*模式*),可以在任何变量类型上计算。其他统计基于值的排序或排名(如*中值*,当所有值按大小排序时,它是中间值),这些要求值至少在序数范围内。最后,涉及累加值的统计(如平均值,或*均值*),要求变量至少在一个区间尺度上。话虽如此,我们应该注意到,研究人员计算只有序数的变量的平均值是很常见的(如个性测试的回答),但这有时会有问题。 + +
+ +
+ +
\ No newline at end of file diff --git a/docs/03.md b/docs/03.md new file mode 100644 index 0000000000000000000000000000000000000000..ecabfc18014cf3376f389b952df1bdf5df9a6302 --- /dev/null +++ b/docs/03.md @@ -0,0 +1,232 @@ +
+ +# 3 汇总数据 + +我在引言中提到,统计学的一个重大发现是,我们可以通过扔掉信息来更好地理解世界,这正是我们在总结一个数据集时所做的。在本章中,我们将讨论为什么以及如何汇总数据。 + +
+ +## 3.1 为什么要汇总数据? + +当我们总结数据时,我们必然会丢弃信息,有人可能会反对这一点。作为一个例子,让我们回到我们在第一章中讨论的纯研究。难道我们不应该相信除了数据集中总结的那些细节之外,关于每个个体的所有细节吗?数据是如何收集的具体细节呢,比如一天中的时间或者参与者的情绪?当我们汇总数据时,所有这些细节都丢失了。 + +我们总结数据的一个原因是,它为我们提供了一种概括的方式——也就是说,做出超越具体观察的一般性陈述。作家豪尔赫·路易斯·博尔赫斯在他的短篇小说《纪念的Funes》中强调了概括的重要性,该小说描述了一个失去遗忘能力的人。博尔赫斯关注概括(即丢弃数据)和思考之间的关系:“思考就是忘记差异、概括、抽象。在这个充满乐趣的世界里,除了细节什么都没有。” + +心理学家长期以来一直在研究概括对思维至关重要的所有方式。一个例子是分类:我们能够很容易地识别“鸟类”类别的不同例子,即使单个例子的表面特征可能非常不同(如鸵鸟、知更鸟和鸡)。重要的是,概括让我们对这些个体做出预测——在鸟类的例子中,我们可以预测它们会飞,会吃种子,可能不会开车,也不会说英语。这些预测并不总是正确的,但它们往往足够好,对世界有用。 + +
+ +
+ +## 3.2 使用表格汇总数据 + +汇总数据的一个简单方法是生成一个表,表示各种类型的观察值的计数。这种类型的桌子已经使用了几千年(见图 [3.1](#fig:salesContract) )。 + +![A Sumerian tablet from the Louvre, showing a sales contract for a house and field. Public domain, via Wikimedia Commons.](../media/file2.jpg) + +图3.1:一块来自卢浮宫的苏美尔石碑,显示了一份房屋和田地的销售合同。公共领域,通过维基共享。 + +让我们用一个更真实的数据集来看一些使用表的例子。在本书中,我们将使用[国家健康和营养调查(NHANES)](https://www.cdc.gov/nchs/nhanes/index.htm) 数据集。这是一项正在进行的研究,它根据许多不同的变量评估了美国个体样本的健康和营养状况。我们将使用可用于R统计软件包的数据集版本。对于这个例子,我们将看一个简单的变量,在数据集中称为 *PhysActive* 。此变量包含三个不同值中的一个:“是”或“否”(表示此人是否报告从事“中等或剧烈强度的运动、健身或娱乐活动”),如果此人的数据缺失,则为“不”。数据可能丢失有不同的原因;例如,这个问题不是向12岁以下的儿童提出的,而在其他情况下,成年人可能拒绝在访谈中回答这个问题,或者访谈者在他们的表格上记录的答案可能无法阅读。 + +
+ +### 3.2.1 频率分布 + +*分布*描述了数据如何在不同的可能值之间划分。对于这个例子,让我们看看有多少人属于每一种体育活动类别。 + +Table 3.1: Frequency distribution for PhysActive variable +| 物理活性的 | 绝对频率 | +| --- | --- | +| 不 | Two thousand four hundred and seventy-three | +| 是 | Two thousand nine hundred and seventy-two | +| 钠 | One thousand three hundred and thirty-four | + +表 [3.1](#tab:PhysActiveTable) 显示了每个不同值的频率;有2473人对该问题回答“否”,2972人回答“是”,1334人没有回答。我们称之为*频率分布*,因为它告诉我们每个可能值在样本中出现的频率。 + +这向我们展示了两个回答的绝对频率,对于每个实际给出回答的人来说。由此我们可以看出,说“是”的人比说“不是”的人多,但从绝对数字上很难看出相对数字上的差别有多大。出于这个原因,我们通常宁愿使用*相对频率*来表示数据,相对频率是通过将每个频率除以所有频率的总和而获得的: + +relatIvefrequen utefrequeNcyI tefrequencyj 我们也可以将相对频率乘以100,解释为百分比。在本例中,我们也将去掉NA值,因为我们希望能够解释活跃人群与不活跃人群的相对频率。然而,为了使这有意义,我们必须假设NA值是“随机”缺失的,这意味着它们的存在与否与该人变量的真实值无关。例如,如果不活跃的参与者比活跃的参与者更有可能拒绝回答问题,那么这将使我们对身体活动频率的估计产生偏差,这意味着我们的估计将与真实值不同。 + +Table 3.2: Absolute and relative frequencies and percentages for PhysActive variable +| 物理活性的 | 绝对频率 | 相对频率 | 百分率 | +| --- | --- | --- | --- | +| 不 | Two thousand four hundred and seventy-three | Zero point four five | Forty-five | +| 是 | Two thousand nine hundred and seventy-two | Zero point five five | Fifty-five | + +表 [3.2](#tab:PhysActiveTableFiltered) 让我们看到,NHANES样本中45.4%的人回答“否”,54.6%的人回答“是”。 + +
+ +
+ +### 3.2.2 累积分布 + +我们上面检查的*physical active*变量只有两个可能的值,但我们通常希望汇总具有更多可能值的数据。当这些值是定量的时,那么总结它们的一个有用的方法是通过我们所谓的*累积*频率表示:不是问有多少观察值具有特定值,而是问有多少具有某个特定值*或更少*。 + +让我们看看NHANES数据集中的另一个变量,名为 *SleepHrsNight* ,它记录了参与者报告在平常工作日睡眠的时间。表 [3.3](#tab:sleepTable) 显示了我们如上所述创建的频率表,在此问题中删除了任何缺失数据。我们已经可以通过查看表格来总结数据集;例如,我们可以看到大多数人报告的睡眠时间在6到8小时之间。为了更清楚地看到这一点,我们可以绘制一个*直方图*,它显示了具有不同值的情况的数量;见图 [3.2](#fig:sleepHist) 左图。我们还可以绘制相对频率,我们通常称之为*密度* -参见图 [3.2](#fig:sleepHist) 的右图。 + +Table 3.3: Frequency distribution for number of hours of sleep per night in the NHANES dataset +| 睡眠之夜 | 绝对频率 | 相对频率 | 百分率 | +| --- | --- | --- | --- | +| Two | nine | Zero | Zero point one eight | +| three | forty-nine | Zero point zero one | Zero point nine seven | +| four | Two hundred | Zero point zero four | Three point nine seven | +| five | Four hundred and six | Zero point zero eight | Eight point zero six | +| six | One thousand one hundred and seventy-two | Zero point two three | Twenty-three point two eight | +| seven | One thousand three hundred and ninety-four | Zero point two eight | Twenty-seven point six nine | +| eight | One thousand four hundred and five | Zero point two eight | Twenty-seven point nine | +| nine | Two hundred and seventy-one | Zero point zero five | Five point three eight | +| Ten | Ninety-seven | Zero point zero two | One point nine three | +| Eleven | Fifteen | Zero | Zero point three | +| Twelve | Seventeen | Zero | Zero point three four | + +![Left: Histogram showing the number (left) and proportion (right) of people reporting each possible value of the SleepHrsNight variable.](../media/file3.png) + +图3.2:左:显示报告SleepHrsNight变量的每个可能值的人数(左)和比例(右)的直方图。 + +如果我们想知道有多少人报告睡眠时间为5小时或更少呢?为了找到这一点,我们可以计算一个*累积分布*。为了计算某个值j的累积频率,我们将j之前(包括j)的所有值的频率相加: + +【c】【u】【m】【u】【a】 1【j】【a】【b】 + +Table 3.4: Absolute and cumulative frequency distributions for SleepHrsNight variable +| 睡眠之夜 | 绝对频率 | 累积频率 | +| --- | --- | --- | +| Two | nine | nine | +| three | forty-nine | Fifty-eight | +| four | Two hundred | Two hundred and fifty-eight | +| five | Four hundred and six | Six hundred and sixty-four | +| six | One thousand one hundred and seventy-two | One thousand eight hundred and thirty-six | +| seven | One thousand three hundred and ninety-four | Three thousand two hundred and thirty | +| eight | One thousand four hundred and five | Four thousand six hundred and thirty-five | +| nine | Two hundred and seventy-one | Four thousand nine hundred and six | +| Ten | Ninety-seven | Five thousand and three | +| Eleven | Fifteen | Five thousand and eighteen | +| Twelve | Seventeen | Five thousand and thirty-five | + +让我们为我们的睡眠变量这样做,计算绝对和累积频率。在图 [3.3](#fig:sleepAbsCumulRelFreq) 的左图中,我们绘制了数据,看看这些表示是什么样子;绝对频率值用实线绘制,累积频率用虚线绘制。我们看到,累积频率是*单调增加的*——也就是说,它只能上升或保持不变,但永远不会下降。同样,我们通常发现相对频率比绝对频率更有用;这些绘制在图 [3.3](#fig:sleepAbsCumulRelFreq) 的右侧面板中。重要的是,相对频率图的形状与绝对频率图完全相同,只是数值的大小发生了变化。 + +![A plot of the relative (solid) and cumulative relative (dashed) values for frequency (left) and proportion (right) for the possible values of SleepHrsNight.](../media/file4.png) + +图3.3:sleep hrs night可能值的频率(左)和比例(右)的相对值(实线)和累积相对值(虚线)图。 + +
+ +
+ +### 3.2.3 绘制直方图 + +![A histogram of the Age (left) and Height (right) variables in NHANES.](../media/file5.png) + +图3.4:NHANES中年龄(左)和身高(右)变量的直方图。 + +我们上面检查的变量相当简单,只有几个可能的值。现在我们来看一个更复杂的变量:年龄。首先让我们绘制NHANES数据集中所有个体的*年龄*变量(见图 [3.4](#fig:ageHist) 的左图)。你在那里看到了什么?首先,你应该注意到,随着时间的推移,每个年龄组的人数都在下降。这是有道理的,因为人口是随机抽样的,因此随着时间的推移,死亡导致越来越少的人进入老年范围。第二,你可能会注意到在80岁时图表中有一个很大的峰值。你觉得这是怎么回事? + +如果我们要查找关于NHANES数据集的信息,我们会看到对*年龄*变量的如下定义:“研究参与者筛选时的年龄。注:80岁以上的受试者记录为80岁。这样做的原因是,如果您知道数据集中特定人的确切年龄,那么相对较少的年龄很大的人可能更容易识别他们;研究人员通常向他们的参与者承诺对他们的身份保密,这是他们可以帮助保护他们的研究对象的事情之一。这也强调了这样一个事实,即知道一个人的数据来自哪里以及它们是如何被处理的总是很重要的;否则我们可能会不恰当地解释它们,认为80岁的人在样本中不知何故被过多地代表了。 + +让我们看看NHANES数据集中另一个更复杂的变量:Height。在图 [3.4](#fig:ageHist) 的右侧面板中绘制了高度值的直方图。关于这个分布,你应该注意到的第一件事是,它的密度大部分集中在170 cm左右,但分布在左侧有一个“尾巴”;有少数个体的高度要小得多。你认为这是怎么回事? + +您可能凭直觉认为小的高度来自数据集中的孩子。检验这一点的一种方法是用儿童和成人的不同颜色绘制直方图(图 [3.5](#fig:heightHistSep) 的左图)。这表明所有非常矮的身高确实来自样本中的儿童。让我们创建一个新版本的NHANES,它只包含成年人,然后为他们绘制直方图(图 [3.5](#fig:heightHistSep) 的右面板)。在那张图中,分布看起来更加对称。正如我们将在后面看到的,这是一个很好的*正态*(或*高斯*)分布的例子。 + +![Histogram of heights for NHANES. A: values plotted separately for children (gray) and adults (black). B: values for adults only. C: Same as B, but with bin width = 0.1](../media/file6.png) + +图3.5:NHANES的高度直方图。答:分别为儿童(灰色)和成人(黑色)绘制的值。b:仅供成人使用。c:与B相同,但箱宽度= 0.1 + +
+ +
+ +### 3.2.4 柱状图箱 + +在我们之前关于睡眠变量的例子中,数据是以整数报告的,我们简单地计算了报告每个可能值的人数。但是,如果您查看NHANES中Height变量的几个值(如表 [3.5](#tab:heightVals) 所示),您会发现它是以厘米为单位测量的,精确到第一个小数位。 + +Table 3.5: A few values of Height from the NHANES data frame. +| 高度 | +| --- | +| One hundred and sixty-nine point six | +| One hundred and sixty-nine point eight | +| One hundred and sixty-seven point five | +| One hundred and fifty-five point two | +| One hundred and seventy-three point eight | +| One hundred and seventy-four point five | + +图 [3.5](#fig:heightHistSep) 的面板C显示了一个直方图,该直方图计算了第一个小数位以下的每个可能值的密度。该直方图看起来确实参差不齐,这是因为特定小数位值的可变性。例如,值173.2出现32次,而值173.3只出现15次。我们大概不会认为这两种身高的患病率真的有这么大的差别;更有可能的是,这只是由于我们的样本中的随机可变性。 + +一般来说,当我们创建一个连续的或有许多可能值的数据直方图时,我们将对这些值进行*分类*,这样我们就不会对每个特定值的频率进行计数和绘图,而是对落在特定范围内的值的频率进行计数和绘图。这就是为什么上面的 [3.5](#fig:heightHistSep) 的B画面中剧情看起来没那么参差不齐;在此面板中,我们将面元宽度设置为1,这意味着通过组合宽度为1的面元内的值来计算直方图;因此,值1.3、1.5和1.6都将计入同一频段的频率,该频段的值从等于1一直到小于2。 + +请注意,一旦选择了箱的大小,箱的数量就由数据决定: + +【n】【u】【m】【b】【e】【r】 e【s】【b】【I】【n】【w】 + +对于如何选择最佳箱宽度,没有硬性规定。有时这是显而易见的(当只有几个可能的值时),但在许多情况下,这需要反复试验。有一些方法试图自动找到一个最佳的bin大小,比如我们将在后面的例子中使用的Freedman-Diaconis方法。 + +
+ +
+ +
+ +## 3.3 分布的理想化表示 + +数据集就像雪花一样,每一个都是不同的,但尽管如此,在不同类型的数据中还是有一些常见的模式。这允许我们使用数据的理想化表示来进一步总结它们。让我们将成人身高数据绘制在 [3.5](#fig:heightHistSep) 中,并将它们与一个非常不同的变量一起绘制:脉率(每分钟心跳数),也是用NHANES测量的(见图 [3.6](#fig:NormalDistPlotsWithDist) )。 + +![Histograms for height (left) and pulse (right) in the NHANES dataset, with the normal distribution overlaid for each dataset.](../media/file7.png) + +图3.6:NHANES数据集中高度(左)和脉搏(右)的直方图,每个数据集都覆盖了正态分布。 + +虽然这些图看起来肯定不完全相同,但两者都具有围绕中间圆形峰值相对对称的一般特征。这个形状实际上是我们收集数据时常见的分布形状之一,我们称之为*正态*(或*高斯*)分布。该分布由两个值定义(我们称之为分布的*参数*):中心峰值的位置(我们称之为*均值*)和分布的宽度(用称为*标准差*的参数描述)。图 [3.6](#fig:NormalDistPlotsWithDist) 显示了绘制在每个历史程序顶部的适当正态分布。你可以看到,虽然曲线不完全符合数据,但它们很好地描述了分布的特征——只有两个数字! + +正如我们将在后面讨论中心极限定理时看到的,世界上许多变量呈现正态分布的形式有其深刻的数学原因。 + +
+ +### 3.3.1 偏斜度 + +图 [3.6](#fig:NormalDistPlotsWithDist) 中的示例很好地遵循了正态分布,但在许多情况下,数据会以系统的方式偏离正态分布。数据可能偏离的一种方式是当它们不对称时,例如分布的一个尾部比另一个更密集。我们称之为“偏斜度”。当度量被约束为非负时,通常会出现偏斜,例如当我们计算事物或测量经过的时间时(因此变量不能呈现负值)。 + +图 [3.7](#fig:SFOWaitTimes) 的左图显示了旧金山国际机场安检线的平均等待时间,这是一个相对轻微偏斜的例子。您可以看到,虽然大多数等待时间不到20分钟,但也有很多情况下等待时间要长得多,超过60分钟!这是一个“右偏”分布的例子,右尾比左尾长;当查看计数或测量时间时,这些是常见的,它们不能小于零。“左偏”分布不太常见,但可能会发生,例如在查看值不能大于1的小数值时。 + +![Examples of right-skewed and long-tailed distributions. Left: Average wait times for security at SFO Terminal A (Jan-Oct 2017), obtained from https://awt.cbp.gov/ . Right: A histogram of the number of Facebook friends amongst 3,663 individuals, obtained from the Stanford Large Network Database. The person with the maximum number of friends is indicated by the diamond.](../media/file8.png) + +图3.7:右偏和长尾分布的例子。左图:SFO终端A的平均安检等待时间(2017年1月至10月),从[https://awt.cbp.gov/](https://awt.cbp.gov/)获得。右图:从斯坦福大学大型网络数据库获得的3663个人中脸书朋友数量的直方图。菱形表示拥有最多朋友的人。 + +
+ +
+ +### 3.3.2 长尾分布 + +从历史上看,统计学主要关注正态分布的数据,但是有许多数据类型看起来一点也不像正态分布。特别是,许多现实世界的分布是“长尾”的,这意味着右尾远远超出了分布中最典型的成员;也就是说,它们是极度倾斜的。出现长尾分布的最有趣的数据类型之一来自于对社交网络的分析。举个例子,让我们看看来自[斯坦福大型网络数据库](https://snap.stanford.edu/data/egonets-Facebook.html)的脸书朋友数据,并绘制数据库中3663人的朋友数量直方图(见图 [3.7](#fig:SFOWaitTimes) 的右图)。正如我们所看到的,这个分布有一个很长的右尾巴——平均每个人有24.09个朋友,而拥有最多朋友的人(用蓝点表示)有1043个! + +长尾分布在现实世界中越来越被认可。特别是,复杂系统的许多特征都是由这些分布来表征的,从文本中单词的频率,到进出不同机场的航班数量,到大脑网络的连通性。长尾分布有许多不同的方式,但一个常见的方式是基督教圣经中所谓的“马太效应”: + +> 因为凡有的,还要加给他,叫他有馀。没有的,连他所有的也要夺去。——马太福音25:29,修订标准版 + +这通常被解释为“富人越来越富”。在这种情况下,优势是复合的,有更多朋友的人可以结交更多的新朋友,有更多钱的人有能力做更多的事情来增加他们的财富。 + +随着课程的进行,我们将看到几个长尾分布的例子,我们应该记住,当面对长尾数据时,许多统计工具可能会失败。正如纳西姆·尼古拉斯·塔勒布在他的著作《黑天鹅》中指出的,这种长尾分布在2008年金融危机中发挥了关键作用,因为交易员使用的许多金融模型都假设金融系统将遵循正态分布,而事实显然并非如此。 + +
+ +
+ +
+ +## 3.4 学习目标 + +阅读完本章后,您应该能够: + +* 计算给定数据集的绝对、相对和累积频率分布 +* 生成频率分布的图形表示 +* 描述正态分布和长尾分布的区别,并描述通常导致这两种分布的情况 + +
+ +
+ +## 3.5 建议读数 + +* 《黑天鹅:极不可能事件的影响》,作者纳西姆·尼古拉斯·塔勒布 + +
+ +
\ No newline at end of file diff --git a/docs/04.md b/docs/04.md new file mode 100644 index 0000000000000000000000000000000000000000..5c4454d0bdd28fcd371648b22c5b9fe6634b2812 --- /dev/null +++ b/docs/04.md @@ -0,0 +1,204 @@ +
+ +# 4 数据可视化 + +1986年1月28日,挑战者号航天飞机在起飞后73秒爆炸,机上7名宇航员全部遇难。正如任何此类灾难发生时一样,官方对事故原因进行了调查,发现连接固体火箭助推器两段的O形环泄漏,导致接头失效和大型液体燃料箱爆炸(见图 [4.1](#fig:srbLeak) )。 + +![An image of the solid rocket booster leaking fuel, seconds before the explosion. The small flame visible on the side of the rocket is the site of the O-ring failure. By NASA (Great Images in NASA Description) [Public domain], via Wikimedia Commons](../media/file9.jpg) + +图4.1:爆炸前几秒钟,固体火箭助推器泄漏燃料的图像。火箭侧面可见的小火焰就是O型圈失效的地方。由NASA(NASA描述中的伟大图像)[公共领域],通过维基共享 + +调查发现,美国宇航局决策过程的许多方面都存在缺陷,并特别关注美国宇航局工作人员与建造固体火箭助推器的承包商Morton Thiokol的工程师之间的会议。这些工程师特别担心,因为预计发射当天早上的温度会非常低,而且他们从以前的发射中获得的数据显示,O形圈的性能在较低的温度下会受到影响。在发射前一天晚上的一次会议上,工程师们向美国国家航空航天局的管理人员展示了他们的数据,但无法说服他们推迟发射。他们的证据是一组手写的幻灯片,显示了过去各次发射的数据。 + +可视化专家爱德华·塔夫特认为,如果恰当地展示所有数据,工程师们会更有说服力。特别是,他们可以展示类似于图 [4.2](#fig:challengerTemps) 中的图,这突出了两个重要的事实。首先,它表明O形环的损坏程度(由在以前的飞行中从海洋中回收固体火箭助推器后在环外发现的腐蚀和烟灰的数量来定义)与起飞时的温度密切相关。第二,它显示了1月28日早晨的预测温度范围(显示在阴影区域)远远超出了所有先前发射的范围。虽然我们不能确定,但至少看起来这可能更有说服力。 + +![A replotting of Tufte's damage index data. The line shows the trend in the data, and the shaded patch shows the projected temperatures for the morning of the launch.](../media/file10.png) + +图4.2:Tufte损坏指数数据的重新绘制。这条线显示了数据的趋势,阴影部分显示了发射当天早上的预计温度。 + +
+ +## 4.1 剧情剖析 + +绘制数据的目的是以二维(有时是三维)形式呈现数据集的摘要。我们将尺寸称为*轴*——横轴称为 *X轴*,纵轴称为 *Y轴*。我们可以沿着轴排列数据,突出显示数据值。这些值可以是连续的,也可以是分类的。 + +有许多不同类型的情节,我们可以使用,它们有不同的优点和缺点。假设我们对NHANES数据集中描述男女身高差异感兴趣。图 [4.3](#fig:plotHeight) 显示了绘制这些数据的四种不同方式。 + +1. 面板A中的条形图显示了平均值的差异,但没有向我们显示这些平均值周围的数据分布有多大——正如我们稍后将看到的,了解这一点对于确定我们是否认为两组之间的差异足够大而重要是至关重要的。 + +2. 第二张图显示了所有数据点重叠的条形图——这使得男性和女性的身高分布重叠变得更加清晰,但由于数据点的数量很大,仍然很难看到。 + +总的来说,我们更喜欢使用一种绘图技术,这种技术可以提供数据点分布的更清晰的视图。 + +3. 在面板C中,我们看到一个*小提琴图*的例子,它绘制了每种条件下的数据分布(稍微平滑后)。 + +4. 另一个选项是面板D中显示的*盒图*,它显示了中位数(中心线)、可变性的度量(盒的宽度,基于称为四分位距的度量)和任何异常值(由线末端的点标注)。这些都是显示数据的有效方法,为数据的分布提供了良好的感觉。 + +![Four different ways of plotting the difference in height between men and women in the NHANES dataset. Panel A plots the means of the two groups, which gives no way to assess the relative overlap of the two distributions. Panel B shows the same bars, but also overlays the data points, jittering them so that we can see their overall distribution. Panel C shows a violin plot, which shows the distribution of the datasets for each group. Panel D shows a box plot, which highlights the spread of the distribution along with any outliers (which are shown as individual points).](../media/file11.png) + +图4.3:绘制NHANES数据集中男女身高差异的四种不同方法。图A绘出了两组的平均值,这没有给出评估两个分布的相对重叠的方法。图B显示了相同的条形,但也覆盖了数据点,使它们抖动,以便我们可以看到它们的总体分布。面板C显示了小提琴图,其显示了每个组的数据集的分布。图D显示了一个箱形图,该图突出显示了分布范围以及任何异常值(显示为单个点)。 + +
+ +
+ +## 4.2 良好可视化的原则 + +许多书籍都是关于数据的有效可视化。有一些原则是大多数作者都同意的,而另一些则更有争议。这里我们总结了一些主要原则;如果你想了解更多,那么本章末尾的*建议阅读*部分列出了一些好的资源。 + +
+ +### 4.2.1 显示数据并使其突出 + +假设我进行了一项研究,调查了牙齿健康和使用牙线时间之间的关系,我想将我的数据可视化。图 [4.4](#fig:dentalFigs) 显示了这些数据的四种可能呈现方式。 + +1. 在面板A中,我们实际上没有显示数据,只是用一条线来表示数据之间的关系。这显然不是最优的,因为我们实际上看不到底层数据是什么样的。 + +面板B-D显示了绘制实际数据的三种可能的结果,其中每个图显示了数据可能出现的不同方式。 + +2. 如果我们看到面板B中的图,我们可能会怀疑——真实数据很少遵循如此精确的模式。 + +3. 另一方面,C图中的数据看起来像真实的数据——它们显示了总体趋势,但它们是杂乱的,就像世界上的数据通常是这样。 + +4. 面板D中的数据向我们展示了这两个变量之间的明显关系完全是由一个个体引起的,我们称这个个体为*异常值*,因为他们远远落在群体中其他人的模式之外。应该清楚的是,我们可能不想从一个数据点驱动的效应中得出太多结论。这个数字强调了为什么*总是*在过于相信任何数据摘要之前查看原始数据是重要的。 + +![Four different possible presentations of data for the dental health example. Each point in the scatter plot represents one data point in the dataset, and the line in each plot represents the linear trend in the data.](../media/file12.png) + +图4.4:牙齿健康示例的四种不同的可能数据表示。散点图中的每个点代表数据集中的一个数据点,每个图中的线条代表数据中的线性趋势。 + +
+ +
+ +### 4.2.2 最大化数据/油墨比 + +爱德华·塔夫特提出了一个叫做数据/墨水比率的想法: + +T3】dT5】ata/ InkratIo=amon ondatatotala used\,on\,data}{total\,amount\,of\,ink} 这样做的目的是尽量减少视觉上的杂乱,让数据透显出来。 例如,以图 [4.5](#fig:dataInkExample) 中牙齿健康数据的两个展示为例。两个面板显示相同的数据,但面板A更容易理解,因为它的数据/油墨比率相对较高。 + +![An example of the same data plotted with two different data/ink ratios.](../media/file13.png) + +图4.5:用两种不同的数据/油墨比例绘制的相同数据的示例。 + +
+ +
+ +### 避免图表垃圾 + +在流行媒体上看到的数据展示中,有许多与内容主题相关但与实际数据无关的视觉元素,这种情况尤其常见。这就是所谓的 *chartjunk* ,应该不惜一切代价避免。 + +避免图表垃圾的一个好方法是避免使用流行的电子表格程序来绘制数据。例如,图 [4.6](#fig:chartJunk) (使用Microsoft Excel创建)中的图表绘制了不同宗教在美国的相对受欢迎程度。这个数字至少有三个问题: + +* 它有图形覆盖在每个条上,与实际数据无关 +* 它有一个令人分心的背景纹理 +* 它使用三维条形图,这会扭曲数据 + +![An example of chart junk.](../media/file14.png) + +图4.6:图表垃圾的一个例子。 + +
+ +
+ +### 避免扭曲数据 + +通常可以使用可视化来扭曲数据集的信息。一个非常常见的方法是使用不同的轴缩放来放大或隐藏数据模式。例如,我们想知道美国的暴力犯罪率是否发生了变化。在图 [4.7](#fig:crimePlotAxes) 中,我们可以看到这些数据的绘制方式要么让犯罪率看起来保持不变,要么让犯罪率直线下降。同样的数据,却能说出截然不同的两个故事! + +![Crime data from 1990 to 2014 plotted over time. Panels A and B show the same data, but with different ranges of values along the Y axis. Data obtained from https://www.ucrdatatool.gov/Search/Crime/State/RunCrimeStatebyState.cfm](../media/file15.png) + +图4.7:1990年至2014年的犯罪数据随时间的变化。图A和B显示了相同的数据,但是沿Y轴的数值范围不同。数据来源于[https://www . ucrdatool . gov/Search/Crime/State/runcrimestatebystate . cfm](https://www.ucrdatatool.gov/Search/Crime/State/RunCrimeStatebyState.cfm) + +统计数据可视化中的一个主要争议是如何选择Y轴,特别是它是否应该总是包含零。在他的名著《如何用统计数据撒谎》中,达雷尔·赫夫强烈主张人们应该总是把零点放在Y轴上。另一方面,爱德华·塔夫特对此进行了反驳: + +> “一般来说,在时间序列中,使用显示数据的基线,而不是零点;不要以隐藏数据线本身的情况为代价,花费大量空的垂直空间试图向下到达零点。”(来自[https://qz . com/418083/its-ok-not-to-start-your-y-axis-at-zero/](https://qz.com/418083/its-ok-not-to-start-your-y-axis-at-zero/)) + +肯定有使用零点毫无意义的情况。假设我们对绘制一段时间内个体的体温感兴趣。在图 [4.8](#fig:bodyTempAxis) 中,我们绘制了Y轴上有零或没有零的相同(模拟)数据。显而易见的是,通过将这些数据标绘为Y轴上的零点(图A ),我们在图中浪费了大量的空间,因为一个活人的体温不可能达到零点!通过将零度包括在内,我们也使第21-30天的温度明显上升变得不那么明显。一般来说,我倾向于使用线图和散点图中的所有空间,除非零点真的非常重要。 + +![Body temperature over time, plotted with or without the zero point in the Y axis.](../media/file16.png) + +图4.8:体温随时间的变化,在Y轴上有或没有零点的情况下绘制。 + +爱德华·塔夫特引入了*寿命因子*的概念来描述可视化中的物理差异对应于数据差异的程度。如果图形的李氏因子接近1,那么它可以恰当地表示数据,而李氏因子远离1则反映了基础数据的失真。 + +在许多情况下,谎言因素支持应该在条形图中包含零点的论点。在图 [4.9](#fig:barCharLieFactor) 中,我们绘制了Y轴上有无零点的相同数据。在图A中,两个条形之间的面积比例差与数值之间的面积比例差完全相同(即lie因子= 1),而在图B中(其中不包括零),两个条形之间的面积比例差大约是数值比例差的2.8倍,因此在视觉上夸大了差异的大小。 + +![Two bar charts with associated lie factors.](../media/file17.png) + +图4.9:两个带有相关寿命因子的条形图。 + +
+ +
+ +
+ +## 4.3 适应人的局限性 + +人类在感知和认知方面都有局限性,这使得一些可视化变得非常难以理解。在构建可视化时,记住这些总是很重要的。 + +
+ +### 4.3.1 感知限制 + +许多人(包括我自己)都有一个重要的感知限制,那就是色盲。这使得在元素之间只有颜色对比而没有亮度对比的图形(如图 [4.10](#fig:badColors) 中的图形)中很难感知信息。除了颜色之外,使用亮度和/或纹理差异很大的图形元素总是很有帮助的。还有[“色盲友好”调色板](http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/#a-colorblind-friendly-palette)可用于许多可视化工具。 + +![Example of a bad figure that relies solely on color contrast.](../media/file18.png) + +图4.10:仅仅依靠颜色对比的坏图的例子。 + +即使是色觉完美的人,也有感知上的局限,可以让一些情节失效。这就是为什么统计学家从不使用饼状图的原因之一:人类很难准确感知形状体积的差异。图 [4.11](#fig:pieChart) 中的饼状图(展示了我们上面展示的相同的宗教信仰数据)显示了这有多棘手。 + +![An example of a pie chart, highlighting the difficulty in apprehending the relative volume of the different pie slices.](../media/file19.png) + +图4.11:一个饼图的例子,突出了理解不同饼图切片的相对体积的困难。 + +这个情节很可怕,有几个原因。首先,它需要从图形底部非常小的斑块中区分大量的颜色。第二,视觉视角扭曲了相对数字,因此天主教的饼图楔形看起来比无的饼图楔形大得多,而事实上无的数字略大(22.8%比20.8%),如图 [4.6](#fig:chartJunk) 所示。第三,通过将图例从图形中分离出来,它要求观察者将信息保存在他们的工作记忆中,以便在图形和图例之间进行映射,并且进行许多“表格查找”,以便持续地将图例标签与可视化相匹配。最后,它使用的文本太小,不放大就无法阅读。 + +使用更合理的方法绘制数据(图 [4.12](#fig:religionBars) ),我们可以更清楚地看到模式。该图可能看起来不像使用Excel生成的饼图那样华丽,但它是更有效、更准确的数据表示。 + +![A clearer presentation of the religious affiliation data (obtained from http://www.pewforum.org/religious-landscape-study/).](../media/file20.png) + +图4.12:宗教归属数据的更清晰展示(从[http://www.pewforum.org/religious-landscape-study/](http://www.pewforum.org/religious-landscape-study/)获得)。 + +该图允许观察者基于沿公共刻度(y轴)的条形长度进行比较。当基于这些感知元素解码差异时,人类往往比基于面积或颜色更准确。 + +
+ +
+ +
+ +## 4.4 其他因素校正 + +通常我们感兴趣的是绘制数据,其中感兴趣的变量受我们感兴趣的因素之外的其他因素影响。例如,假设我们想了解汽油价格是如何随着时间的推移而变化的。图 [4.13](#fig:gasPrices) 显示了历史天然气价格数据,绘制时考虑或不考虑通货膨胀调整。虽然未经调整的数据显示了巨大的增长,但调整后的数据显示这主要只是通货膨胀的反映。需要根据其他因素调整数据的其他例子包括人口规模和不同季节收集的数据。 + +![The price of gasoline in the US from 1930 to 2013 (obtained from http://www.thepeoplehistory.com/70yearsofpricechange.html) with or without correction for inflation (based on Consumer Price Index).](../media/file21.png) + +图4.13:1930年至2013年美国汽油价格(从[http://www.thepeoplehistory.com/70yearsofpricechange.html](http://www.thepeoplehistory.com/70yearsofpricechange.html)获得),有无通货膨胀修正(基于消费者价格指数)。 + +
+ +
+ +## 4.5 学习目标 + +阅读完本章后,您应该能够: + +* 描述区分好图和坏图的原则,并用它们来区分好图和坏图。 +* 理解为了制作有效的图表而必须适应的人类局限性。 +* 承诺永远不创建饼图。*曾经*。 + +
+ +
+ +## 4.6 建议阅读和视频 + +* [](https://serialmentor.com/dataviz/)*数据可视化基础,Claus Wilke* +** 视觉解说,爱德华·塔夫特* *可视化数据*,作者威廉·s·克利夫兰* Stephen M. Kosslyn的《眼睛和心灵的图形设计》* [*人类如何看待数据*](https://www.youtube.com/watch?v=fSgEeI2Xpdc&feature=youtu.be) ,作者约翰·劳瑟* + +
+ +
\ No newline at end of file diff --git a/docs/05.md b/docs/05.md new file mode 100644 index 0000000000000000000000000000000000000000..c886cf3cf4d4cd46d6e8de33ed8276799f34b69d --- /dev/null +++ b/docs/05.md @@ -0,0 +1,391 @@ +
+ +# 5 根据数据拟合模型 + +统计学中的基本活动之一是创建模型,这些模型可以使用一小组数字汇总数据,从而提供数据的简洁描述。在本章中,我们将讨论统计模型的概念以及如何用它来描述数据。 + +
+ +## 5.1 什么是模型? + +在物理世界中,“模型”通常是现实世界中事物的简化,但却传达了被建模事物的本质。一个建筑的模型,在传达建筑结构的同时,又足够小巧轻便,可以用手拿起来;生物学中的细胞模型比实际的东西要大得多,但同样传达了细胞的主要部分及其关系。 + +在统计学中,模型旨在提供类似的压缩描述,但针对数据而非物理结构。像物理模型一样,统计模型通常比描述的数据简单得多;这意味着尽可能简单地捕捉数据的结构。在这两种情况下,我们都意识到模型是一种便利的虚构,它必然掩盖了被建模的实际事物的一些细节。正如统计学家乔治·博克斯的名言:“所有的模型都是错的,但有些是有用的。”将统计模型视为观察到的数据是如何产生的理论也是有用的;然后,我们的目标就变成了找到最有效、最准确地总结数据实际生成方式的模型。但是,正如我们将在下面看到的,效率和准确性的愿望往往是截然相反的。 + +统计模型的基本结构是: + +【d】【a】【a】=【m】 + +这表达了数据可以分成两部分的想法:一部分由统计模型描述,它表达了我们根据我们的知识期望数据采取的值,另一部分我们称为*误差*,它反映了模型预测和观察数据之间的差异。 + +本质上,我们希望使用我们的模型来预测任何给定观察的数据值。我们可以这样写这个等式: + +dataÎ=modelI这意味着观察数据II的预测值等于该观察模型的值。一旦我们有了模型的预测,我们就可以计算误差: + +errorI=dataI也就是说,任何观测值的误差都是数据的观测值与模型数据的预测值之间的差值。 + +
+ +
+ +## 5.2 统计建模:示例 + +让我们来看一个使用NHANES中的数据构建数据模型的例子。特别是,我们将尝试在NHANES样本中建立一个儿童身高模型。首先,让我们加载数据并绘制它们(见图 [5.1](#fig:childHeight) )。 + +![Histogram of height of children in NHANES.](../media/file22.png) + +图5.1:NHANES儿童身高直方图。 + +请记住,我们希望尽可能简单地描述数据,同时仍然捕获它们的重要特征。我们能想象到的最简单的模型只包含一个数字;也就是说,该模型将为每个观察值预测相同的值,而不管我们对这些观察值还知道什么。我们通常根据模型的*参数*来描述模型,这些参数是我们可以改变的值,以便修改模型的预测。在整本书中我们将引用这些使用希腊字母β(【β】);当模型有多个参数时,我们将使用带下标的数字来表示不同的贝塔系数(例如β1\ beta _ 1)。习惯上也是用字母yy来指代数据的值,用下标版本yIy _ I来指代个体观察值。 + +我们一般不知道参数的真实值,所以我们必须从数据中估计它们。为此,我们一般会在\ beta符号上盖一个“帽子”,表示我们使用的是参数值的估计值,而不是它的真实值(我们一般不知道)。因此,我们使用单一参数的简单高度模型是: + +【I】=+的缩写 + +下标II并没有出现在方程的右侧,这意味着模型的预测并不取决于我们在看哪一个观测值——对它们都是一样的。问题就变成了:我们如何估计模型中参数的最佳值?在这种特殊情况下,β的最佳估计值是什么?更重要的是,我们如何定义最好的? + +我们可以想象的一个非常简单的估计器是*模式*,它只是数据集中最常见的值。这用一个数字重新描述了1691个孩子的全部集合。如果我们想预测任何新生儿的身高,那么我们的预测值将是相同的数字: + +yÎ=166.5\ hat { y _ I } = 166.5那么每个个体的误差就是预测值之间的差(y + +【e】【r】【r】【r】【o】【r】 + +这个模型有多好?一般来说,我们根据误差的大小来定义模型的好坏,误差代表数据偏离模型预测的程度;在所有条件相同的情况下,产生较低误差的模型是较好的模型。(尽管我们将在后面看到,所有的事情通常都不相等……)我们在这种情况下发现,当我们使用该模式作为我们对【β】\ beta的估计值时,平均个体有相当大的误差-28.8厘米,这从表面上看似乎不太好。 + +我们如何为我们的模型参数找到一个更好的估计量?我们可以从寻找一个平均误差为零的估计量开始。一个很好的选择是算术平均值(即*平均值*,通常用变量上的横线表示,如x\ bar { x }),计算为所有值的总和除以值的个数。数学上,我们将其表达为: + +【X5】= + +事实证明,如果我们使用算术平均值作为我们的估计量,那么平均误差将确实为零(如果您感兴趣,请参见本章末尾的简单证明)。即使平均值的平均误差为零,我们也可以从图 [5.2](#fig:meanError) 的直方图中看到,每个个体仍有一定程度的误差;有些是正的,有些是负的,它们相互抵消,平均误差为零。 + +![Distribution of errors from the mean.](../media/file23.png) + +图5.2:平均值的误差分布。 + +负误差和正误差相互抵消的事实意味着两个不同的模型可能具有绝对值非常不同的误差,但仍然具有相同的平均误差。这正是为什么平均误差不是我们估计量的一个好标准;我们希望有一个标准,无论误差方向如何,都能尽量减小总误差。出于这个原因,我们通常根据某种度量来总结错误,这种度量将正错误和负错误都算作是不好的。我们可以使用每个误差值的绝对值,但更常见的是使用平方误差,原因我们将在本书后面看到。 + +有几种常见的方法来总结你将在本书的不同点上遇到的平方误差,所以理解它们之间的关系是很重要的。首先,我们可以简单地将它们相加;这被称为*误差平方和*。我们通常不使用它的原因是,它的大小取决于数据点的数量,因此它可能很难解释,除非我们正在查看相同数量的观察值。第二,我们可以取平方误差值的平均值,这被称为*均方误差(MSE)* 。然而,因为我们在取平均值之前对这些值进行了平方,所以它们与原始数据不在同一尺度上;他们分别是centImeters2centimeters^2出于这个原因,通常也取MSE的平方根,我们称之为*均方根误差(RMSE)* ,这样误差的测量单位与原始值相同(本例中为厘米)。 + +平均值有相当大的误差——任何单独的数据点平均距离平均值约27厘米——但它仍然比模式好得多,后者的均方根误差约为39厘米。 + +
+ +### 5.2.1 改进我们的模型 + +我们能想象出更好的模式吗?请记住,这些数据来自NHANES样本中的所有儿童,年龄从2岁到17岁不等。考虑到这一广泛的年龄范围,我们可能期望我们的身高模型也应该包括年龄。让我们把身高和年龄的数据画出来,看看这种关系是否真的存在。 + +![Height of children in NHANES, plotted without a model (A), with a linear model including only age (B) or age and a constant (C), and with a linear model that fits separate effects of age for males and females (D).](../media/file24.png) + +图5.3:NHANES儿童的身高,绘制时未使用模型(A),线性模型仅包含年龄(B)或年龄和常数(C),线性模型适用于男性和女性的不同年龄效应(D)。 + +图 [5.3](#fig:childHeightLine) 面板A中的黑点显示了数据集中的个体,正如我们所料,身高和年龄之间似乎有很强的关系。因此,我们可以建立一个将身高和年龄联系起来的模型: + +【I】= + +其中【β】̂\ hat { \ beta }是我们乘以年龄生成模型预测的参数估计值。 + +你可能记得代数中的一条线是这样定义的: + +=【p】 + +如果年龄是XX变量,那么这意味着我们根据年龄对身高的预测将是一条斜率为β且截距为零的线——为了查看这一点,让我们在数据顶部用蓝色绘制最佳拟合线(图 [5.3](#fig:childHeightLine) 中的B图)。这个模型显然有问题,因为这条线似乎没有很好地遵循数据。事实上,该模型的RMSE(39.16)实际上高于仅包括平均值的模型!问题在于我们的模型只包括年龄,这意味着当年龄为零时,模型预测的身高值必须为零。即使数据不包括任何年龄为零的孩子,当x为零时,该线在数学上需要具有为零的y值,这解释了为什么该线被下拉到较年轻的数据点之下。我们可以通过在我们的模型中包含一个截距来解决这个问题,截距基本上代表年龄等于零时的估计身高;尽管零年龄在该数据集中是不合理的,但这是一个数学技巧,允许模型考虑数据的总体大小。模型是: + +【I】= + +其中β0̂\ hat { \ beta _ 0 }是我们对*截距*的估计值,它是一个常数值,加到对每个个体的预测中;我们称之为截距,因为它映射到直线方程的截距上。我们将在后面了解我们实际上是如何为一个特定的数据集估计这些参数值的;现在,我们将使用我们的统计软件来估计参数值,使我们对这些特定数据的误差最小。图 [5.3](#fig:childHeightLine) 中的子图C显示了应用于NHANES数据的模型,其中我们看到该线比没有常数的线更好地匹配了数据。 + +使用这个模型,我们的误差要小得多——平均只有8.36厘米。你能想到其他可能与身高有关的变量吗?性别呢?在图 [5.3](#fig:childHeightLine) 的D图中,我们用分别适合男性和女性的线绘制数据。从剧情上看,似乎是有雌雄之分的,但比较小,只在青春期年龄后才出现。在图 [5.4](#fig:msePlot) 中,我们绘制了不同模型的均方根误差值,包括一个带有模拟性别影响的附加参数的模型。从这里我们可以看到,从众数到平均数,模型变得更好了一点,从平均数到平均数+年龄,模型变得更好了一点,并且通过包括性别也变得稍微好了一点。 + +![Mean squared error plotted for each of the models tested above.](../media/file25.png) + +图5.4:上面测试的每个模型的均方误差图。 + +
+ +
+ +
+ +## 5.3 是什么让一个模特变得“好”? + +我们希望从统计模型中得到两种不同的东西。首先,我们希望它能很好地描述我们的数据;也就是说,我们希望它在对我们的数据建模时具有尽可能低的误差。第二,我们希望它能很好地推广到新的数据集;也就是说,当我们将其应用于新的数据集以进行预测时,我们希望其误差尽可能低。事实证明,这两个特性经常会发生冲突。 + +为了理解这一点,我们来考虑一下误差来自哪里。首先,如果我们的模型是错误的,它就会发生;例如,如果我们不准确地说身高随着年龄的增长而下降,而不是上升,那么我们的误差将高于正确模型的误差。类似地,如果我们的模型中缺少了一个重要的因素,这也会增加我们的误差(就像我们在身高模型中忽略年龄时一样)。然而,由于数据中的随机变化,即使模型是正确的,也可能出现误差,我们通常称之为“测量误差”或“噪声”。有时这真的是由于我们的测量中的误差——例如,当测量依赖于人时,比如使用秒表来测量赛跑中所用的时间。在其他情况下,我们的测量设备是高度精确的(就像测量体重的数字秤),但被测量的东西受到许多不同因素的影响,导致它是可变的。如果我们知道所有这些因素,那么我们可以建立一个更准确的模型,但在现实中这几乎是不可能的。 + +让我们用一个例子来说明这一点。我们将使用计算机模拟来生成一些数据,而不是使用真实的数据(关于这一点,我们将在几章中详细介绍)。假设我们想要了解一个人的血液酒精含量(BAC)与他们在模拟驾驶测试中的反应时间之间的关系。我们可以生成一些模拟数据并绘制关系图(见图 [5.5](#fig:BACrt) 的A图)。 + +![Simulated relationship between blood alcohol content and reaction time on a driving test, with best-fitting linear model represented by the line. A: linear relationship with low measurement error. B: linear relationship with higher measurement error. C: Nonlinear relationship with low measurement error and (incorrect) linear model](../media/file26.png) + +图5.5:驾驶测试中血液酒精含量和反应时间之间的模拟关系,最佳拟合线性模型用直线表示。答:线性关系,测量误差小。b:线性关系,测量误差较高。c:具有低测量误差和(不正确的)线性模型的非线性关系 + +在本例中,反应时间随着血液酒精含量的增加而有系统地增加——这条线显示了最佳拟合模型,我们可以看到误差非常小,这一点在所有的点都非常接近这条线这一事实中是显而易见的。 + +我们也可以想象数据显示同样的线性关系,但有更多的误差,如图 [5.5](#fig:BACrt) 的B图所示。在这里,我们看到对BAC的反应时间仍有系统性的增加,但个体之间的差异更大。 + +在这两个例子中,两个变量之间的关系似乎是线性的,误差反映了我们测量中的噪声。另一方面,在其他情况下,变量之间的关系不是线性的,并且由于没有适当地指定模型,误差会增加。假设我们对咖啡因摄入量和测试成绩之间的关系感兴趣。像咖啡因这样的兴奋剂和测试表现之间的关系通常是非线性的,也就是说,它并不遵循一条直线。这是因为咖啡因用量越少,人的表现越好(因为这个人变得更加警觉),但用量越大,表现就越差(因为这个人变得紧张不安)。我们可以模拟这种形式的数据,然后用线性模型拟合数据(见图 [5.5](#fig:BACrt) 的子图C)。蓝线表示最符合这些数据的直线;很明显,这里有很大的误差。尽管在测试成绩和咖啡因摄入量之间有一个非常合法的关系,它遵循一条曲线而不是一条直线。假设线性关系的模型具有很高的误差,因为它对于这些数据是错误的模型。 + +
+ +
+ +## 5.4 一个模特可以太好吗? + +误差听起来是一件坏事,通常我们更喜欢误差较小的模型,而不是误差较大的模型。但是,我们在上面提到过,模型精确拟合当前数据集的能力和概化到新数据集的能力之间存在矛盾,事实证明,误差最低的模型往往在概化到新数据集方面要差得多! + +为了看到这一点,让我们再次生成一些数据,以便我们知道变量之间的真实关系。我们将创建两个模拟数据集,它们以完全相同的方式生成,只是添加了不同的随机噪声。也就是他们两个人的方程是y=β*x+ϵy = \ beta * x+\ε;唯一的区别是不同的随机噪声被用于ϵ在每种情况下。 + +![An example of overfitting. Both datasets were generated using the same model, with different random noise added to generate each set. The left panel shows the data used to fit the model, with a simple linear fit in blue and a complex (8th order polynomial) fit in red. The root mean square error (RMSE) values for each model are shown in the figure; in this case, the complex model has a lower RMSE than the simple model. The right panel shows the second dataset, with the same model overlaid on it and the RMSE values computed using the model obtained from the first dataset. Here we see that the simpler model actually fits the new dataset better than the more complex model, which was overfitted to the first dataset.](../media/file27.png) + +图5.6:过度拟合的例子。两个数据集都是使用相同的模型生成的,每个数据集都添加了不同的随机噪声。左图显示了用于拟合模型的数据,简单的线性拟合用蓝色表示,复杂的(8阶多项式)拟合用红色表示。每个模型的均方根误差(RMSE)值如图所示;在这种情况下,复杂模型的RMSE低于简单模型。右侧面板显示了第二个数据集,其上覆盖了相同的模型,并且使用从第一个数据集获得的模型计算了RMSE值。在这里,我们看到更简单的模型实际上比更复杂的模型更适合新的数据集,更复杂的模型过度适合第一个数据集。 + +图 [5.6](#fig:Overfitting) 中的左图显示,更复杂的模型(红色)比更简单的模型(蓝色)更符合数据。然而,当相同的模型应用于以相同方式生成的新数据集时,我们看到了相反的情况——在这里,我们看到较简单的模型比较复杂的模型更适合新数据。直观地,我们可以看到,更复杂的模型受第一个数据集中特定数据点的影响很大;由于这些数据点的确切位置是由随机噪声驱动的,这导致更复杂的模型不适合新数据集。这就是我们所说的*过度拟合*现象。现在重要的是要记住我们的模型需要很好,但不能太好。正如艾伯特·爱因斯坦(1933年)所说:“几乎不能否认,所有理论的最高目标是在不放弃一个经验数据的充分表示的情况下,使不可约的基本元素尽可能简单和少。”这句话经常被解释为:“一切都应该尽可能简单,但不能更简单。” + +
+ +
+ +## 5.5 使用平均值汇总数据 + +我们已经遇到了上面的均值(或平均值),事实上大多数人即使没有上过统计课也知道平均值。它通常用于描述我们所说的数据集的“集中趋势”,即数据以什么值为中心?大多数人并不认为计算平均值就是用数据拟合模型。然而,这正是我们在计算平均值时所做的。 + +我们已经看到了计算样本数据平均值的公式: + +【X5】= + +请注意,我说过这个公式是专门针对数据的*样本*的,它是从一个更大的总体中选择的一组数据点。使用一个样本,我们希望表征一个更大的群体——我们感兴趣的全部个体。例如,如果我们是一个政治民意测验专家,我们感兴趣的人群可能是所有注册选民,而我们的样本可能只包括从这个人群中抽样的几千人。在第7章中,我们将更详细地讨论抽样,但现在重要的一点是,统计学家通常喜欢使用不同的符号来区分描述样本值的*统计*和描述总体真实值的*参数*;在这种情况下,总体平均值(表示为\ mu)的公式为: + +μ=I=1nxIn\ mu = \frac{\sum_{i=1}^{n}x_i}{n} + +我们已经看到,均值是保证给我们零平均误差的估计量,但我们也知道平均误差不是最好的标准;相反,我们需要一个能给出最低误差平方和(SSE)的估计量,均值也是如此。我们可以用微积分来证明这一点,但我们将在图 [5.7](#fig:MinSSE) 中用图形来演示。 + +![A demonstration of the mean as the statistic that minimizes the sum of squared errors. Using the NHANES child height data, we compute the mean (denoted by the blue bar). Then, we test a range of possible parameter estimates, and for each one we compute the sum of squared errors for each data point from that value, which are denoted by the black curve. We see that the mean falls at the minimum of the squared error plot.](../media/file28.png) + +图5.7:显示了最小化误差平方和的统计平均值。使用NHANES儿童身高数据,我们计算平均值(用蓝色条表示)。然后,我们测试一系列可能的参数估计值,对于每一个估计值,我们根据该值计算每个数据点的误差平方和,用黑色曲线表示。我们看到平均值落在平方误差图的最小值处。 + +SSE的最小化是一个很好的特性,这也是为什么平均值是最常用的汇总数据的统计量。然而,中庸也有阴暗面。假设五个人在一个酒吧,我们考察每个人的收入(Table [5.1](#tab:income1) ): + +Table 5.1: Income for our five bar patrons +| 收入 | 人 | +| --- | --- | +| Forty-eight thousand | 乔 | +| Sixty-four thousand | 克伦人 | +| Fifty-eight thousand | 标记 | +| Seventy-two thousand | 安德里亚 | +| Sixty-six thousand | 轻拍 | + +均值(61600.00)似乎是那五个人收入的一个相当不错的总结。现在让我们看看如果碧昂斯·诺尔斯走进酒吧会发生什么(表 [5.2](#tab:income2) )。 + +Table 5.2: Income for our five bar patrons plus Beyoncé Knowles. +| 收入 | 人 | +| --- | --- | +| Forty-eight thousand | 乔 | +| Sixty-four thousand | 克伦人 | +| Fifty-eight thousand | 标记 | +| Seventy-two thousand | 安德里亚 | +| Sixty-six thousand | 轻拍 | +| Fifty-four million | 碧昂丝(美国女歌手) | + +现在的平均值几乎是1000万美元,这并不真正代表酒吧里的任何人——特别是,它在很大程度上是由碧昂斯的外围价值驱动的。一般来说,平均值对极值非常敏感,这就是为什么在使用平均值汇总数据时确保没有极值总是很重要的原因。 + +
+ +### 5.5.1 使用中值稳健地汇总数据 + +如果我们想以一种对异常值不太敏感的方式来总结数据,我们可以使用另一种称为*中位数*的统计数据。如果我们将所有的值按大小排序,那么中值就是中间的值。如果有偶数个值,那么将有两个值并列在中间位置,在这种情况下,我们取这两个值的平均值(即中点)。 + +让我们看一个例子。假设我们要总结以下价值观: + +``` +8 6 3 14 12 7 6 4 9 +``` + +如果我们对这些值进行排序: + +``` +3 4 6 6 7 8 9 12 14 +``` + +那么中值就是中间值,在这种情况下,是9个值中的第5个。 + +平均值最小化误差的平方和,而中值最小化一个稍微不同的量:误差的绝对值之和。这解释了为什么它对异常值不太敏感——与取绝对值相比,平方会加剧大误差的影响。我们可以在收入的例子中看到这一点:中值收入(65,000美元)比平均值(9,051,333美元)更能代表整个群体,而且对一个大的异常值不太敏感。 + +有鉴于此,我们为什么要使用平均值呢?正如我们将在后面的章节中看到的,均值是“最好的”估计量,因为与其他估计量相比,它在样本间的变化较小。这取决于我们来决定是否值得对潜在的异常值敏感——统计学就是关于权衡的。 + +
+ +
+ +
+ +## 5.6 模式 + +有时我们希望描述一个非数值数据集的中心趋势。比如说,我们想知道iPhone的哪些型号最常用。为了测试这一点,我们可以询问一大群iPhone用户,每个人拥有哪种型号。如果我们取这些值的平均值,我们可能会看到平均iPhone型号为9.51,这显然是无意义的,因为iPhone型号并不意味着定量测量。在这种情况下,更合适的集中趋势度量是众数,这是数据集中最常见的值,正如我们上面讨论的那样。 + +
+ +
+ +## 可变性:平均值与数据的吻合程度如何? + +一旦我们描述了数据的中心趋势,我们通常还想描述数据的可变性——这有时也称为“分散”,反映了它描述了数据的分散程度。 + +我们已经在上面遇到了误差平方和,这是最常用的可变性测量的基础:方差*和T2标准差*。总体的方差(称为2\sigma^2)就是误差平方和除以观察次数——也就是说,它与您之前遇到的*均方差*完全相同: + += + +其中μ\ mu为人口平均数。总体标准差就是这个的平方根——也就是我们之前看到的*均方根误差*。标准差很有用,因为误差与原始数据的单位相同(撤消我们对误差应用的平方)。 + +我们通常无法访问整个人口,所以我们必须使用样本来计算方差,我们称之为【σ】̂2\hat{\sigma}^2,“帽子”表示这是基于样本的估计值。σ̂\hat{\sigma}^2的方程式与σ2\sigma^2的方程式相似: + += + +这两个方程的唯一区别是我们除以n - 1,而不是n。这涉及到一个基本的统计概念:*自由度*。记住,为了计算样本方差,我们首先必须估计样本均值x\ bar { x }。估计了这一点之后,数据中的一个值就不能再自由变化了。例如,假设我们有变量xx的以下数据点:[3,5,7,9,11],其平均值为7。因为我们知道这个数据集的平均值是7,所以我们可以计算出任何一个特定的值在它丢失的情况下会是多少。例如,假设我们要隐藏第一个值(3)。做了这些,我们仍然知道它的值必须是3, 因为7的平均值意味着所有值的总和是7n=357 * n = 3535( =335-(5+7+9+11)= 3。 + +所以当我们说我们“失去了”一个自由度时,意思是有一个值在拟合模型后不能自由变化。在样本方差的背景下,如果我们不考虑失去的自由度,那么我们对样本方差的估计将*有偏*,导致我们低估了对均值估计的不确定性。 + +
+ +
+ +## 5.8 使用模拟来理解统计数据 + +我坚信使用计算机模拟来理解统计概念,在后面的章节中,我们将更深入地挖掘它们的用途。在这里,我们将通过询问是否可以确认在计算样本方差时需要从样本量中减去1来介绍这一思想。 + +让我们将NHANES数据中的整个儿童样本视为我们的“总体”,并看看在分母中使用nnn1n-1的样本方差计算有多好,将跨来自数据的大量模拟随机样本来估计该总体的方差。我们将在后面的章节中回到如何做到这一点的细节。 + +Table 5.3: Variance estimates using n versus n-1; the estimate using n-1 is closer to the population value +| 估计 | 价值 | +| --- | --- | +| 总体方差 | Seven hundred and twenty-five | +| 使用n的方差估计 | Seven hundred and ten | +| 使用n-1的方差估计 | Seven hundred and twenty-five | + +[5.3](#tab:varsim) 中的结果向我们表明,上面概述的理论是正确的:使用n1n-1作为分母的方差估计值非常接近于根据完整数据(即总体)计算的方差,而使用nn计算的方差 + +
+ +
+ +## 5.9 Z分数 + +根据集中趋势和可变性描述了分布的特征后,根据各个分数相对于总体分布的位置来表示它们通常是有用的。假设我们感兴趣的是描述不同州之间犯罪的相对水平,以确定加州是否是一个特别危险的地方。我们可以使用来自联邦调查局统一犯罪报告网站的2014年数据来问这个问题。图 [5.8](#fig:crimeHist) 的左面显示了各州暴力犯罪数量的直方图,突出显示了加利福尼亚州的数值。看着这些数据,加州似乎非常危险,那一年有153709起犯罪。我们可以通过生成一个显示变量在各州分布的图来可视化这些数据,该图显示在图 [5.8](#fig:crimeHist) 的右侧面板中。 + +![Left: Histogram of the number of violent crimes. The value for CA is plotted in blue. Right: A map of the same data, with number of crimes (in thousands) plotted for each state in color.](../media/file29.png) + +图5.8:左图:暴力犯罪数量直方图。CA的值用蓝色标出。右图:相同数据的地图,用彩色标出了每个州的犯罪数量(以千计)。 + +然而,你可能已经想到,加州也是美国人口最多的州,所以它也有更多的犯罪是合理的。如果我们针对每个州的一个人口绘制犯罪数量图(见图 [5.9](#fig:popVsCrime) 的左图),我们会看到两个变量之间存在直接关系。 + +![Left: A plot of number of violent crimes versus population by state. Right: A histogram of per capita violent crime rates, expressed as crimes per 100,000 people.](../media/file30.png) + +图5.9:左图:各州暴力犯罪数量与人口的关系图。右图:人均暴力犯罪率直方图,以每10万人的犯罪率表示。 + +我们不应该使用犯罪的原始数字,而应该使用人均暴力犯罪率,这是通过将每个州的犯罪数量除以每个州的人口数量得到的。美国联邦调查局的数据集已经包含了这一数值(以每100,000人的比率表示)。看一下图 [5.9](#fig:popVsCrime) 的右图,我们会发现加州并不那么危险——它的犯罪率为每10万人中396.10人,略高于各州平均水平346.81人,但仍在许多其他州的范围之内。但是如果我们想更清楚地了解它离分布的其他部分有多远呢? + +Z值允许我们以一种方式表达数据,这种方式提供了对每个数据点与总体分布的关系的更深入的了解。假设我们知道总体平均值【mu】和标准差【σ【σ的值,则计算单个数据点的Z值的公式为: + +【z】()= + +直观地说,您可以将Z分数视为告诉您任何数据点离平均值有多远,以标准差为单位。我们可以对犯罪率数据进行计算,如图 [5.10](#fig:crimeZplot) 所示,该图绘制了Z分数与原始分数的关系。 + +![Scatterplot of original crime rate data against Z-scored data.](../media/file31.png) + +图5.10:原始犯罪率数据与Z得分数据的散点图。 + +散点图向我们展示了Z计分的过程并没有改变数据点的相对分布(从原始数据和Z计分的数据在相互标绘时落在一条直线上的事实中可以看出),它只是将它们移动到平均值为0,标准偏差为1。图 [5.11](#fig:crimeZmap) 显示了使用地理视图的Z得分犯罪数据。 + +![Crime data rendered onto a US map, presented as Z-scores.](../media/file32.png) + +图5.11:呈现在美国地图上的犯罪数据,以Z分数表示。 + +这为我们提供了一个更容易理解的数据视图。例如,我们可以看到内华达州、田纳西州和新墨西哥州的犯罪率都比平均值高出大约两个标准差。 + +
+ +### 5.9.1 解释Z分数 + +“Z-score”中的“Z”来自于标准正态分布(即均值为零、标准差为1的正态分布)通常被称为“Z”分布。我们可以使用标准正态分布来帮助我们理解特定的Z分数告诉我们关于数据点相对于分布的其余部分的位置。 + +![Density (top) and cumulative distribution (bottom) of a standard normal distribution, with cutoffs at one standard deviation above/below the mean.](../media/file33.png) + +图5.12:标准正态分布的密度(上图)和累积分布(下图),截止值在平均值之上/之下的一个标准差处。 + +图 [5.12](#fig:zDensityCDF) 中的上图显示,我们预计约有16%的值落在Z1Z \ ge 1中,同样比例的值落在Z1 + +![Density (top) and cumulative distribution (bottom) of a standard normal distribution, with cutoffs at two standard deviations above/below the mean](../media/file34.png) + +图5.13:标准正态分布的密度(上图)和累积分布(下图),在高于/低于平均值的两个标准差处有截止值 + +图 [5.13](#fig:zDensity2SD) 显示了两个标准差的相同曲线。这里我们看到只有大约2.3%的值落在Z—T11】2Z \ le-2Z2Z \ ge 2中因此,如果我们知道特定数据点的Z分数,我们可以估计找到至少与该值一样极端的值的可能性有多大,这使我们可以将值放入更好的上下文中。就犯罪率而言,我们看到加利福尼亚州的人均暴力犯罪率的Z值为0.38,这表明它非常接近其他州的平均值,大约35%的州具有较高的犯罪率,65%的州具有较低的犯罪率。 + +
+ +
+ +### 5.9.2 标准化分数 + +假设我们想要生成平均值为100、标准差为10的标准化犯罪分数,而不是Z分数。这类似于用智力测验的分数来产生智商(IQ)的标准化。我们可以通过简单地将Z分数乘以10,然后加上100来实现。 + +![Crime data presented as standardized scores with mean of 100 and standard deviation of 10.](../media/file35.png) + +图5.14:犯罪数据显示为标准化分数,平均值为100,标准差为10。 + +
+ +#### 5.9.2.1使用Z分数比较分布 + +Z分数的一个有用的应用是比较不同变量的分布。假设我们想比较暴力犯罪和财产犯罪在各州的分布情况。在图 [5.15](#fig:crimeTypePlot) 的左图中,我们用蓝色标出CA。如你所见,财产犯罪的原始比率远远高于暴力犯罪的原始比率,所以我们不能直接比较数字。然而,我们可以绘制这些数据彼此之间的Z分数(图 [5.15](#fig:crimeTypePlot) 的右图)——我们再次看到数据的分布没有变化。将数据放入每个变量的Z分数中,使它们具有可比性,并让我们看到,就暴力犯罪和财产犯罪而言,加州实际上位于分布的中间。 + +![Plot of violent vs. property crime rates (left) and Z-scored rates (right).](../media/file36.png) + +图5.15:暴力与财产犯罪率(左)和Z得分率(右)。 + +我们再给剧情加一个因素:人口。在图 [5.16](#fig:crimeTypePopPlot) 的左侧面板中,我们使用绘图符号的大小显示了这一点,这通常是向绘图添加信息的有用方式。 + +![Left: Plot of violent vs. property crime rates, with population size presented through the size of the plotting symbol; California is presented in blue. Right: Difference scores for violent vs. property crime, plotted against population. ](../media/file37.png) + +图5.16:左图:暴力犯罪率与财产犯罪率的对比图,人口数量通过绘图符号的大小表示;加州以蓝色呈现。右图:暴力犯罪与财产犯罪的得分差异,与人口相对照。 + +因为Z分数是直接可比的,所以我们也可以计算一个*差异分数*,它表示各州暴力与非暴力(财产)犯罪的相对比率。然后,我们可以绘制这些分数与人口的关系图(见图 [5.16](#fig:crimeTypePopPlot) )。这显示了我们如何使用Z分数将不同的变量放在一个共同的尺度上。 + +值得注意的是,最小的州似乎在两个方向上的差异最大。虽然看每个州并试图确定为什么它有高或低的差异分数可能是诱人的,但这可能反映了这样一个事实,即从较小的样本中获得的估计必然会更易变,正如我们将在第7章中讨论的那样。 + +
+ +
+ +
+ +
+ +## 5.10 学习目标 + +* 描述统计模型的基本方程(数据=模型+误差) +* 描述集中趋势和分散的不同度量,它们是如何计算的,以及在什么情况下适合。 +* 计算Z分数并描述它们为什么有用。 + +
+ +
+ +## 5.11 附录 + +
+ +### 5.11.1 证明平均值的误差总和为零 + +【e】【r】【r】【r】【o】【r】=】 + +【我】= + +【我】= + +【我】= + +【我】= + +
+ +
+ +
\ No newline at end of file diff --git a/docs/06.md b/docs/06.md new file mode 100644 index 0000000000000000000000000000000000000000..8d5703be63be1d492df69909fa02a15f067be913 --- /dev/null +++ b/docs/06.md @@ -0,0 +1,398 @@ +
+ +# 6 概率 + +概率论是处理机会和不确定性的数学分支。它是统计学基础的重要组成部分,因为它为我们提供了描述不确定事件的数学工具。概率研究的兴起部分是由于对理解像纸牌或骰子这样的机会游戏的兴趣。这些游戏提供了许多统计概念的有用例子,因为当我们重复这些游戏时,不同结果的可能性仍然(大部分)相同。然而,有一些关于概率意义的深层问题,我们在这里不讨论;如果你有兴趣了解这个有趣的话题及其历史,请看最后的推荐读物。 + +
+ +## 6.1 什么是概率? + +非正式地,我们通常认为概率是一个描述某个事件发生的可能性的数字,范围从零(不可能)到一(确定)。有时概率会用百分比来表示,范围从0到100,例如天气预报预测今天有20%的机会下雨。在每种情况下,这些数字都表达了特定事件发生的可能性,从绝对不可能到绝对肯定。 + +为了形式化概率论,我们首先需要定义几个术语: + +* 一个**实验**是产生或观察一个结果的任何活动。例如抛硬币、掷骰子或尝试新的工作路线,看看是否比旧路线快。 +* **样本空间**是实验可能结果的集合。我们用一组弯弯曲曲的括号来表示它们。对于抛硬币,样本空间是{正面,反面}。对于六面骰子,样本空间是可能出现的每个数字:{1,2,3,4,5,6}。对于到达工作地点所需的时间,样本空间是所有可能的大于零的实数(因为到达某个地方不会花费负的时间,至少目前不会)。我们不会费心去写出括号内的所有数字。 +* 一个**事件**是样本空间的子集。原则上,它可能是样本空间中的一个或多个可能的结果,但这里我们将主要关注由一个可能的结果组成的*基本事件*。例如,这可能是在一次抛硬币中获得正面,在掷骰子中掷出4,或者花21分钟通过新路线回家。 + +既然我们有了这些定义,我们就可以勾勒出概率的形式特征,它是由俄罗斯数学家安德烈·科尔莫戈罗夫首先定义的。如果一个值*成为一个概率,那么这些就是这个值*必须具备的特征。假设我们有一个由N个独立事件定义的样本空间,E1E2 EN{ E _ 1,E_2,...,E_N}XX是随机变量,表示发生了哪个事件。P(X=EI)P(X = E _ I)是事件发生的概率 + +* 概率不能为负:P(X=EI)0P(X = E _ I)\ ge 0 +* 样本空间中所有结果的总概率为1;也就是说,如果,如果我们把每个Ei的概率加起来,它们的总和一定是1。我们可以用求和符号\ sum:I=1NP(X=P(XE1)+P( +p(x=en)=1\sum_{i=1}^n{p(x=e_i)} = p(x = e...+ P(X=E_N) = 1 这些必须加在一起。” + +* 任何单个事件的概率都不能大于一:P(XEI)1P(X = E _ I)\ le 1。这是前一点所暗示的;因为它们的总和必须是1,而且它们不能是负的,那么任何特定的概率都不能超过1。 + +
+ +
+ +## 我们如何确定概率? + +现在我们知道了概率是什么,我们如何实际计算出任何特定事件的概率是多少呢? + +
+ +### 6.2.1 个人信念 + +假设我问你,如果伯尼·桑德斯是民主党提名人而不是希拉里,他赢得2016年总统大选的概率是多少?我们实际上不能做实验来寻找结果。然而,大多数了解美国政治的人会愿意至少对这一事件的可能性提供一个猜测。在许多情况下,个人知识和/或意见是我们确定事件概率的唯一指导,但这在科学上并不令人满意。 + +
+ +
+ +### 6.2.2 经验频率 + +另一种确定事件发生概率的方法是多次做实验,并计算每个事件发生的频率。根据不同结果的相对频率,我们可以计算出每个结果的概率。例如,我们想知道旧金山下雨的概率。我们首先必须定义这个实验——假设我们将查看2017年每天的国家气象局数据,并确定旧金山市中心气象站是否下雨。根据这些数据,2017年有73个雨天。为了计算旧金山下雨的概率,我们简单地用下雨的天数除以统计的天数(365),得出2017年旧金山的雨)= 0.2。 + +我们怎么知道经验概率给了我们正确的数字?这个问题的答案来自于*大数定律*,表明经验概率会随着样本量的增加而向真概率逼近。我们可以通过模拟大量的硬币投掷,并查看我们对每次投掷后正面概率的估计来了解这一点。我们将在后面的章节中花更多的时间讨论模拟;现在,假设我们有一种计算方法来为每次抛硬币产生随机结果。 + +图 [6.1](#fig:ElectionResults) 的左图显示,随着样本数量(即抛硬币试验)的增加,估计的正面概率收敛到真实值0.5。但是,请注意,当样本量很小时,估计值可能与真实值相差很远。这方面的一个真实例子是2017年阿拉巴马州美国参议院特别选举,共和党人罗伊·摩尔与民主党人道格·琼斯进行了对决。图 [6.1](#fig:ElectionResults) 的右侧面板显示了随着计票数量的增加,当晚每位候选人的相对票数。晚上早些时候的计票尤其不稳定,从琼斯最初的大幅领先到摩尔长期领先,直到最后琼斯领先赢得比赛。 + +![Left: A demonstration of the law of large numbers. A coin was flipped 30,000 times, and after each flip the probability of heads was computed based on the number of heads and tail collected up to that point. It takes about 15,000 flips for the probability to settle at the true probability of 0.5\. Right: Relative proportion of the vote in the Dec 12, 2017 special election for the US Senate seat in Alabama, as a function of the percentage of precincts reporting. These data were transcribed from https://www.ajc.com/news/national/alabama-senate-race-live-updates-roy-moore-doug-jones/KPRfkdaweoiXICW3FHjXqI/](../media/file38.png) + +图6.1:左图:大数定律的演示。一枚硬币被抛了30,000次,每次抛完之后,正面的概率是根据当时收集到的正面和反面的数量来计算的。大约需要15,000次翻转,概率才会稳定在0.5的真实概率。右图:2017年12月12日阿拉巴马州美国参议院席位特别选举中投票的相对比例,作为选区报告百分比的函数。这些数据转录自[https://www . AJC . com/news/national/Alabama-Senate-race-live-updates-Roy-Moore-Doug-Jones/kprfkdaweixizw3fhjxqi/](https://www.ajc.com/news/national/alabama-senate-race-live-updates-roy-moore-doug-jones/KPRfkdaweoiXICW3FHjXqI/) + +这两个例子表明,虽然大样本最终会收敛于真实概率,但小样本的结果可能相差甚远。不幸的是,许多人忘记了这一点,过度解读小样本的结果。心理学家丹尼·卡尼曼和阿莫斯·特沃斯基称之为“小数字定律”( T0 )( T1 ),他们指出,人们(甚至是训练有素的研究人员)经常表现得好像大数定律甚至适用于小样本,过于相信基于小数据集的结果。我们将在整个课程中看到一些例子,说明基于小样本生成的统计结果是多么不稳定。 + +
+ +
+ +### 6.2.3 经典概率 + +我们中的任何人都不太可能将硬币抛过数万次,但我们仍然愿意相信抛头的概率是0.5。这反映了使用另一种方法来计算概率,我们称之为经典概率。在这种方法中,我们直接根据对情况的了解来计算概率。 + +经典概率起源于对骰子和纸牌等概率游戏的研究。一个著名的例子来自一个名叫谢瓦利埃·德·梅雷的法国赌徒遇到的一个问题。de Méré玩了两种不同的骰子游戏:在第一种游戏中,他赌的是在四个六面骰子上至少有一个六的机会,而在第二种游戏中,他赌的是在24个双骰子上至少有一个双六的机会。他期望在这两次赌博中都赢到钱,但是他发现虽然平均来说他在第一次赌博中赢了钱,但是当他多次进行第二次赌博时,他实际上平均来说输了钱。为了理解这一点,他求助于他的朋友,数学家布莱士·帕斯卡,他现在被认为是概率论的创始人之一。 + +用概率论怎么理解这个问题?在经典概率中,我们从假设样本空间中的所有基本事件都是同等可能的开始;也就是说,当你掷骰子时,每种可能的结果({1,2,3,4,5,6})发生的可能性是相等的。(不允许装骰子!)考虑到这一点,我们可以将任何单个结果的概率计算为除以可能结果的数量: + +P(outcomeI)=1 + +对于六面骰子,每个单独结果的概率是1/6。 + +这很好,但德梅雷对更复杂的事件感兴趣,比如多次掷骰子会发生什么。我们如何计算复杂事件(即单个事件的*联合*)的概率,比如在第一次*中掷出6或者第二次*中掷出6?我们用\杯 符号在数学上表示事件的联合:例如, 如果在第一次投掷上掷出一个六的概率称为P(Roll6thRow 第二次掷出一个六的概率是P(Roll6h 那么这个工会就简称为P(Rol6thR row2)P(roll 6 _ { throw 1 } \ cup roll 6 _ { throw 2 }) + +de Méré认为(不正确,我们将在下面看到),他可以简单地将单个事件的概率相加来计算组合事件的概率,这意味着在第一次或第二次掷骰子时掷出6的概率计算如下: + +【p】【r】 = 1/6(或【o】 + +【d】【e】【m】【是【r】【是】 错误: o【w】【2】)= +【r6=【T1191】/p(卷6 _ {扔1 } \ cup + +de Méré基于这个错误的假设进行推理,即四次掷骰中至少有一次六的概率是每次单独掷出的概率之和:4*16=234 * \ frac { 1 } { 6 } = \ frac { 2同样,他推断,既然掷出两个骰子时出现双六的概率是1/36,那么在24次掷出的两个骰子中至少有一个双六的概率将是24*T34】136=23然而,虽然他在第一次下注时一直赢钱,但在第二次下注时却输了。怎么回事? + +为了理解de Méré的错误,我们需要介绍一些概率论的规则。第一个是减法的*法则,它说某个事件A *而不是*发生的概率是1减去该事件发生的概率:* + +【p】(【a】) + +其中A\ neg A表示“不是A”。这条规则直接来源于我们上面讨论的公理;因为A和A\ neg A是唯一可能的结果,那么它们的总概率之和必须为1。例如,如果在单次投掷中掷出一个1的概率是1\ frac { 1 } { 6 },那么掷出一个以外的任何东西的概率是56\ frac { 5 } { 6 } + +第二个规则告诉我们如何计算联合事件的概率——即两个事件同时发生的概率。我们将此称为*交点*,用\ cap符号表示;由此,P(AB)P(A \ cap B)表示A和B都发生的概率。我们将集中讨论这个规则的一个版本,它告诉我们在两个事件相互独立的特殊情况下如何计算这个量;我们稍后将确切了解*独立性*的概念是什么意思,但是现在我们可以理所当然地认为两次掷骰子是独立的事件。我们通过简单地将单个事件的概率相乘来计算两个独立事件相交的概率: + +P(AB)=P(A)*P \ text {当且仅当A和B是独立的} 因此,两次掷出6的概率是16*16=1 + +第三条规则告诉我们如何将概率加在一起——正是在这里,我们看到了德·梅勒错误的根源。加法法则告诉我们,要获得两个事件中任何一个发生的概率,我们将各个概率相加,然后减去两个事件同时发生的可能性: + +P(AB)=P(A+PP(A \ cup B)= P(A)+P(B)-P(A \ cap B)从某种意义上说,这阻止了我们对那些实例进行两次计数,这也是该规则与de Méré错误计算的区别所在。 假设我们想找出两次投掷中任何一次掷出6的概率。根据我们的规定: + +【p】【r】【2】)=( +【p104】【r】【T1112】【l】 【T1137】-【T1138】【T1142】【l148】 w【2】)p(卷6 _ {扔1} \ cup 6 _ {扔2}) = P(卷6 _ {扔1 })) + +![Each cell in this matrix represents one outcome of two throws of a die, with the columns representing the first throw and the rows representing the second throw. Cells shown in red represent the cells with a six in either the first or second throw; the rest are shown in blue.](../media/file39.png) + +图6.2:这个矩阵中的每个单元格代表一个骰子两次投掷的结果,列代表第一次投掷,行代表第二次投掷。显示为红色的单元格表示第一次或第二次投掷中有6的单元格;其余的用蓝色显示。 + +让我们使用图形描述来获得这个规则的不同视图。图 [6.2](#fig:ThrowMatrix) 显示了代表两次投掷结果的所有可能组合的矩阵,并突出显示了第一次或第二次投掷中包含6的单元格。如果你数一下红色的细胞,你会看到有11个这样的细胞。这说明了为什么加法法则给出了与德·梅雷不同的答案;如果我们像他那样简单地把两次投掷的概率加在一起,那么我们会两次都数(6,6),而实际上只应该数一次。 + +
+ +
+ +### 6.2.4 解决德梅雷的问题 + +布莱士·帕斯卡利用概率法则想出了一个解决德·梅雷问题的办法。首先,他意识到计算一个组合中至少一个事件发生的概率是复杂的,而计算几个事件中某件事不发生的概率相对容易——它只是单个事件概率的乘积。因此,他不是计算四次投掷中至少有一次六的概率,而是计算所有投掷中没有六的概率: + +【p】(【不要在四辆劳斯莱斯里塞思=】 【5】【6】= + +然后,他利用四次掷骰中没有六点的概率是四次掷骰中至少有一个六点的补数这一事实(因此它们的总和必须是一),并利用减法规则来计算感兴趣的概率: + +p(四卷中至少有一卷六卷)=1-(56)4=】 + +de Méré赌他会在四次掷骰子中至少掷出一个6,这个概率大于0.5,这解释了为什么de Méré平均在这个赌注上赚了钱。 + +但是德梅雷的第二次赌注呢?帕斯卡使用了同样的伎俩: + +P(24卷中无双六)=(3536【T24)24=0.509 = \bigg(\frac{35}{36}\bigg)^{24}=0.509p24卷=1-(3536 + +这一结果的概率略低于0.5,这表明了为什么德梅雷在这场赌博中平均输钱。 + +
+ +
+ +
+ +## 6.3 概率分布 + +*概率分布*描述了实验中所有可能结果的概率。例如,2018年1月20日,篮球运动员斯蒂芬·库里在对阵休斯顿火箭队的比赛中,4次罚球中只有2次。我们知道库里整个赛季罚球的总概率是0.91,所以他在一场比赛中只有50%的罚球命中率似乎不太可能,但这到底有多不可能?我们可以使用理论概率分布来确定这一点;在本书中,我们会遇到许多这样的概率分布,每一种都适合于描述不同类型的数据。在这种情况下,我们使用*二项式*分布,它提供了一种方法来计算一些成功的概率,这些成功或失败的试验(称为“伯努利试验”)中,给定每个试验的一些已知的成功概率。这种分布被定义为: + +【p】【K9】)=n,p)= p(x = k)= \ binom { n } { k } p ^ k(1-p)^ { n-k } + +这是指当成功概率为p时,n次试验中k次成功的概率,你可能不熟悉(nk)\ binom { n } { k },简称为*二项式系数*。二项式系数也被称为“n-choose-k ”,因为它描述了从n个项目中选择k个项目的不同方法的数量。二项式系数计算如下: + +(nk)=n k (n—T36】k)【binom { n } { k } = \ frac { n!}{k!(n-k)!} 感叹号(!)指的是*数的阶乘*: + +== *n!= \prod_{i=1}^n i = n*(n-1)*-我...。*2*1 + +乘积运算符\ prod与求和运算符\ sum类似,只是前者是乘法而不是加法。在这种情况下,它是将从1到nn的所有数字相乘。 + +以斯蒂芬·库里的罚球为例: + +【p】【0.91】=(【t】4 . 0 . 91)= \ binom { 4 } { 2 } 0.91 ^ 2(1-0.91)^ { 4-2 } = 0.040 + +这表明,鉴于库里的整体罚球命中率,他不太可能在4次罚球中只命中2次。这正说明了不可能的事情确实在现实世界中发生了。 + +
+ +### 6.3.1 累积概率分布 + +通常我们不仅想知道一个特定值的可能性有多大,还想知道找到一个与特定值一样极端或比特定值更极端的值的可能性有多大;当我们在第9章讨论假设检验时,这将变得非常重要。要回答这个问题,我们可以用一个*累积*的概率分布;标准概率分布告诉我们某个特定值的概率,而累积分布告诉我们某个值大于或等于(或小于或等于)某个特定值的概率。 + +在罚球的例子中,我们可能想知道:假设斯蒂芬库里的总罚球概率为0.91,那么他在四次罚球中命中2次*或更少*的概率是多少。为了确定这一点,我们可以简单地使用二项式概率方程,插入k的所有可能值,并将它们加在一起: + +【p】(【k】+【k57】=0 + +在许多情况下,可能结果的数量太大,我们无法通过列举所有可能的值来计算累积概率;幸运的是,它可以直接计算任何理论概率分布。表 [6.1](#tab:freethrow) 显示了上例中每种可能的罚球成功次数的累积概率,从中我们可以看出,库里4次罚球中2次或更少罚球落地的概率为0.043。 + +Table 6.1: Simple and cumulative probability distributions for number of successful free throws by Steph Curry in 4 attempts. +| 数字成功 | 可能性 | 累积概率 | +| --- | --- | --- | +| Zero | Zero | Zero | +| one | Zero point zero zero three | Zero point zero zero three | +| Two | Zero point zero four | Zero point zero four three | +| three | Zero point two seven one | Zero point three one four | +| four | Zero point six eight six | One | + +
+ +
+ +## 6.4 条件概率 + +到目前为止,我们把自己限制在简单的概率上——也就是说,单一事件或事件组合的概率。然而,我们经常希望在已知其他事件已经发生的情况下确定某个事件的概率,这被称为*条件概率*。 + +我们以2016年美国总统大选为例。我们可以用两个简单的概率来描述选民。首先,我们知道美国一个选民隶属于共和党的概率:p(RepublIcan我们也知道选民投票支持川普的概率:p(Trumpv【T60Te然而,假设我们想知道以下问题:假设一个人是共和党人,他投票给唐纳德·特朗普*的概率是多少?* + +要计算给定B的条件概率(我们写为P(A|B)P(A | B),“A的概率,给定B”),我们需要知道*联合概率*(即A和B都发生的概率 + +【p】【a】|【b】 + +也就是说,我们想知道两个事物都为真的概率,假定被作为条件的一个是真的。 + +![A graphical depiction of conditional probability, showing how the conditional probability limits our analysis to a subset of the data.](../media/file40.png) + +图6.3:条件概率的图形描述,显示了条件概率如何将我们的分析限制在数据的一个子集。 + +图形化地思考这一点会很有用。图 [6.3](#fig:conditionalProbability) 显示了一个流程图,描述了全部选民如何细分为共和党和民主党,以及条件概率(以政党为条件)如何根据他们的投票进一步细分每个政党的成员。 + +
+ +
+ +## 6.5 根据数据计算条件概率 + +我们也可以直接从数据中计算条件概率。假设我们对以下问题感兴趣:假设某人没有进行体育锻炼,那么他患糖尿病的概率是多少?——即P(dIbetes|InacNHANES数据集包括两个变量,解决这个问题的两个部分。第一个(`Diabetes`)询问该人是否被告知他们患有糖尿病,第二个(`PhysActive`)记录该人是否参加至少中等强度的运动、健身或娱乐活动。让我们首先计算简单概率,如表 [6.2](#tab:simpleProb) 所示。该表显示,NHANES数据集中有人患糖尿病的概率为. 1,有人不活动的概率为. 45。 + +Table 6.2: Summary data for diabetes and physical activity +| 回答 | 糖尿病 | p _糖尿病 | 生理活性物质 | P_PhysActive | +| --- | --- | --- | --- | --- | +| 不 | Four thousand eight hundred and ninety-three | Zero point nine | Two thousand four hundred and seventy-two | Zero point four five | +| 是 | Five hundred and fifty | Zero point one | Two thousand nine hundred and seventy-one | Zero point five five | + +Table 6.3: Joint probabilities for Diabetes and PhysActive variables. +| 糖尿病 | 物理活性的 | n | 问题 | +| --- | --- | --- | --- | +| 不 | 不 | Two thousand one hundred and twenty-three | Zero point three nine | +| 不 | 是 | Two thousand seven hundred and seventy | Zero point five one | +| 是 | 不 | Three hundred and forty-nine | Zero point zero six | +| 是 | 是 | Two hundred and one | Zero point zero four | + +来计算P(dIabetes|Inac这些如表 6.3 所示。基于这些联合概率,我们可以计算出P(dIabetes|在计算机程序中做到这一点的一种方法是,首先确定每个个体的体力活动变量是否等于“否”,然后取这些真值的平均值。由于真/假值分别被大多数编程语言(包括R和Python)视为1/0,这允许我们通过简单地取代表其真值的逻辑变量的平均值来容易地识别简单事件的概率。然后,我们使用该值来计算条件概率,我们发现,假设某人不运动,那么他患糖尿病的概率是0.141。 + +
+ +
+ +## 6.6 独立性 + +“独立”一词在统计学中有非常具体的含义,与该词的通常用法有些不同。两个变量之间的统计独立性意味着知道一个变量的值并不能告诉我们另一个变量的值。这可以表示为: + +P(A|B)=P(A)P(A | B)= P(A) + +也就是说,给定B的某个值的概率恰好与A的总体概率相同。从这个角度看,我们看到现实世界中许多我们称之为“独立”的情况实际上在统计上并不独立。例如,目前有一小群加州公民正在采取行动,宣布成立一个名为杰斐逊的新的独立州,该州将包括北加州和俄勒冈州的一些县。如果发生这种情况,那么当前加州居民现在居住在杰斐逊州的概率将是P(杰斐逊)=0.014P(\ text {杰斐逊})=0.014 ,而他们将继续居住在杰斐逊州的概率新的州可能在政治上是独立的,但是他们在统计上是独立的,因为如果我们知道一个人是杰斐逊派,那么我们可以确定他们不是加利福尼亚人!也就是说,在普通语言中,独立性通常指的是具有排他性的集合,而统计独立性指的是无法从一个变量的值预测另一个变量的情况。例如,知道一个人的头发颜色不太可能告诉你他们更喜欢巧克力还是草莓冰淇淋。 + +让我们用NHANES的数据来看另一个例子:身体健康和精神健康是相互独立的吗?NHANES包括两个相关的问题:*physical active*,询问个人是否身体活跃,以及*daysmenthmethbad*,询问个人在过去30天中有多少天经历了糟糕的心理健康。让我们把任何一个在过去的一个月里有超过7天精神健康状况不佳的人都视为精神健康状况不佳。基于此,我们可以定义一个叫做 *badMentalHealth* 的新变量,作为一个逻辑变量,告诉我们每个人是否有超过7天的不良心理健康。我们可以首先汇总数据,显示有多少人属于这两个变量的每个组合(如表 [6.4](#tab:mhCounts) 所示),然后除以观察总数,创建一个比例表(如表 [6.5](#tab:mhProps) 所示): + +Table 6.4: Summary of absolute frequency data for mental health and physical activity. +| 物理活性的 | 心理健康状况不佳 | 精神健康 | 总数 | +| --- | --- | --- | --- | +| 不 | Four hundred and fourteen | One thousand six hundred and sixty-four | Two thousand and seventy-eight | +| 是 | Two hundred and ninety-two | One thousand nine hundred and twenty-six | Two thousand two hundred and eighteen | +| 总数 | Seven hundred and six | Three thousand five hundred and ninety | Four thousand two hundred and ninety-six | + +Table 6.5: Summary of relative frequency data for mental health and physical activity. +| 物理活性的 | 心理健康状况不佳 | 精神健康 | 总数 | +| --- | --- | --- | --- | +| 不 | Zero point one | Zero point three nine | Zero point four eight | +| 是 | Zero point zero seven | Zero point four five | Zero point five two | +| 总数 | Zero point one six | Zero point eight four | One | + +这向我们显示了落入每个单元的所有观察值的比例。但是,这里我们想知道的是心理健康不好的条件概率,取决于一个人是否身体活跃。为了计算这一点,我们将每个身体活动组除以其观察总数,这样每一行总计为一(如表 [6.6](#tab:condProb) 所示)。在这里,我们看到每个身体活动组的心理健康好坏的条件概率(在上面两行)以及心理健康好坏的总体概率在第三行。为了确定心理健康和身体活动是否是独立的,我们将比较不良心理健康的简单概率(在第三行)和假设一个人是身体活动的不良心理健康的条件概率(在第二行)。 + +Table 6.6: Summary of conditional probabilities for mental health given physical activity. +| 物理活性的 | 心理健康状况不佳 | 精神健康 | 总数 | +| --- | --- | --- | --- | +| 不 | Zero point two | Zero point eight | one | +| 是 | Zero point one three | Zero point eight seven | one | +| 总数 | Zero point one six | Zero point eight four | one | + +心理健康不良的总体概率P(心理健康不良)P(\ text {心理健康不良}) 为0.16而条件概率P(心理健康不良|身体活跃因此,条件概率似乎比总体概率小一些,这表明它们不是独立的,尽管我们不能仅通过查看数字来确定,因为这些数字可能因我们样本中的随机可变性而不同。在本书的后面,我们将讨论统计工具,让我们直接测试两个变量是否独立。 + +
+ +
+ +## 反转一个条件概率:贝叶斯法则 + +很多时候,我们知道P(A|B)P(A | B)但是我们真正想知道的是P(B这种情况一般发生在医学筛查中,我们哪里知道P(阳性检测结果|疾病)(P(\ text {阳性检测结果|疾病}) 但是我们想知道的是 P 例如,一些医生建议50岁以上的男性使用一种名为前列腺特异性抗原(PSA)的测试进行筛查,以筛查可能的前列腺癌。在测试被批准用于医疗实践之前,制造商需要测试测试性能的两个方面。首先,他们需要表明*对*有多敏感——也就是说,当疾病出现时,发现它的可能性有多大: 敏感性=P(阳性检测|疾病)\ text { sensitivity } = P(\他们还需要显示*特异性*如何:即在没有疾病存在的情况下,给出阴性结果的可能性有多大: 特异性=P(阴性测试|无疾病)对于PSA测试,我们知道灵敏度约为80%,特异性约为70%。然而,这些并没有回答医生想要为任何特定患者回答的问题:假设检测结果为阳性,他们实际上患癌症的可能性有多大?这就要求我们把定义灵敏度的条件概率反过来:而不是P(PosItIve dIsease)P(正) 测试|疾病) 我们想知道P(dIsease + +为了反转一个条件概率,我们可以使用*贝叶斯法则*: + +【p】(【b】【a1】 + +根据我们在本章前面学到的概率规则,贝叶斯规则很容易推导出来(有关推导过程,请参见附录)。 + +如果我们只有两种结果,我们可以用更清晰的方式表达贝叶斯法则,用求和法则重新定义P(A)P(A): + +【p】(【a】= *【p62】(【b】) + +利用这一点,我们可以重新定义贝叶斯法则: + +【p】(【b】【a1】)【b70】 + +我们可以将相关数字代入这个等式,以确定PSA结果阳性的个人实际患有癌症的可能性——但请注意,为了做到这一点,我们还需要知道该人患癌症的总体概率,我们通常称之为*基础率*。让我们假设一个60岁的老人,他在未来10年内患前列腺癌的概率是P(cancer【T22)=0.058使用我们上面概述的灵敏度和特异性值,我们可以计算出给定阳性测试的个体患癌症的可能性: + +P(癌|验)=P(验|癌)*P(P()+P(验| ) 0.80.058+0.3*0.942= 许多人都这样做,事实上,有大量心理学文献表明,人们在判断时会系统性地忽略*基础率*(即总体患病率)。 + +
+ +
+ +## 6.8 数据学习 + +另一种思考贝叶斯法则的方式是在数据的基础上更新我们的信念——也就是说,使用数据来了解世界。让我们再来看看贝叶斯法则: + +【p】(【b】【a1】 + +贝叶斯规则的不同部分有特定的名称,这与它们在使用贝叶斯规则更新我们的信念中的作用有关。我们从对B(P(B)P(B))的概率的初步猜测开始,我们称之为*先验*概率。在PSA的例子中,我们使用基础率作为我们的先验,因为在我们知道测试结果之前,这是我们对个体患癌几率的最佳猜测。然后我们收集一些数据,在我们的例子中是测试结果。数据A与结果B的一致程度由P(A|B)P(A | B)给出,我们称之为*可能性*。你可以认为这是数据的可能性,假设被测试的特定假设是真的。在我们的例子中,被测试的假设是个体是否患有癌症,可能性基于我们对测试灵敏度的了解(即,假设癌症存在,测试结果为阳性的概率)。分母(P(A)P(A))被称为*边际似然*,因为它表达了数据的总体似然,是B的所有可能值的平均值(在我们的例子中是疾病存在和疾病不存在)。胜负向左(P(B||A)P(B | A))被称为*后路*——因为它 + +有另一种写贝叶斯规则的方式可以使这一点更清楚: + +【p】(【b】【a1】 + +左边的部分(P(A|B)P(A)\ frac { P(A | B 而右边的部分(P(B)P(B))告诉我们,在我们对数据一无所知之前,我们认为B有多大的可能性。 这更清楚地表明,贝叶斯定理的作用是基于数据比总体更有可能给出B的程度来更新我们的先验知识。如果假设在给定数据的情况下比一般情况下更有可能,那么我们会增加对假设的信任;如果给定的数据不太可能,那么我们减少我们的信念。 + +
+ +
+ +## 6.9 优势比和优势比 + +上一部分的结果显示,根据阳性PSA测试结果,个人患癌症的可能性仍然相当低,尽管这是我们知道测试结果之前的两倍多。我们常常希望更直接地量化概率之间的关系,这可以通过将它们转换成表示某事发生或不发生的相对可能性的*赔率*来实现: +A的赔率=P(A)P + +在我们的PSA示例中,患癌症的几率(假设检测结果为阳性)为: + +癌症几率=P(癌症)P(癌症)= + +这告诉我们,即使测试呈阳性,患癌症的几率还是相当低的。作为比较,在一次掷骰子中掷出6的几率是: + +赔率6=15=0.2\ text {赔率6 } = \ frac { 1 } { 5 } = 0.2 + +此外,这也是为什么许多医学研究人员越来越警惕对相对罕见的疾病使用广泛的筛查测试的原因;大多数阳性结果将被证明是假阳性,导致不必要的后续检查和可能的并发症,更不用说增加病人的压力。 + +我们还可以通过计算所谓的*比值比*来比较不同的概率——听起来确实如此。例如,假设我们想知道阳性测试会增加个人患癌症的几率有多大。我们可以首先计算出*先验概率*——也就是说,在我们知道这个人检测呈阳性之前的概率。这些是使用基本费率计算的: + +=P()P()= + +然后,我们可以将这些与后验概率进行比较,后验概率是使用后验概率计算的: + +赔率 = 后验赔率 先验赔率=0.160.061=2.62\ text { odds ratio } = \ frac { \ text {后验赔率} } { \ text {后验赔率} + +这告诉我们,在测试结果为阳性的情况下,患癌症的几率增加了2.62倍。优势比是我们稍后称之为*效应大小*的一个例子,这是一种量化任何特定统计效应有多大的方法。 + +
+ +
+ +## 6.10 概率是什么意思? + +你可能会觉得,根据检测结果谈论一个人患癌症的可能性有点奇怪;毕竟,这个人要么得了癌症,要么没有。历史上,概率有两种不同的解释方式。第一种(被称为*频率主义者*解释)从长期频率的角度解释概率。例如,在抛硬币的情况下,在大量抛硬币后,它将反映头部的相对频率。虽然这种解释对于像掷硬币一样可以重复多次的事件可能有意义,但对于只会发生一次的事件,如个人生活或特定的总统选举,就不那么有意义了;正如经济学家约翰·梅纳德·凯恩斯(John Maynard Keynes)的名言,“从长期来看,我们都会死。” + +概率的另一种解释(称为*贝叶斯*解释)是对特定命题的信任程度。如果我问你“美国在2040年重返月球的可能性有多大”,你可以基于你的知识和信念给出这个问题的答案,即使没有相关的频率来计算频率主义者的概率。我们通常框定主观概率的一种方式是根据一个人接受特定赌博的意愿。例如,如果你认为美国在2040年登陆月球的概率是0.1(即赔率为9比1),那么这意味着你应该愿意接受一场赌博,如果事件发生,赔率将超过9比1。 + +正如我们将会看到的,这两种不同的概率定义与统计学家考虑检验统计假设的两种不同方式非常相关,我们将在后面的章节中遇到。 + +
+ +
+ +## 6.11 学习目标 + +阅读完本章后,您应该能够: + +* 描述所选随机实验的样本空间。 +* 计算一组给定事件的相对频率和经验概率 +* 计算单一事件、互补事件以及事件集合的联合和交集的概率。 +* 描述一下大数定律。 +* 描述概率和条件概率的区别 +* 描述统计独立性的概念 +* 使用贝叶斯定理计算逆条件概率。 + +
+ +
+ +## 6.12 建议读数 + +* 《酒鬼的行走:随机性如何主宰我们的生活》,作者列纳德·蒙洛迪诺 +* 佩尔西·戴康尼斯和布莱恩·斯凯尔姆的《关于机遇的十个伟大想法》 + +
+ +
+ +## 6.13 附录 + +
+ +### 6.13.1 贝叶斯法则的推导 + +首先,记住计算条件概率的规则: + +【p】【a】|【b】 + +我们可以重新排列,得到使用条件的计算联合概率的公式: + +【p】【a】【b】 + +利用这一点,我们可以计算逆概率: + +【p】(【b】【a1】=【p54】a + +
+ +
+ +
+ +
\ No newline at end of file diff --git a/docs/07.md b/docs/07.md new file mode 100644 index 0000000000000000000000000000000000000000..3afc7a2020d1cfc22c4a158d07ddac6758f36174 --- /dev/null +++ b/docs/07.md @@ -0,0 +1,105 @@ +
+ +# 7 采样 + +统计学中的一个基本思想是,我们可以根据总体中相对较小的个体样本,对整个总体做出推断。在这一章中,我们将介绍统计抽样的概念,并讨论它的工作原理。 + +任何生活在美国的人都会熟悉从政治民意调查中取样的概念,这已经成为我们选举过程的一个核心部分。在某些情况下,这些民意调查在预测选举结果时会非常准确。最著名的例子来自2008年和2012年美国总统选举,当时民调专家内特·西尔弗(Nate Silver)正确预测了2008年49/50个州和2012年全部50个州的选举结果。西尔弗是通过综合21个不同民调的数据得出这一结论的,这些数据在倾向于共和党或民主党的程度上有所不同。每一项民意调查都包括来自大约1000名潜在选民的数据——这意味着Silver能够利用仅来自大约21,000人的数据以及其他知识(如这些州过去的投票情况)几乎完美地预测超过1 . 25亿选民的投票模式。 + +
+ +## 7.1 我们如何采样? + +我们抽样的目的是确定感兴趣的整个人口的统计值,只使用人口的一个小子集。我们这样做主要是为了节省时间和精力——当仅仅一个小样本就足以准确估计感兴趣的统计数据时,为什么还要费事去测量群体中的每个个体呢? + +在选举示例中,人口是被调查区域中的所有注册选民,样本是由投票组织选择的1000个人的集合。我们选择样本的方式对于确保样本能够代表整个人口是至关重要的,这也是统计抽样的一个主要目标。很容易想象一个不具有代表性的样本;如果民意测验专家只打电话给他们从当地民主党那里得到名字的个人,那么民意测验的结果就不可能代表全体人口。一般来说,我们将代表性投票定义为人口中的每个成员都有平等的机会被选中。当这失败时,我们就不得不担心我们对样本计算的统计数据是否有*偏差*——也就是说,它的值是否系统地不同于总体值(我们称之为*参数*)。请记住,我们通常不知道这个总体参数,因为如果我们知道,那么我们就不需要采样!但是我们会用例子来说明一些关键的观点,在这些例子中我们可以接触到整个人群。 + +区分两种不同的采样方式也很重要:有替换和没有替换。在使用替换的采样*中,在群体的一个成员被采样后,他们被放回池中,以便他们可能被再次采样。在*无替换抽样*中,成员一旦被抽样,就没有资格再次被抽样。最常见的是使用无替换采样,但是在某些情况下我们会使用有替换采样,比如我们在第 [8](#resampling-and-simulation) 章中讨论一种叫做*引导*的技术。* + +
+ +
+ +## 7.2 采样误差 + +不管我们的样本有多有代表性,我们从样本中计算出的统计数据很可能会与总体参数略有不同。我们称之为*采样误差*。如果我们取多个样本,我们的统计估计值也会因样本而异;我们将样本间的统计分布称为*抽样分布*。 + +抽样误差直接关系到我们测量人口的质量。显然,我们希望从样本中获得的估计值尽可能接近总体参数的真实值。然而,即使我们的统计是无偏的(即,我们期望它具有与总体参数相同的值),任何特定估计的值都将不同于总体值,并且当抽样误差较大时,这些差异将会较大。因此,减少采样误差是提高测量质量的重要一步。 + +我们将使用NHANES数据集作为例子;我们将假设NHANES数据集是感兴趣的整个人群,然后我们将从该人群中抽取随机样本。我们将在下一章详细讲述在计算机中如何产生“随机”样本。 + +在本例中,我们知道成人人口身高的平均值(168.35)和标准差(10.16),因为我们假设NHANES数据集*是人口的*。表 [7.1](#tab:sampleExample) 显示了从NHANES人群的50个个体的几个样本计算的统计数据。 + +Table 7.1: Example means and standard deviations for several samples of Height variable from NHANES. +| 采样平均 | 样品 | +| --- | --- | +| One hundred and sixty-seven | Nine point one | +| One hundred and seventy-one | Eight point three | +| One hundred and seventy | Ten point six | +| One hundred and sixty-six | Nine point five | +| One hundred and sixty-eight | Nine point five | + +样本均值和标准差相似,但不完全等于总体值。现在,让我们从50个个体中抽取大量样本,计算每个样本的平均值,并查看平均值的抽样分布。为了很好地估计抽样分布,我们必须决定取多少样本——在这种情况下,我们将取5000个样本,这样我们对答案非常有信心。请注意,像这样的模拟有时需要几分钟才能运行,可能会让您的计算机气鼓鼓的。图 [7.1](#fig:samplePlot) 中的直方图显示,50个个体的每个样本的估计均值略有不同,但总体而言,它们以总体均值为中心。5000个样本平均值(168.3463)非常接近真实总体平均值(168.3497)。 + +![The blue histogram shows the sampling distribution of the mean over 5000 random samples from the NHANES dataset. The histogram for the full dataset is shown in gray for reference.](../media/file41.png) + +图7.1:蓝色直方图显示了NHANES数据集中超过5000个随机样本的平均抽样分布。完整数据集的直方图以灰色显示,以供参考。 + +
+ +
+ +## 7.3 平均值的标准误差 + +在本书的后面,为了对样本统计数据进行推断,描述样本的可变性将变得至关重要。对于平均值,我们使用一个称为平均值(SEM)的*标准误差*的量来计算,可以将其视为平均值的采样分布的标准偏差。为了计算样本平均值的标准误差,我们将估计的标准偏差除以样本大小的平方根: + +【s】【e】【m】= + +请注意,如果我们的样本很小(小于30),我们必须小心使用估计的标准偏差计算SEM。 + +因为我们有来自NHANES总体的许多样本,并且我们实际上知道总体SEM(我们通过将总体标准差除以总体大小来计算),所以我们可以确认,使用总体参数(1.44)计算的SEM非常接近我们从NHANES数据集(1.43)获取的样本的均值的观测标准差。 + +平均值的标准误差公式意味着我们测量的质量涉及两个量:总体可变性和样本大小。因为样本大小是SEM公式中的分母,所以在保持总体可变性不变的情况下,较大的样本大小将产生较小的SEM。我们无法控制人口的可变性,但是我们可以控制样本的大小。因此,如果我们希望改善我们的样本统计(通过减少他们的抽样可变性),那么我们应该使用更大的样本。然而,这个公式也告诉我们一些关于统计抽样的非常基本的东西——也就是说,较大样本的效用随着样本大小的平方根而减少。这意味着加倍样本量将*而不是*加倍统计数据的质量;而是将其提高一个2\ sqrt { 2 }的因子。在第 [10.3](#statistical-power) 节中,我们将讨论统计功效,它与这一概念密切相关。 + +
+ +
+ +## 7.4 中心极限定理 + +中心极限定理告诉我们,随着样本量变大,均值的抽样分布将变成正态分布,*即使每个样本内的数据不是正态分布*。 + +首先,我们来简单介绍一下正态分布。它也被称为*高斯*分布,以卡尔·弗里德里希·高斯的名字命名,这位数学家没有发明它,但在它的发展中发挥了作用。正态分布用两个参数来描述:平均值(可以认为是峰值的位置)和标准差(指定分布的宽度)。分布的钟形形状永远不会改变,只有它的位置和宽度会改变。正如我们已经在第3章中看到的,正态分布在现实世界中收集的数据中是常见的,中心极限定理给了我们一些关于为什么会发生这种情况的见解。 + +为了查看中心极限定理的作用,让我们使用NHANES数据集中的变量AlcoholYear,它是高度偏斜的,如图 [7.2](#fig:alcDist50) 的左图所示。由于没有更好的词来形容,这种分布是时髦的——而且肯定不是正态分布。现在让我们看看这个变量的均值的抽样分布。图 [7.2](#fig:alcDist50) 显示了该变量的抽样分布,通过从NHANES数据集中重复抽取50个样本并取平均值获得。尽管原始数据显然是非正态的,但抽样分布非常接近正态。 + +![Left: Distribution of the variable AlcoholYear in the NHANES dataset, which reflects the number of days that the individual drank in a year. Right: The sampling distribution of the mean for AlcoholYear in the NHANES dataset, obtained by drawing repeated samples of size 50, in blue. The normal distribution with the same mean and standard deviation is shown in red.](../media/file42.png) + +图7.2:左:NHANES数据集中变量AlcoholYear的分布,它反映了个人一年中饮酒的天数。右图:NHANES数据集中酒精年份平均值的抽样分布,通过绘制50个蓝色重复样本获得。具有相同平均值和标准偏差的正态分布显示为红色。 + +中心极限定理对统计学很重要,因为它允许我们安全地假设在大多数情况下均值的抽样分布将是正态的。这意味着我们可以利用假设正态分布的统计技术,我们将在下一节中看到。它也很重要,因为它告诉我们为什么正态分布在现实世界中如此普遍;任何时候我们把许多不同的因素结合成一个单一的数字,结果很可能是一个正态分布。例如,任何成年人的身高都取决于他们的基因和经历的复杂混合;即使这些单独的贡献可能不是正态分布的,当我们将它们组合起来时,结果也是正态分布的。 + +
+ +
+ +## 7.5 学习目标 + +阅读完本章后,您应该能够: + +* 区分总体和样本,以及总体参数和样本统计 +* 描述抽样误差和抽样分布的概念 +* 计算平均值的标准误差 +* 描述中心极限定理如何决定均值的抽样分布的性质 + +
+ +
+ +## 7.6 建议读数 + +* Nate Silver的《信号与噪音:为什么这么多预测失败,但有些却没有》 + +
+ +
\ No newline at end of file diff --git a/docs/08.md b/docs/08.md new file mode 100644 index 0000000000000000000000000000000000000000..4be46d71c1be822b3d54c4e17168cf45446c8266 --- /dev/null +++ b/docs/08.md @@ -0,0 +1,125 @@ +
+ +# 8 重采样和模拟 + +计算机模拟的使用已经成为现代统计学的一个重要方面。例如,在实用计算机科学中最重要的一本书,叫做*数字配方*,这样写道: + +> “如果让我们在精通五英尺厚的分析统计学书籍和中等水平的统计蒙特卡罗模拟能力之间做出选择,我们肯定会选择后者。” + +在本章中,我们将介绍蒙特卡罗模拟的概念,并讨论如何用它来进行统计分析。 + +
+ +## 8.1 蒙特卡洛模拟 + +蒙特卡洛模拟的概念是由数学家斯坦·乌拉姆和尼古拉斯·大都会提出的,作为曼哈顿计划的一部分,他们正在为美国开发一种原子武器。他们需要计算一个中子在与原子核碰撞之前在物质中传播的平均距离,但是他们不能用标准数学来计算。乌兰意识到这些计算可以用随机数来模拟,就像赌场游戏一样。在诸如轮盘赌之类的娱乐场游戏中,数字是随机产生的;为了估计一个特定结果的概率,一个人可以玩这个游戏几百次。乌兰的叔叔曾在摩纳哥的蒙特卡洛赌场赌博,这显然是这种新技术的名称来源。 + +执行蒙特卡洛模拟有四个步骤: + +1. 定义一个可能值的域 +2. 从概率分布生成该域内随机数 +3. 使用随机数执行计算 +4. 合并多次重复的结果 + +举个例子,假设我想算出课堂测验的时间。我们将假设我们知道测验完成时间的分布是正态分布,平均值为5分钟,标准差为1分钟。考虑到这一点,我们希望所有学生在99%的时间内完成考试需要多长时间?有两种方法可以解决这个问题。第一种是用一种叫做极值统计学的数学理论来计算答案。然而,这涉及到复杂的数学。或者,我们可以使用蒙特卡罗模拟。为此,我们需要从正态分布中生成随机样本。 + +
+ +
+ +## 8.2 统计学中的随机性 + +术语“随机”通常在口语中用来指奇怪或意想不到的事情,但在统计学中,该术语有一个非常具体的含义:如果一个过程不可预测,它就是*随机的*。例如,如果我掷一枚普通硬币10次,一次掷的结果值并不能为我提供任何信息来预测下一次掷的结果。重要的是要注意,某件事不可预测的事实并不一定意味着它不是确定的。例如,当我们抛硬币时,抛硬币的结果是由物理定律决定的;如果我们足够详细地了解所有的条件,我们应该能够预测翻转的结果。然而,许多因素结合在一起,使得掷硬币的结果在实践中不可预测。 + +心理学家表明,人类实际上有相当糟糕的随机感。首先,我们倾向于看到不存在的模式。在极端情况下,这导致了 *pareidolia* 现象,在这种现象中,人们会在随机模式中感知熟悉的物体(例如将一朵云感知为人脸或在一片烤面包中看到圣母玛利亚)。第二,人类倾向于认为随机过程是自我修正的,这导致我们在一场概率游戏中输掉许多回合后,认为自己“应该赢”,这种现象被称为“赌徒谬误”。 + +
+ +
+ +## 8.3 生成随机数 + +运行蒙特卡罗模拟需要我们生成随机数。产生真正的随机数(即完全不可预测的数字)只有通过物理过程才有可能,如原子衰变或掷骰子,这些过程很难获得和/或太慢而无法用于计算机模拟(尽管它们可以从 [NIST随机性信标](https://www.nist.gov/programs-projects/nist-randomness-beacon%5D)中获得)。 + +一般来说,我们使用通过计算机算法产生的*伪随机数*,而不是真正的随机数;从很难预测的意义上来说,这些数字看起来是随机的,但实际上这一系列数字会在某个时候重复出现。例如,r中使用的随机数生成器会在219937-12^{19937}-1数字后重复。这远远超过了宇宙历史中的秒数,我们通常认为这对于统计分析的大多数目的来说是没问题的。 + +大多数统计软件都包括为每个主要概率分布生成随机数的功能,例如均匀分布(0到1之间的所有值相等)、正态分布和二项式分布(例如掷骰子、掷硬币)。图 [8.1](#fig:rngExamples) 显示了从均匀分布函数和正态分布函数生成的数字示例。 + +![Examples of random numbers generated from a uniform (left) or normal (right) distribution.](../media/file43.png) + +图8.1:从均匀分布(左)或正态分布(右)生成的随机数示例。 + +也可以使用分布的分位数函数为任何分布生成随机数。这是累积分布函数的倒数;分位数函数不是标识一组值的累积概率,而是标识一组累积概率的值。使用分位数函数,我们可以从均匀分布中生成随机数,然后通过分位数函数将它们映射到感兴趣的分布中。 + +默认情况下,统计软件中的随机数生成器每次运行时都会生成一组不同的随机数。然而,通过将所谓的*随机种子*设置为特定值,也可以生成完全相同的一组随机数。如果您要查看生成这些图的代码,我们将在本书的许多示例中这样做,以确保这些示例是可重复的。 + +
+ +
+ +## 8.4 使用蒙特卡罗模拟 + +让我们回到考试结束时间的例子。假设我管理三次测验,并记录每个学生每次考试的完成时间,这可能看起来像图 [8.2](#fig:finishingTimes) 中呈现的分布。 + +![Simulated finishing time distributions.](../media/file44.png) + +图8.2:模拟的结束时间分布。 + +要回答我们的问题,我们真正想知道的不是完成时间的分布是什么样的,而是每次测验的最长完成时间的分布是什么样的。为了做到这一点,我们可以模拟一个测验的结束时间,假设结束时间是正态分布的,如上所述;对于每个模拟测验,我们会记录最长的完成时间。我们大量重复这种模拟(5000次应该足够了)并记录完成次数的分布,如图 [8.3](#fig:finishTimeSim) 所示。 + +![Distribution of maximum finishing times across simulations.](../media/file45.png) + +图8.3:模拟中最大完成时间的分布。 + +这表明完成时间分布的第99个百分位数为8.74,这意味着如果我们给测验那么多时间,那么每个人都应该完成99%的时间。记住我们的假设很重要,这一点很重要——如果假设是错误的,那么模拟的结果就是无用的。在这种情况下,我们假设结束时间分布正态分布,具有特定的平均值和标准偏差;如果这些假设是不正确的(它们几乎肯定是不正确的,因为运行时间很少是正态分布的),那么真实的答案可能会非常不同。 + +
+ +
+ +## 8.5 使用模拟进行统计:引导 + +到目前为止,我们已经使用模拟来演示统计原理,但我们也可以使用模拟来回答真正的统计问题。在这一节中,我们将介绍一个被称为 *bootstrap* 的概念,它让我们可以使用模拟来量化统计估计的不确定性。在本课程的后半部分,我们将会看到其他一些例子,说明如何经常使用模拟来回答统计问题,特别是当理论统计方法不可用或当它们的假设太难满足时。 + +
+ +### 8.5.1 计算自举 + +在前一章中,我们使用了均值的抽样分布知识来计算均值的标准误差。但是如果我们不能假设估计值是正态分布的,或者我们不知道它们的分布,那该怎么办呢?bootstrap的想法是使用数据本身来估计答案。这个名字来源于自力更生的想法,表达了我们没有任何外部杠杆来源,所以我们必须依赖数据本身的想法。自举法是由斯坦福大学统计系的布拉德利·埃夫隆提出的,他是世界上最有影响力的统计学家之一。 + +bootstrap背后的想法是我们从实际的数据集中重复采样;重要的是,我们用替换的对*进行采样,这样同一个数据点通常会在一个样本中出现多次。然后,我们计算每个bootstrap样本的感兴趣的统计量,并使用这些估计值的分布作为我们的采样分布。在某种意义上,我们将特定的样本视为整个总体,然后用替换重复采样,以生成我们的分析样本。这使得我们的特定样本是总体的准确反映的假设,这对于较大的样本可能是合理的,但是当样本较小时可能会失效。* + +让我们从使用bootstrap估计NHANES数据集中成人身高平均值的抽样分布开始,这样我们就可以将结果与我们之前讨论的平均值的标准误差(SEM)进行比较。 + +![An example of bootstrapping to compute the standard error of the mean adult height in the NHANES dataset. The histogram shows the distribution of means across bootstrap samples, while the red line shows the normal distribution based on the sample mean and standard deviation.](../media/file46.png) + +图8.4:计算NHANES数据集中成人平均身高标准误差的自举示例。直方图显示了bootstrap样本的均值分布,而红线显示了基于样本均值和标准差的正态分布。 + +图 [8.4](#fig:bootstrapSEM) 显示自助样本的均值分布非常接近基于正态假设的理论估计值。我们通常不会使用bootstrap来计算均值的置信区间(因为我们通常可以假设正态分布适用于均值的抽样分布,只要我们的样本足够大),但这个示例显示了该方法如何给出与基于正态分布的标准方法大致相同的结果。在我们知道或怀疑正态分布不合适的情况下,bootstrap通常用于生成其他统计估计的标准误差。此外,在后面的章节中,你将看到我们如何使用bootstrap样本来生成样本统计中不确定性的估计。 + +
+ +
+ +
+ +## 8.6 学习目标 + +阅读本章后,您应该能够: + +* 描述蒙特卡罗模拟的概念。 +* 描述统计学中随机性的含义 +* 描述伪随机数是如何产生的 +* 描述引导数据库的概念 + +
+ +
+ +## 8.7 建议读数 + +* 计算机时代的统计推断:算法、证据和数据科学 + +
+ +
\ No newline at end of file diff --git a/docs/09.md b/docs/09.md new file mode 100644 index 0000000000000000000000000000000000000000..8b32661d2247a4947de027b5a2ee81776be2a9ac --- /dev/null +++ b/docs/09.md @@ -0,0 +1,389 @@ +
+ +# 9 假设检验 + +在第一章中,我们讨论了统计学的三个主要目标: + +* 形容 +* 决定 +* 预测 + +在这一章中,我们将介绍使用统计学进行决策背后的思想——特别是关于某一特定假设是否得到数据支持的决策。 + +
+ +## 9.1 零假设统计检验(NHST) + +我们将要讨论的假设检验的具体类型被称为*零假设统计检验* (NHST)。如果你拿起几乎任何科学或生物医学研究出版物,你会看到NHST被用来测试假设,在他们的心理学入门教科书中,格里克&津巴多(2002)将NHST称为“心理学研究的支柱”。因此,学习如何使用和解释假设检验的结果对于理解许多研究领域的结果是至关重要的。 + +然而,让你知道NHST有很深的缺陷也很重要,许多统计学家和研究人员(包括我自己)认为这是科学中严重问题的原因,我们将在第18章讨论。50多年来,一直有人呼吁放弃NHST而采用其他方法(比如我们将在以下章节中讨论的方法): + +* “心理学研究中的统计显著性检验可以被看作是研究过程中一种基本的盲目行为的一个例子”(巴坎,1966) +* 假设检验是“关于什么构成科学进步的错误观点”(卢斯,1988) + +NHST也被广泛误解,主要是因为它违背了我们关于统计假设检验应该如何工作的直觉。让我们看一个例子来了解这一点。 + +
+ +
+ +## 9.2 零假设统计检验:一个例子 + +人们对警察使用随身携带的相机很感兴趣,认为这可以减少武力的使用,改善警察的行为。然而,为了证明这一点,我们需要实验证据,而政府使用随机对照试验来检验这些想法已经变得越来越普遍。2015/2016年,华盛顿州、DC政府和DC大都会警察局进行了一项关于体戴相机有效性的随机对照试验。军官们被随机分配佩戴或不佩戴随身摄像机,然后随着时间的推移,他们的行为被跟踪,以确定摄像机是否导致更少使用武力和更少的平民对军官行为的投诉。 + +在我们得到结果之前,让我们问一下你认为统计分析可能如何工作。比方说,我们想具体测试佩戴摄像头是否会减少使用武力的假设。随机对照试验为我们提供了检验假设的数据——即被分配到摄像机组或对照组的官员使用武力的比率。下一个明显的步骤是查看数据,并确定它们是否为这一假设提供了令人信服的证据。那就是:给定数据和我们所知道的一切,随身携带的相机减少武力使用的可能性有多大? + +原来这是*而不是*零假设检验的工作方式。相反,我们首先采用我们感兴趣的假设(即,体戴式相机减少使用武力),并将其颠倒过来,创建一个*无效假设*——在这种情况下,无效假设将是相机不会减少使用武力。重要的是,我们假设零假设是真的。然后,我们查看数据,并确定如果零假设为真,数据的可能性有多大。如果数据在零假设下不太可能,我们可以拒绝零假设,而选择另一个假设*作为我们感兴趣的假设。如果没有足够的证据来拒绝零,那么我们说我们保留(或“未能拒绝”)零,坚持我们最初的假设,即零是真实的。* + +理解NHST的一些概念,尤其是臭名昭著的“p值”,在你第一次遇到它们时总是充满挑战,因为它们太反直觉了。正如我们将在后面看到的,还有其他方法提供了一种更直观的方法来处理假设检验(但是有它们自己的复杂性)。然而,在我们讨论这些之前,对你来说,深入了解假设检验的工作原理是很重要的,因为它显然不会很快消失。 + +
+ +
+ +## 9.3 零假设检验的过程 + +我们可以将零假设检验的过程分为几个步骤: + +1. 制定一个体现我们预测的假设(*在看到数据*之前) +2. 指定无效假设和替代假设 +3. 收集一些与假设相关的数据 +4. 根据代表替代假设的数据拟合模型,并计算检验统计量 +5. 假设零假设为真,计算该统计的观察值的概率 +6. 评估结果的“统计显著性” + +举个动手的例子,让我们用NHANES的数据提出以下问题:身体活动与身体质量指数有关吗?在NHANES数据集中,参与者被问及他们是否定期参加中等或剧烈强度的体育、健身或娱乐活动(存储在变量PhysActIvephy active研究人员还测量了身高和体重,并用它们来计算身体质量指数(身体质量指数): + +【B3】【b】【m】【I】=w + +
+ +### 9.3.1 第一步:制定感兴趣的假设 + +我们假设不参加体育活动的人比参加体育活动的人身体质量指数更大。 + +
+ +
+ +### 9.3.2 步骤2:指定无效假设和替代假设 + +对于步骤2,我们需要指定我们的零假设(我们称之为H0H _ 0)和我们的替代假设(我们称之为AH _ A)。H0H _ 0是我们测试我们感兴趣的假设的基线:也就是说,如果没有影响,我们会期望数据看起来像什么?零假设总是涉及到某种等式(=,\乐 ,或者\葛 )。HAH _ A描述了如果确实存在一种效果,我们所期望的。备择假设总是涉及到某种不等式(\ ne、>或<)。重要的是,零假设检验是在假设零假设为真的情况下进行的,除非证据显示并非如此。 + +我们还必须决定是否要测试一个*方向性*或*非方向性*假设。一个无方向性的假设,只是简单的预测会有差异,而没有预测会往哪个方向走。对于身体质量指数/活动的例子,无方向性的零假设是: + +【h】【0】:【b】【m】 + +相应的无方向性替代假设是: + +【h】【a】:【b】【m】 + +另一方面,方向假说预测了差异的走向。例如,我们有很强的先验知识来预测从事体育活动的人应该比不从事体育活动的人体重轻,因此我们将提出以下方向性零假设: + +【h】【0】:【b】【m】 + +和方向选择: + +【h】【a】:【b】【m】 + +正如我们将在后面看到的,测试一个非方向性假设更为保守,所以这通常是首选,除非有一个强有力的*先验*理由来假设一个特定方向上的效应。假设,包括它们是否有方向性,应该总是在查看数据之前指定! + +
+ +
+ +### 第三步:收集一些数据 + +在这种情况下,我们将从NHANES数据集中抽取250个样本。图 [9.1](#fig:bmiSample) 显示了这样一个样本的例子,身体质量指数分别显示了活跃和不活跃的个人,表 [9.1](#tab:summaryTable) 显示了每个组的汇总统计数据。 + +Table 9.1: Summary of BMI data for active versus inactive individuals +| 物理活性的 | 普通 | 意思是 | 存储卡 | +| --- | --- | --- | --- | +| 不 | One hundred and thirty-one | Thirty | Nine | +| 是 | One hundred and nineteen | Twenty-seven | Five point two | + +![Box plot of BMI data from a sample of adults from the NHANES dataset, split by whether they reported engaging in regular physical activity.](../media/file47.png) + +图9.1:来自NHANES数据集的成年人样本的身体质量指数数据的箱线图,根据他们是否报告参加定期身体活动来划分。 + +
+ +
+ +### 9.3.4 步骤4:根据数据拟合模型,并计算测试统计量 + +接下来,我们想用这些数据来计算一个统计量,最终让我们决定是否拒绝零假设。要做到这一点,模型需要量化相对于数据可变性的支持替代假设的证据数量。因此,我们可以认为检验统计量提供了与数据可变性相比的效果大小的度量。一般来说,这个检验统计量会有一个与之相关的概率分布,因为这允许我们确定我们的统计量的观察值在零假设下的可能性有多大。 + +在身体质量指数的例子中,我们需要一个检验统计量来检验两个均值之间的差异,因为假设是以每组的身体质量指数均值来表述的。经常用来比较两个平均值的一个统计数据是统计学家威廉·西利·戈塞特(William Sealy Gossett)首先提出的 *t* 统计数据,他为都柏林的吉尼斯啤酒厂工作,并以“学生”为笔名写作——因此,它通常被称为“学生的 *t* 统计数据”。当样本量相对较小且总体标准差未知时, *t* 统计量适用于比较两组的平均值。用于比较两个独立组的 *t* 统计量计算如下: + += n【t = \ frac】{ \ bar { x _ 1 }-\ bar { x _ 2 } } { \ sqrt }+\ frac { s _ 1 ^ 2 } { n _ 1 }+\ frac + +其中x1\ bar { x } _ 1x2\ bar { x } _ 2是两者的意思 因为两个自变量之差的方差是每个单个变量的方差之和(vAr(AB=v +vAr(B)var(A-B)= var(A)+var(B)【T141),我们添加的方差为 因此,人们可以将 *t* 统计视为一种量化组间差异相对于均值间差异的抽样可变性有多大的方法。 + +根据被称为 *t* 分布的概率分布来分布 *t* 统计量。 *t* 分布看起来非常类似于正态分布,但是它根据自由度的数量而不同。当自由度较大时(比如1000),那么 *t* 分布看起来基本上像正态分布,但是当自由度较小时 *t* 分布比正态分布具有更长的尾部(见图 [9.2](#fig:tVersusNormal) )。在最简单的情况下,各组大小相同且方差相等,因为我们计算了两个平均值,因此放弃了两个自由度,所以 *t* 测试的自由度为观察值减2。在这种情况下,从箱线图可以很清楚地看出,不活动组比活动组更易变,每组中的数字也不同,因此我们需要使用稍微复杂一点的自由度公式,这通常被称为“韦尔奇t检验”。公式是: + +d f =(S12T30】n1+S22 2(S12/n1) 2n1—T97】1+(S22n21【mathrm { d . f . } = \frac{\left(\frac{s_1^2}{n_1}+\frac{s_2^2}{n_2}\right)^2}{\frac{\left(s_1^2/n_1\right)^2}{n_1-1}+\frac{\left(s_2^2/n_2\right)^2}{n_2-1}} 这将等于n1+n2-2n _ 1 对于本例,得出的值为241.12,略低于从样本量中减去2得到的值248。 + +![Each panel shows the t distribution (in blue dashed line) overlaid on the normal distribution (in solid red line). The left panel shows a t distribution with 4 degrees of freedom, in which case the distribution is similar but has slightly wider tails. The right panel shows a t distribution with 1000 degrees of freedom, in which case it is virtually identical to the normal.](../media/file48.png) + +图9.2:每个面板显示了叠加在正态分布(红色实线)上的t分布(蓝色虚线)。左图显示了具有4个自由度的t分布,在这种情况下,分布是相似的,但尾部略宽。右图显示了具有1000个自由度的t分布,在这种情况下,它实际上与正态分布相同。 + +
+ +
+ +### 9.3.5 第五步:确定零假设下观察结果的概率 + +这是NHST开始违背我们直觉的一步。我们不是确定给定数据的零假设为真的可能性,而是确定在零假设下观察到的统计数据至少与我们观察到的统计数据一样极端的可能性,因为我们一开始就假设零假设为真!要做到这一点,我们需要知道在零假设下统计的期望概率分布,这样我们就可以问在该分布下结果的可能性有多大。注意,当我说“结果会有多可能”时,我真正的意思是“观察到的结果或一个更极端的结果会有多可能”。(至少)有两个原因让我们需要添加这个警告。首先,当我们谈论连续值时,任何特定值的概率都是零(如果你上过微积分课,你可能还记得)。更重要的是,我们试图确定如果零假设是真的,我们的结果会有多奇怪,任何更极端的结果都会更奇怪,所以当我们计算零假设下的结果的概率时,我们希望计算所有这些更奇怪的可能性。 + +我们可以使用理论分布(如 *t* 分布)或使用随机化来获得这个“零分布”。在我们转到身体质量指数的例子之前,让我们从一些更简单的例子开始。 + +
+ +#### 9.3.5.1 P值:一个非常简单的例子 + +让我们说,我们希望确定一个特定的硬币是否偏向着陆头。为了收集数据,我们将硬币抛100次,假设我们数了70个头。在这个例子中, H0:P(Heads)0.5H \le 0.5HA:P(HAds) 我们接下来想问的问题是:如果正面的真实概率是0.5,我们在100次抛硬币中观察到70个或更多正面的可能性有多大?我们可以想象这种情况偶尔会发生,但似乎不太可能。为了量化这个概率,我们可以使用*二项分布*: + +P(Xk)=I=0k( pI(1—t59】p)(n—t71】I 这个等式将告诉我们一定数量的人头(kk)或更少的概率,给定特定概率的人头(【T97)和事件数( N ) 然而,我们真正想知道的是某个数字或更多数字的概率,我们可以根据概率规则通过从一个数字中减去一个数字来获得: + +【p】(【x】【k】 + +![Distribution of numbers of heads (out of 100 flips) across 100,000 simulated runs with the observed value of 70 flips represented by the vertical line.](../media/file49.png) + +图9.3:100,000次模拟运行中的头数分布(100次翻转中),观察到的70次翻转值用垂直线表示。 + +使用二项式分布,给定P(头数)=0.5,69头或更少头的概率是0.999961,因此70头或更多头的概率就是1减去该值(0.000039)。这个计算告诉我们,如果硬币确实是公平的,得到70或更多人头的可能性非常小。 + +现在,如果我们没有一个标准的函数来告诉我们人头数的概率呢?我们可以通过模拟来确定它——我们使用0.5的真实概率重复投掷硬币100次,然后计算这些模拟运行中人头数量的分布。图 [9.3](#fig:coinFlips) 显示了模拟的结果。这里我们可以看到,通过模拟计算的概率(0.000030)非常接近理论概率(0.000039)。 + +
+ +
+ +#### 9.3.5.2使用 *t* 分布计算p值 + +现在,让我们使用 *t* 分布来计算身体质量指数示例的p值。首先,我们使用上面计算的样本值来计算 *t* 统计量,我们发现t = 3.86。我们接下来想问的问题是:如果组间的真实差异为零或更小(即方向性零假设),我们找到这种规模的 *t* 统计量的可能性有多大? + +我们可以用 *t* 分布来确定这个概率。上面我们注意到合适的自由度(校正方差和样本大小的差异后)是t = 241.12。我们可以使用统计软件中的函数来确定找到大于或等于我们观察值的 *t* 统计值的概率。我们发现p(t > 3.86,df = 241.12) = 0.000072,这告诉我们,如果零假设真的为真,我们观察到的 *t* 统计值3.86是相对不可能的。 + +在这种情况下,我们使用了方向假设,所以我们只需要查看零分布的一端。如果我们想测试一个无方向性的假设,那么我们就需要能够识别出这种效应的大小有多出乎意料,而不管它的方向如何。在t检验的上下文中,这意味着我们需要知道统计数据在正向或负向出现极端的可能性有多大。为此,我们将观察到的 *t* 值乘以-1,因为 *t* 分布以零为中心,然后将两个尾部概率加在一起,得到一个*双尾* p值:p(t > 3.86或t < -3.86,df = 241.12) = 0.000145。这里我们看到,双尾检验的p值是单尾检验的两倍,这反映了一个事实,即一个极值不那么令人惊讶,因为它可能发生在任一方向上。 + +如何选择是使用单尾检验还是双尾检验?双尾检验总是更加保守,所以使用双尾检验总是一个好的选择,除非你有非常充分的理由使用单尾检验。在这种情况下,你应该在查看数据之前写下假设。在第 [18](#doing-reproducible-research) 章中,我们将讨论假设预登记的想法,这是在你看到实际数据之前写下假设的正式想法。你应该*永远不要*在看过数据后就决定如何进行假设检验,因为这会给结果带来严重的偏差。 + +
+ +
+ +#### 9.3.5.3使用随机化计算p值 + +到目前为止,我们已经看到了如何使用t分布来计算零假设下的数据概率,但我们也可以使用模拟来完成此操作。基本思想是,我们生成模拟数据,就像我们在零假设下预期的那样,然后询问观察到的数据与那些模拟数据相比有多极端。关键问题是:我们如何生成零假设为真的数据?一般的答案是,我们可以以一种特定的方式随机地重新排列数据,使数据看起来就像null真的为真时一样。这类似于bootstrapping的想法,在某种意义上,它使用我们自己的数据来得出答案,但它以不同的方式做到这一点。 + +
+ +
+ +#### 9.3.5.4随机化:一个简单的例子 + +让我们从一个简单的例子开始。假设我们想比较足球运动员和越野跑运动员的平均下蹲能力, 同H0:μFBμXCH _ 0:\ mu HA:μFB>μX 我们测量5名足球运动员和5名越野跑运动员的最大下蹲能力(我们会随机产生,假设μFB=300\ mu _ { FB } = 300 μXC=140\ mu _ { XC } = 140,以及σ【T126 数据见表 [9.2](#tab:squatPlot) 。 + +Table 9.2: Squatting data for the two groups +| 组 | 蹲着的 | shuffledSquat | +| --- | --- | --- | +| 运货单(freight bill) | Two hundred and sixty-five | One hundred and twenty-five | +| 运货单(freight bill) | Three hundred and ten | Two hundred and thirty | +| 运货单(freight bill) | Three hundred and thirty-five | One hundred and twenty-five | +| 运货单(freight bill) | Two hundred and thirty | Three hundred and fifteen | +| 运货单(freight bill) | Three hundred and fifteen | One hundred and fifteen | +| 容抗 | One hundred and fifty-five | Three hundred and thirty-five | +| 容抗 | One hundred and twenty-five | One hundred and fifty-five | +| 容抗 | One hundred and twenty-five | One hundred and twenty-five | +| 容抗 | One hundred and twenty-five | Two hundred and sixty-five | +| 容抗 | One hundred and fifteen | Three hundred and ten | + +![Left: Box plots of simulated squatting ability for football players and cross-country runners.Right: Box plots for subjects assigned to each group after scrambling group labels.](../media/file50.png) + +图9.4:左图:足球运动员和越野跑运动员模拟蹲姿能力的方框图。右图:打乱组标签后分配到每个组的受试者的方框图。 + +从图 [9.4](#fig:squatPlot) 左侧的图中可以明显看出两组之间有很大的差异。我们可以做一个标准的t检验来检验我们的假设;对于这个例子,我们将在R中使用`t.test()`命令,它给出如下结果: + +``` +## +## Welch Two Sample t-test +## +## data: squat by group +## t = 8, df = 5, p-value = 2e-04 +## alternative hypothesis: true difference in means between group FB and group XC is greater than 0 +## 95 percent confidence interval: +## 121 Inf +## sample estimates: +## mean in group FB mean in group XC +## 291 129 +``` + +如果我们查看这里报告的p值,我们会发现在零假设下这种差异的可能性非常小,使用 *t* 分布来定义零。 + +现在让我们看看如何用随机化回答同样的问题。基本思想是,如果组间无差异的零假设为真,那么哪一组来自哪一组(足球运动员对越野跑运动员)并不重要——因此,为了创建与我们的实际数据相似但又符合零假设的数据,我们可以随机对数据集中的个体数据进行重新排序,然后重新计算组间的差异。这种混洗的结果显示在表 [9.2](#tab:squatPlot) 中标有“shuffleSquat”的列中,所得数据的箱线图显示在图 [9.4](#fig:squatPlot) 的右侧面板中。 + +![Histogram of t-values for the difference in means between the football and cross-country groups after randomly shuffling group membership. The vertical line denotes the actual difference observed between the two groups, and the dotted line shows the theoretical t distribution for this analysis.](../media/file51.png) + +图9.5:随机调整组成员后,足球组和越野组之间均值差异的t值直方图。垂直线表示在两组之间观察到的实际差异,虚线表示该分析的理论t分布。 + +在对数据进行排序后,我们看到两组现在更加相似,事实上越野组现在的平均值略高。现在让我们这样做10000次,并存储每次迭代的 *t* 统计数据;如果您在自己的计算机上执行此操作,将需要一段时间才能完成。图 [9.5](#fig:shuffleHist) 显示了所有随机洗牌的 *t* 值的直方图。正如在零假设下所预期的,这个分布以零为中心(分布的平均值是0.007)。从图中我们还可以看到,洗牌后的 *t* 值的分布大致遵循零假设(均值=0)下的理论 *t* 分布,表明随机化产生了零数据。我们可以通过测量有多少混洗值至少与观察值一样极端来从随机化数据计算p值:p(t > 8.01,df = 8)使用随机化= 0.00410。这个p值与我们使用 *t* 分布获得的p值非常相似,两者都非常极端,表明如果零假设为真,观察到的数据不太可能出现——在这种情况下,我们*知道*这不是真的,因为我们生成了数据。 + +
+ +##### 9.3.5.4.1 随机化:身体质量指数/活动实例 + +现在,让我们使用随机化来计算身体质量指数/活动示例的p值。在这种情况下,我们将随机打乱`PhysActive`变量,并在每次打乱后计算各组之间的差异,然后将我们观察到的 *t* 统计数据与打乱数据集的 *t* 统计数据的分布进行比较。图 [9.6](#fig:simDiff) 显示了混洗样本中 *t* 值的分布,我们还可以计算出找到与观察值一样大或比观察值更大的值的概率。从随机化获得的p值(0.000000)非常类似于使用 *t* 分布获得的值(0.000075)。随机化检验的优点是,它不要求我们假设每个组的数据都是正态分布的,尽管t检验通常对违反该假设的情况非常稳健。此外,当我们没有像t检验那样的理论分布时,随机化检验可以允许我们计算统计的p值。 + +![Histogram of t statistics after shuffling of group labels, with the observed value of the t statistic shown in the vertical line, and values at least as extreme as the observed value shown in lighter gray](../media/file52.png) + +图9.6:组标签重排后的t统计直方图,观察到的t统计值显示在垂直线中,值至少与观察到的值一样极端,以浅灰色显示 + +当我们使用随机化测试时,我们必须做一个主要假设,我们称之为*可交换性*。这意味着所有的观察值都以相同的方式分布,这样我们可以在不改变总体分布的情况下交换它们。当数据中有相关的观察值时,这种情况会出现。例如,如果我们有来自4个不同家庭的个体的数据,那么我们不能假设个体是可交换的,因为兄弟姐妹之间的关系会比他们与来自其他家庭的个体之间的关系更近。一般来说,如果数据是通过随机抽样获得的,那么可交换性假设应该成立。 + +
+ +
+ +
+ +
+ +### 9.3.6 步骤6:评估结果的“统计显著性” + +下一步是确定上一步得出的p值是否足够小,以至于我们愿意拒绝零假设,并得出替代方案为真的结论。我们需要多少证据?这是统计学中最有争议的问题之一,部分原因是它需要主观判断——没有“正确”的答案。 + +从历史上看,这个问题最常见的答案是,如果p值小于0.05,我们应该拒绝零假设。这来自罗纳德·费雪的著作,他被称为“20世纪统计学中最重要的人物” ( [Efron 1998](19.html#ref-efron1998) ) : + +> “如果P在0.1和0.9之间,当然没有理由怀疑被检验的假设。如果低于0.02,则强烈表明该假设未能解释全部事实。如果我们在0.05处画一条传统的线,我们就不会经常误入歧途……在我们可以说的水平上画这条线是方便的:要么在治疗中有什么东西,要么发生了巧合,比如在二十次试验中不超过一次" ( [R. A. Fisher 1925](19.html#ref-fisher1925statistical) ) + +然而,费希尔从未打算将p<0.05p<0.05作为一个固定的规则: + +> “没有一个科学工作者有一个固定的重要性水平,年复一年,在所有情况下,他拒绝假设;他会根据自己的证据和想法来考虑每一个具体的案例 + +相反,p < .05很可能成为一种惯例,这是因为在计算使计算统计数据的任意值的p值变得容易之前,依赖于使用的p值表。所有的表都有一个0.05的条目,这使得很容易确定一个人的统计值是否超过了达到该显著性水平所需的值。 + +统计阈值的选择仍然存在很大争议,最近(Benjamin et al .,2018)有人建议将默认阈值从. 05更改为. 005,使其更加严格,从而更难拒绝零假设。这一举动在很大程度上是由于人们越来越担心,从一个显著结果中获得的证据在<p<处相对薄弱;我们将在第 [18](#doing-reproducible-research) 章讨论再现性时回到这一点。 + +
+ +#### 9.3.6.1假设检验作为决策:尼曼-皮尔逊方法 + +费希尔认为p值可以为特定的假设提供证据,但统计学家杰吉·内曼和埃贡·皮尔森强烈反对。相反,他们建议我们从长期误差率的角度来考虑假设检验: + +> “没有一个基于概率理论的测试本身能够提供任何有价值的证据来证明一个假设的真假。但是我们可以从另一个角度来看测试的目的。我们不希望知道每一个单独的假设是对还是错,我们可以寻找规则来管理我们对它们的行为,在遵循这些规则的过程中,我们可以确保,在长期的经验中,我们不会经常错" ( [J. Neyman和Pearson 1933](19.html#ref-Neyman289) ) + +那就是:我们无法知道哪些具体的决定是对的还是错的,但是如果我们遵守规则,我们至少可以知道我们的决定从长远来看会有多少次是错的。 + +为了理解尼曼和皮尔森提出的决策框架,我们首先需要讨论统计决策可能出现的结果。现实有两种可能的状态(H0H _ 0为真,或者H0H _ 0为假),以及两种可能的决策(拒绝H0【T33)有两种方法可以让我们做出正确的决定: + +* 我们可以拒绝H0H _ 0当它为假时(在信号检测理论的语言中,我们称这为*击中* +* 我们可以保留H0H _ 0当它为真时(在这个上下文中有点令人困惑,这叫做*正确拒绝*) + +我们还会犯两种错误: + +* 我们可以拒绝H0H _ 0当它实际上是真的时候(我们称之为*虚警*,或*I型错误* +* 我们可以保留H0H _ 0当它实际上是假的时候(我们称这个为*错过*,或者*类型二错误* + +奈曼和皮尔森创造了两个术语来描述这两种错误的长期概率: + +* p(类型I错误)=\ alpha +* p(ⅱ型误差)=β + +也就是说,如果我们将α设置为. 05,那么从长远来看,我们应该有5%的时间犯I型错误。尽管通常将α设置为0.05,但对于一个真实存在的效应,可接受水平的标准值是0.2——也就是说,我们愿意接受有20%的时间无法检测到它。当我们在第 [10.3节](#statistical-power)中讨论统计功效时,我们将回到这一点,这是第二类错误的补充。 + +
+ +
+ +
+ +### 9.3.7 重大结果是什么意思? + +关于p值的实际含义有很大的混乱(Gigerenzer,2004)。假设我们做了一个实验,比较不同条件下的平均值,我们发现一个p值为0.01的差异。人们可能会有几种可能的解释。 + +
+ +#### 9.3.7.1是否意味着零假设为真的概率是0.01? + +不记得在零假设检验中,P值是给定零假设的数据的概率(P(data|H0P(数据它并不保证关于给定数据的零假设概率的结论(P(H0|dataP当我们在下一章讨论贝叶斯推断时,我们将回到这个问题,因为贝叶斯定理让我们以一种允许我们在给定数据的情况下确定假设的概率的方式来反演条件概率。 + +
+ +
+ +#### 9.3.7.2:这是否意味着你做出错误决定的概率是0.01? + +不.这将是P(H0|data)P(H _ 0 | data)但记住为 + +
+ +
+ +#### 9.3.7.3:这是不是意味着如果你再次进行这项研究,99%的情况下你都会得到同样的结果? + +不。p值是关于特定数据集在空值下的可能性的陈述;它不允许我们对未来事件(如复制)的可能性做出推断。 + +
+ +
+ +#### 9.3.7.4:这是否意味着你发现了一个实际上很重要的效应? + +不会。*统计意义*和*实际意义*有本质区别。举个例子,假设我们进行了一项随机对照试验来检查特定饮食对体重的影响,我们发现在p<0.05时有显著的统计学影响。这并不能告诉我们实际减少了多少重量,我们称之为*效应大小*(将在第 [10章](#ci-effect-size-power)中详细讨论)。如果我们考虑一项关于减肥的研究,那么我们可能不认为减掉一盎司(即几片薯片的重量)有什么实际意义。让我们看看随着样本量的增加,我们检测1盎司显著差异的能力。 + +图 [9.7](#fig:sigResults) 显示了显著结果的比例如何随着样本量的增加而增加,因此,对于非常大的样本量(总共约262,000名受试者),当两种饮食之间的体重减轻量相差1盎司时,我们将在超过90%的研究中发现显著结果。虽然这些在统计学上是显著的,但大多数医生不会认为体重减轻一盎司在实践上或临床上是显著的。当我们回到第 [10.3节](#statistical-power)中的*统计功效*的概念时,我们将更详细地探讨这种关系,但是从这个例子中应该已经清楚,统计显著性不一定表示实际显著性。 + +![The proportion of signifcant results for a very small change (1 ounce, which is about .001 standard deviations) as a function of sample size.](../media/file53.png) + +图9.7:非常小的变化(1盎司,大约0.001标准偏差)的显著结果的比例与样本大小的函数关系。 + +
+ +
+ +
+ +
+ +## 现代背景下的NHST:多重考验 + +到目前为止,我们已经讨论了我们感兴趣的测试单个统计假设的例子,这与通常一次只测量几个变量的传统科学是一致的。然而,在现代科学中,我们经常可以测量每个人的数百万个变量。例如,在量化整个基因组的遗传研究中,每个个体可能有数百万个测量值,而在我的小组所做的脑成像研究中,我们经常同时从大脑中超过100,000个位置收集数据。当在这些环境中应用标准假设检验时,除非我们采取适当的措施,否则会发生不好的事情。 + +让我们看一个例子来看看这是如何工作的。人们对了解可能使个体易患精神分裂症等重大精神疾病的遗传因素有很大兴趣,因为我们知道,患有精神分裂症的个体之间约80%的差异是由于遗传差异。人类基因组计划和随之而来的基因组科学革命提供了工具来检查人类在基因组上的许多不同之处。近年来使用的一种方法被称为*全基因组关联研究* (GWAS),其中每个人的基因组在一百万或更多的地方被表征,以确定他们在每个位置具有遗传密码的哪些字母,重点关注人类往往经常不同的位置。在确定这些之后,研究人员在基因组的每个位置进行了统计测试,以确定被诊断患有精神分裂症的人是否更有可能或更不可能在该位置具有特定版本的遗传序列。 + +让我们想象一下,如果研究人员只是简单地问测试在来自零分布的p <.05 at="" each="" location="" when="" in="" fact="" there="" is="" no="" true="" effect="" any="" of="" the="" locations.="" to="" do="" this="" we="" generate="" a="" large="" number="" simulated="" xmlns:epub="http://www.idpf.org/2007/ops"> t 值处是否显著,并问其中有多少在p<0.05处显著,会发生什么。让我们这样做很多次,每次都计算出有多少测试结果是显著的(见图 [9.8](#fig:nullSim) )。 + +![Left: A histogram of the number of significant results in each set of one million statistical tests, when there is in fact no true effect. Right: A histogram of the number of significant results across all simulation runs after applying the Bonferroni correction for multiple tests.](../media/file54.png) + +图9.8:左图:当实际上没有真实效果时,每组一百万个统计测试中显著结果数量的直方图。右图:对多个测试应用Bonferroni校正后,所有模拟运行的重要结果数量的直方图。 + +这表明,在每次运行中,大约5%的测试是显著的,这意味着如果我们使用p< .05 as our threshold for statistical significance, then even if there were no truly significant relationships present, we would still “find” about 500 genes that were seemingly significant in each study (the expected number of significant results is simply n*αn * \α)。这是因为虽然我们控制了每个测试的错误,但是我们没有控制整个*系列*测试的错误率(称为*系列错误*),如果我们要查看大量测试的结果,这是我们真正想要控制的。使用p < .05,我们在上面例子中的家庭误差率是1——也就是说,我们几乎可以保证在任何特定的研究中至少犯一个错误。 + +控制家族误差的一个简单方法是将α水平除以测试次数;这就是所谓的 *Bonferroni* 修正,以意大利统计学家Carlo Bonferroni命名。使用上面例子中的数据,我们在图 [9.8](#fig:nullSim) 中看到,只有大约5%的研究使用0.000005的校正α水平而不是0.05的名义水平显示出任何显著的结果。我们已经有效地控制了家族误差,因此在我们的研究中出现任何*误差的概率被控制在0 . 05左右。* + +
+ +
+ +## 9.5 学习目标 + +* 确定假设检验的组成部分,包括感兴趣的参数、无效假设和替代假设,以及检验统计量。 +* 描述p值的正确解释以及常见的误解 +* 区分假设检验中的两种错误,以及决定它们的因素。 +* 描述如何使用重采样来计算p值。 +* 描述多重测试的问题,以及如何解决 +* 描述对零假设统计测试的主要批评 + +
+ +
+ +## 9.6 建议读数 + +* [Gerd Gigerenzer的无脑统计](https://library.mpib-berlin.mpg.de/ft/gg/GG_Mindless_2004.pdf) + +
+ +
\ No newline at end of file diff --git a/docs/1.md b/docs/1.md deleted file mode 100644 index 2020a8c8ee9a9bb38e9ef78db01b5dce31358257..0000000000000000000000000000000000000000 --- a/docs/1.md +++ /dev/null @@ -1,90 +0,0 @@ -# 一、引言 - -“有朝一日,统计思维对于有效的公民身份和读写能力同样重要。”—H.G.威尔斯 - - - -## 1.1 什么是统计思维? - -统计思维是理解一个复杂世界的一种方式,它用相对简单的术语来描述这个世界,尽管如此,它捕捉到了这个世界结构的基本方面,同时也为我们提供了一些关于我们的知识有多不确定的概念。统计思维的基础主要来自数学和统计学,也来自计算机科学、心理学和其他研究领域。 - -我们可以区分统计思维和其他不太可能准确描述世界的思维方式。特别是,人类的直觉经常试图回答我们可以用统计思维回答的相同问题,但往往得到错误的答案。例如,近年来,大多数美国人报告说,他们认为暴力犯罪比前一年更严重([pew 研究中心](http://www.pewresearch.org/fact-tank/2018/01/30/5-facts-about-crime-in-the-u-s/))。然而,对实际犯罪数据的统计分析表明,事实上,暴力犯罪自 20 世纪 90 年代以来一直在稳步下降(htg2)。直觉让我们失望,因为我们依赖于最好的猜测(心理学家称之为 _ 启发式 _),而这种猜测往往会出错。例如,人类通常使用 _ 可用性启发式 _ 来判断某些事件(如暴力犯罪)的流行率——也就是说,我们如何容易想到暴力犯罪的例子。因此,我们对提高犯罪率的判断可能更能反映新闻报道的增加,尽管犯罪率实际有所下降。统计思维为我们提供了更准确地理解世界和克服人类直觉错误的工具。 - -## 1.2 统计数据能为我们做什么? - -我们可以用统计数据做三件主要的事情: - -* _ 描述 _:这个世界是复杂的,我们经常需要用我们能够理解的简单方式来描述它。 - -* _ 决定 _:我们通常需要根据数据做出决定,通常是在面临不确定性的情况下。 -* _ 预测 _:我们经常希望根据我们对以前情况的了解来预测新的情况。 - -让我们来看一个实际的例子,集中在一个我们很多人都感兴趣的问题上:我们如何决定吃什么是健康的? -有许多不同的指导来源,从政府饮食指南到饮食书籍,再到博客。 -让我们专注于一个特定的问题:我们饮食中的饱和脂肪是不是一件坏事? - -我们回答这个问题的一种方法是常识。 -如果我们吃脂肪,那么它会在我们的身体里直接变成脂肪,对吗? -我们都看过脂肪堵塞动脉的照片,所以吃脂肪会阻塞动脉,对吗? - -我们回答这个问题的另一种方法是听取权威人士的意见。美国食品药品监督管理局的饮食指南作为其关键建议之一,“健康的饮食模式限制饱和脂肪的摄入”。你可能希望这些指南是基于良好的科学,在某些情况下是这样的,但正如尼娜·泰克罗兹在她的书中概述的那样。”大脂肪惊喜”(Teicholz,2014 年),这一特别建议似乎更多地基于营养研究人员的教条,而不是实际证据。 - -最后,我们可以看看实际的科学研究。让我们先看一个名为“纯粹研究”的大型研究,该研究对 18 个不同国家的 135000 多人的饮食和健康结果(包括死亡)进行了调查。在该数据集的一项分析中(发表于 2017 年的《柳叶刀》(The Lancet)(HTG1));Dehghan 等人(2017 年)),纯研究人员报告了一项分析,分析了不同种类的宏量营养素(包括饱和脂肪和碳水化合物)的摄入与跟踪调查期间死亡的可能性之间的关系。对受试者进行了中位数为 7.4 年的跟踪调查,这意味着研究中一半受试者的跟踪调查时间不足,一半受试者的跟踪调查时间超过 7.4 年。图[1.1](#fig:PureDeathSatFat)描绘了研究中的一些数据(摘自论文),显示了饱和脂肪和碳水化合物摄入与任何原因死亡风险之间的关系。 - -![A plot of data from the PURE study, showing the relationship between death from any cause and the relative intake of saturated fats and carbohydrates.](img/file0.png) - -图 1.1 纯研究的数据图,显示了任何原因导致的死亡与饱和脂肪和碳水化合物的相对摄入量之间的关系。 - -这个图是以十个数字为基础的。为了获得这些数据,研究人员将 135335 名研究参与者(我们称之为“样本”)分成 5 组(“五分位数”),根据他们对任何一种营养素的摄入量对其进行排序;第一个五分位数包含 20%的最低摄入量的人,第五个五分位数包含 20%的最低摄入量的人。五分位数含有最高摄入量的 20%。然后,研究人员计算了在被跟踪期间,每个研究小组中的人死亡的频率。这个数字用死亡的相对风险(与最低五分位数相比)来表示这一点:如果这个数字大于 1,这意味着这个群体中的人比最低五分位数中的人死亡的可能性高 _,而如果这个数字小于 1,这意味着死亡的可能性比最低五分位数中的人高 _。也就是说,小组中的人死亡的可能性要小一些。这个数字非常清楚:在研究过程中,摄入饱和脂肪越多的人死亡的可能性就越小,而且吃得越多,这种影响就越大。碳水化合物的情况正好相反,一个人吃的碳水化合物越多,他们在研究中死亡的可能性就越大。这个例子显示了我们如何使用统计数据来描述复杂的数据集,用一组简单得多的数字来描述;如果我们必须同时查看来自每个研究参与者的数据,我们将被数据超载,很难看到 EME 当它们被更简单地描述时。 - -图[1.1](#fig:PureDeathSatFat)中的数字似乎表明,随着饱和脂肪的摄入,死亡人数减少,而随着碳水化合物的摄入,死亡人数增加,但我们也知道,数据中存在很多不确定性;有些人即使吃低碳水化合物的饮食,也会过早死亡,同样,有些人甚至会因摄入低碳水化合物的食物而死亡。他吃了很多碳水化合物,但活到了成熟的老年。考虑到这种变异性,我们想 _ 决定 _ 我们在数据中看到的关系是否足够大,如果饮食和寿命之间没有真正的关系,我们就不会期望它们随机发生。统计数据为我们提供了做出这些决定的工具,通常外界认为这是统计数据的主要目的。但正如我们将在书中看到的,基于模糊证据的黑白决策的需要常常导致研究人员误入歧途。 - -基于这些数据,我们还想对未来的结果做出预测。例如,一家人寿保险公司可能想利用某个人摄入脂肪和碳水化合物的数据来预测他们的寿命。预测的一个重要方面是,它要求我们将已有的数据归纳为其他情况,通常是在将来;如果我们的结论仅限于某一特定时间研究中的特定人员,那么该研究就不会非常有用。一般来说,研究人员必须假设他们的特定样本代表了更大的(htg0)群体(htg1),这要求他们以无偏见的方式获采样本。例如,如果纯研究从信奉素食主义的宗教派别中招募了所有参与者,那么我们可能不想将结果推广到遵循不同饮食标准的人身上。 - -## 1.3 统计学的基本概念 - -有许多非常基本的思想贯穿了统计思维的几乎所有方面。斯蒂格勒(2016)在他的杰出著作《统计智慧的七大支柱》中概述了其中的几点,我在这里对此进行了补充。 - -# - -## 1.3.1 从数据中学习 - -统计的一种方法是作为一组工具,使我们能够从数据中学习。在任何情况下,我们都从一组关于可能发生的情况的想法或假设开始。在这项纯粹的研究中,研究人员可能已经开始期望,吃更多的脂肪会导致更高的死亡率,鉴于目前关于饱和脂肪的消极教条。在本课程的后面,我们将介绍 _ 先验知识 _ 的概念,它旨在反映我们所带来的知识。这种先前的知识可能在其强度上有所不同,通常是基于我们的经验;如果我第一次去一家餐馆,我可能对它有多好的期望值很低,但是如果我去一家以前吃过 10 次的餐馆,我的期望值会更高。同样地,如果我在一个餐馆评论网站上看到一家餐馆的平均四星级评价仅仅基于三个评论,那么我的期望就比基于 300 个评论的期望要弱。 - -统计学为我们提供了一种方法来描述如何最好地利用新的数据来更新我们的信仰,并且统计学和心理学之间有着深刻的联系。事实上,许多心理学中的人和动物学习理论与机器学习(htg0)这一新领域的思想紧密相连。机器学习是统计学和计算机科学的接口领域,主要研究如何建立可以从经验中学习的计算机算法。虽然统计和机器学习经常试图解决相同的问题,但来自这些领域的研究人员往往采取非常不同的方法;著名的统计学家 Leo Breiman 曾将它们称为“两种文化”,以反映它们的方法有多不同(Breiman 2001 年)。在这本书中,我将尝试将这两种文化融合在一起,因为这两种方法都为思考数据提供了有用的工具。 - -# - -## 1.3.2 聚合 - -另一种统计方法是“丢弃数据的科学”。在上面的纯研究的例子中,我们取了 100000 多个数字并将它们压缩成 10 个。正是这种 _ 聚合 _ 是统计学中最重要的概念之一。当它第一次被推进时,这是革命性的:如果我们把每一个参与者的所有细节都抛开了,那么我们怎么能确定我们没有遗漏重要的东西呢? - -正如我们将看到的,统计学为我们提供了描述数据集合结构的方法,并提供了解释为什么这种方法通常工作得很好的理论基础。但是,还必须记住,聚合可能会走得太远,稍后我们将遇到这样的情况:摘要可能会对正在汇总的数据提供误导性的图片。 - -# - -## 1.3.3 不确定性 - -世界是一个不确定的地方。我们现在知道吸烟会导致肺癌,但这种原因是概率性的:在过去 50 年里,一个 68 岁的男人每天抽两包烟,并且继续吸烟,他患肺癌的风险是 15%(7 分之一),比不吸烟的人患肺癌的风险要高很多。然而,这也意味着会有很多人终生吸烟,永远不会得肺癌。统计学为我们提供了工具来描述不确定性,在不确定性下做出决定,并做出我们可以量化的不确定性预测。 - -人们经常看到记者写道,科学研究人员已经“证明”了一些假设。但是统计分析永远不能“证明”一个假设,在证明它一定是真的意义上(就像在数学证明中一样)。统计数据可以为我们提供证据,但它总是试探性的,并且受制于现实世界中总是存在的不确定性。 - -# - -## 1.3.4 采样 - -聚合的概念意味着我们可以通过跨数据折叠来获得有用的洞察力——但是我们需要多少数据呢?(htg0)抽样(htg1)的思想是,只要以正确的方式获得样本,我们就可以根据人口中的少量样本来总结整个人口。例如,这项纯粹的研究招募了大约 13.5 万人的样本,但其目的是提供有关数十亿人的见解,这些人是从这些人中采样的。正如我们前面讨论过的,获得研究样本的方法是至关重要的,因为它决定了我们可以多广泛地概括结果。从有关抽样的统计数据中得出的另一个基本观点是,尽管较大的样本总是更好(就它们准确地代表整个群体的能力而言),但随着样本越来越大,回报会减少。事实上,大样本收益减少的速度遵循一个简单的数学规则,随着样本大小的平方根增长。 - -## 1.4 因果关系与统计 - -这项纯粹的研究似乎为摄入饱和脂肪和长寿之间的积极关系提供了有力的证据,但这并不能说明我们真正想知道的是:如果我们摄入更多的饱和脂肪,这会导致我们长寿吗?这是因为我们不知道吃饱和脂肪和长寿之间是否存在直接的因果关系。这些数据与这种关系是一致的,但它们与其他一些导致饱和脂肪含量高和寿命长的因素同样一致。例如,富有的人很可能吃更多饱和脂肪,富有的人往往寿命更长,但他们的长寿并不一定是因为脂肪的摄入——相反,这可能是由于更好的保健、心理压力的降低、更好的食物质量或许多其他因素。纯粹的研究人员试图解释这些因素,但我们不能确定他们的努力完全消除了其他变量的影响。其他因素可以解释饱和脂肪摄入与死亡之间的关系,这一事实就是为什么统计学入门课程经常教导“相关性并不意味着因果关系”,尽管著名的数据可视化专家 Edward Tufte 补充道,“但这确实是一个提示。” - -虽然观察性研究(如纯研究)不能决定性地证明因果关系,但我们一般认为因果关系可以通过实验控制和操纵特定因素的研究来证明。在医学上,这种研究被称为 _ 随机对照试验 _(RCT)。假设我们想做一个随机对照试验来检验增加饱和脂肪摄入量是否会延长寿命。为了做到这一点,我们将对一组人进行抽样,然后将他们分配到一个治疗组(会被告知增加饱和脂肪摄入量)或一个对照组(会被告知保持和以前一样的饮食)。我们必须将个体随机分配给这些群体。否则,选择治疗的人可能在某种程度上与选择对照组的人有所不同——例如,他们也可能更倾向于从事其他健康行为。然后我们会随着时间的推移跟踪参与者,看看每组有多少人死亡。因为我们将受试者随机分为治疗组或对照组,我们可以合理地确信,两组之间没有其他会混淆治疗效果的差异;然而,我们仍然不能确定,因为有时随机分组会产生治疗效果。对照组 _ 确实 _ 在某些重要方面有所不同。研究人员经常试图通过统计分析来解决这些混淆问题,但从数据中消除混淆的影响可能非常困难。 - -许多随机对照试验研究了改变饱和脂肪摄入量是否能改善健康和延长寿命的问题。这些试验集中在减少(htg0)饱和脂肪,因为营养学研究人员认为饱和脂肪是致命的,这是一个强有力的教条;这些研究人员中的大多数可能会争辩说,让人们多吃(htg2)饱和脂肪是不道德的!然而,随机对照试验显示出一个非常一致的模式:总的来说,减少饱和脂肪摄入对死亡率没有明显的影响。 - -## 1.5 阅读建议 - -* _ 统计智慧的七大支柱 _,斯蒂芬·斯蒂格勒著 -* _ 品尝女士茶:统计学如何在 20 世纪彻底改变科学 _,作者:大卫·萨尔斯堡 -* _ 赤裸裸的统计:从数据中剥离恐惧 _,查尔斯·惠兰 \ No newline at end of file diff --git a/docs/10.md b/docs/10.md index 65ce697ae467e5a4395dc9d1264d243b72c0150f..1afdfd76a177ca78206d9b6696e43e16b64ef807 100644 --- a/docs/10.md +++ b/docs/10.md @@ -1,370 +1,235 @@ -# 十、置信区间、效应大小和统计功率 +
-在前一章中,我们讨论了如何使用数据来测试假设。这些方法提供了一个二元答案:我们要么拒绝要么不拒绝无效假设。然而,这种决定忽略了一些重要的问题。首先,我们想知道我们对答案的不确定性有多大(不管它是如何发展的)。此外,有时我们没有一个明确的空假设,所以我们想看看什么范围的估计与数据一致。第二,我们想知道实际效果有多大,因为正如我们在前一章的减肥例子中看到的,统计显著的效果并不一定是一个实际重要的效果。 +# 10 量化效果和设计研究 -在这一章中,我们将讨论解决这两个问题的方法:置信区间提供对我们估计的不确定性的度量,以及影响大小提供一种标准化的方法来理解影响有多大。我们还将讨论 _ 统计能力 _ 的概念,它告诉我们,我们可以多么好地期望找到任何可能存在的真正效果。 +在前一章中,我们讨论了如何利用数据来检验假设。这些方法提供了一个二元答案:我们要么拒绝,要么不能拒绝零假设。然而,这种决定忽略了几个重要的问题。首先,我们想知道我们对答案有多少不确定性(不管它往哪个方向发展)。此外,有时我们没有明确的零假设,所以我们希望看到什么范围的估计与数据一致。第二,我们想知道这种影响实际上有多大,因为正如我们在前一章的减肥例子中所看到的,统计上显著的影响不一定是实际上重要的影响。 -## 10.1 置信区间 - -到目前为止,我们在这本书中的重点是估计统计数据的具体值。例如,假设我们想估计 nhanes 数据集中成年人的平均体重。我们可以从数据集中提取一个样本并估计平均值: +在这一章中,我们将讨论解决这两个问题的方法:置信区间提供了对我们估计的不确定性的一种度量,效应大小提供了一种理解效应有多大的标准化方法。我们还将讨论统计功效的概念,它告诉我们有多大可能找到任何真实存在的效应。 -```r -# take a sample from adults in NHANES and summarize their weight +
-sampSize <- 250 -NHANES_sample <- sample_n(NHANES_adult, sampSize) +## 10.1 置信区间 -sample_summary <- - NHANES_sample %>% - summarize( - meanWeight = mean(Weight), - sdWeight = sd(Weight) - ) -pander(sample_summary) -``` +到目前为止,在本书中,我们一直专注于估计单值统计。例如,假设我们想要估计NHANES数据集中成年人的平均体重,那么我们从数据集中抽取一个样本并估计平均值。在这个样本中,平均重量是79.92千克。我们称之为*点估计*,因为它为我们提供了一个数字来描述我们对总体参数的估计。然而,从我们先前对抽样误差的讨论中我们知道,这个估计值有一些不确定性,用标准误差来描述。您还应该记住,标准误差由两个部分决定:总体标准偏差(分子)和样本大小的平方根(分母)。总体标准差是一个通常未知但固定的参数,不在我们的控制之下,而样本量*是*在我们的控制之下。因此,我们可以通过增加样本量来降低估计值的不确定性——直到达到整个人口规模的极限,此时根本不存在不确定性,因为我们可以直接从整个人口的数据中计算人口参数。 - -| 平均重量 | S 重量 | -| --- | --- | -| 82.77 美元 | 22.27 条 | +我们经常希望有一种方法可以更直接地描述统计估计的不确定性,这可以通过使用*置信区间*来实现。大多数人通过政治民意测验的“误差幅度”概念来熟悉置信区间。这些民意调查通常试图提供一个精确度在+/-3%以内的答案。例如,当候选人被估计以9个百分点的优势赢得选举,误差幅度为3时,他们将赢得的百分比被估计在6-12个百分点之内。在统计学中,我们将这种数值范围称为置信区间,它为我们的参数估计提供了一个与样本数据一致的数值范围,而不仅仅是基于数据给出一个估计值。置信区间越宽,我们对参数估计的不确定性就越大。 -在这个样本中,平均重量是 82.77 千克。我们将其称为 _ 点估计 _,因为它为我们提供了一个描述差异的单一数字。然而,我们从前面对抽样误差的讨论中知道,这个估计有一些不确定性,用标准误差来描述。您还应该记住,标准误差由两个部分决定:总体标准偏差(分子)和样本大小的平方根(分母)。总体标准偏差是一个未知但固定的参数,不在我们的控制范围内,而样本量 _ 在我们的控制范围内。因此,我们可以通过增加样本量来降低估计的不确定性——达到整个群体规模的极限,此时完全没有不确定性,因为我们可以直接从整个群体的数据中计算群体参数。_ +众所周知,置信区间令人困惑,主要是因为它们并不意味着我们直觉上认为它们意味着什么。如果我告诉你,我已经为我的统计量计算了一个“95%的置信区间”,那么很自然地认为我们可以有95%的信心认为真实的参数值落在这个区间内。然而,正如我们将在整个课程中看到的,统计学中的概念通常并不意味着我们认为它们应该意味着什么。在置信区间的情况下,我们不能以这种方式解释它们,因为总体参数有一个固定的值——它要么在区间内,要么不在区间内,所以谈论发生的概率是没有意义的。置信区间的发明者杰吉·内曼说: -您可能还记得之前我们引入了 _ 置信区间 _ 的概念,这是一种描述统计估计不确定性的方法。请记住,置信区间描述了一个平均包含给定概率的真实总体参数的区间;例如,95%置信区间是一个将捕获 95%时间的真实总体参数的区间。请再次注意,这不是关于填充参数的语句;任何特定的置信区间都包含或不包含真参数。正如信任区间的发明者 Jerzy Neyman 所说: +> "这个参数是一个未知的常数,不可能对它的值作出概率陈述." ( [J .内曼1937](19.html#ref-Neyman37) ) -> “参数是一个未知常数,不能对其值作出概率陈述。”(J Neyman 1937) +相反,我们必须从我们看待假设检验的同一立场来看待置信区间过程:从长远来看,这一过程将允许我们以特定的概率做出正确的陈述。因此,对95%置信区间的正确解释是,它是一个包含95%时间的真实总体均值的区间,事实上,我们可以使用模拟来证实这一点,如下文所示。 -平均值的置信区间计算如下: +平均值的置信区间计算如下: -![](img/1802bb15357660c8509890bd23bf9464.jpg) +CI=点估计 临界值 * 标准差CI = \ text {点估计} \ pm \ text {临界值} * \ text {标准差} -其中临界值由估计值的抽样分布确定。那么,重要的问题是抽样分布是什么。 +其中临界值由估计值的抽样分布决定。那么,重要问题是,我们如何获得抽样分布的估计值。 -# +
-## 10.1.1 使用正态分布的置信区间 +### 10.1.1 使用正态分布的置信区间 -如果我们知道总体标准差,那么我们可以用正态分布来计算置信区间。我们通常不这样做,但对于我们的 nhanes 数据集示例,我们这样做(重量为 21.3)。 +如果我们知道总体标准偏差,那么我们可以使用正态分布来计算置信区间。我们通常不这样做,但是在NHANES数据集的例子中,我们这样做了,因为我们将整个数据集视为总体(权重为21.3)。 -假设我们要计算平均值的 95%置信区间。临界值将是标准正态分布的值,它捕获了 95%的分布;这些仅仅是分布的 2.5%和 97.5%,我们可以使用 r 中的`qnorm()`函数计算得出![](img/62de2e04c50cdadabb13e0e5fa449b90.jpg)。因此,平均值(![](img/17ee279e0e3562706ec890e1da87b839.jpg))的置信区间为: +假设我们想要计算平均值的95%置信区间。临界值将是标准正态分布的值,该值占分布的95%;这些只是分布的第2.5百分位和第97.5百分位,我们可以使用我们的统计软件进行计算,得出1.96\ pm 1.96。因此,均值(x\ bar { x })的置信区间为: -![](img/593ce3f65adac443076014a8b5668e9b.jpg) +【c】【I】= -利用样本(82.77)的估计平均值和已知的总体标准差,我们可以计算出[80.13,85.41]的置信区间。 +使用样本的估计平均值(79.92)和已知的总体标准差,我们可以计算出[77.28,82.56]的置信区间。 -# +
-## 10.1.2 使用 t 分布的置信区间 +
-如上所述,如果我们知道总体标准差,那么我们可以使用正态分布来计算我们的置信区间。但是,一般情况下,我们不会——在这种情况下,_t_ 分布更适合作为采样分布。记住,t 分布比正态分布略宽,特别是对于较小的样本,这意味着置信区间将比我们使用正态分布时的置信区间略宽。这包含了当我们基于小样本得出结论时产生的额外不确定性。 +### 10.1.2 使用t分布的置信区间 -我们可以用类似于上述正态分布的方法计算 95%的置信区间,但临界值是由 _t_ 分布的 2.5%和 97.5%确定的,我们可以用 r 中的`qt()`函数计算,因此平均值(![](img/17ee279e0e3562706ec890e1da87b839.jpg))的 ence 间隔为: +如上所述,如果我们知道总体标准偏差,那么我们可以使用正态分布来计算我们的置信区间。然而,一般来说我们不会——在这种情况下, *t* 分布更适合作为抽样分布。请记住,t分布比正态分布略宽,尤其是对于较小的样本,这意味着置信区间将比使用正态分布时略宽。这包含了当我们基于小样本估计参数时产生的额外不确定性。 -![](img/2ba466ac95c37a91093b33efe3a8c843.jpg) +我们可以以类似于上述正态分布示例的方式计算95%的置信区间,但临界值由具有适当自由度的 *t* 分布的2.5%和97.5%决定。因此,均值(x\ bar { x })的置信区间为: -其中![](img/998149a807724e0687217b52f2785a85.jpg)是临界 t 值。对于 nhanes 权重示例(样本大小为 250),置信区间为: +【c】【I】= -```r -# compute confidence intervals for weight in NHANES data +其中tcrItt _ { crit }为临界t值。对于NHANES砝码示例(样本量为250),置信区间为79.92 +/- 1.97 * 1.41 [77.15 - 82.69]。 -sample_summary <- - sample_summary %>% - mutate( - cutoff_lower = qt(0.025, sampSize), - cutoff_upper = qt(0.975, sampSize), - CI_lower = meanWeight + cutoff_lower * sdWeight / sqrt(sampSize), - CI_upper = meanWeight + cutoff_upper * sdWeight / sqrt(sampSize) - ) -pander(sample_summary) -``` +请记住,这并不能告诉我们任何关于真实总体值落在该区间内的概率,因为它是一个固定参数(我们知道它是81.77,因为在这种情况下我们有整个总体),并且它要么落在这个特定区间内,要么不落在这个特定区间内(在这种情况下,它落在这个特定区间内)。相反,它告诉我们,从长远来看,如果我们使用这个过程计算置信区间,95%的时间置信区间将捕获真实的总体参数。 - | meanWeight | sdWeight | 切断阀 | 上切断 | Ci_ 下 | Ci_ 上部 | -| --- | --- | --- | --- | --- | --- | -| 82.77 | 22.27 | -1.97 条 | 1.97 条 | 80 | 85.54 美元 | +我们用NHANES的数据作为我们的人口可以看到这一点;在这种情况下,我们知道总体参数的真实值,因此我们可以看到置信区间在许多不同样本中捕获该值的频率。图 [10.1](#fig:CIcoverage) 显示了NHANES数据集中100个样本的估计平均重量的置信区间。其中,95个获得了真实的人口平均体重,表明置信区间程序的表现,因为它应该。 -请记住,这并不能告诉我们关于真实总体值在这个区间内的概率,因为它是一个固定参数(我们知道它是 81.77,因为在这种情况下我们有整个总体),并且它或者不在这个特定区间内(i 在这种情况下,确实如此)。相反,它告诉我们,从长远来看,如果我们使用这个过程计算置信区间,95%的置信区间将捕获真正的总体参数。 +![Samples were repeatedly taken from the NHANES dataset, and the 95% confidence interval of the mean was computed for each sample. Intervals shown in red did not capture the true population mean (shown as the dotted line).](../media/file55.png) -# +图10.1:从NHANES数据集中重复提取样本,并计算每个样本平均值的95%置信区间。以红色显示的区间没有捕捉到真实的总体平均值(如虚线所示)。 -## 10.1.3 置信区间和样本量 +
-由于标准误差随样本量的减小而减小,平均置信区间应随着样本量的增大而变窄,从而为我们的估计提供了越来越严格的界限。图[10.1](#fig:CISampSize)显示了置信区间将如何作为权重示例的样本大小函数而变化的示例。从图中可以明显看出,随着样本量的增加,置信区间变得越来越紧,但是增加样本会产生递减的回报,这与置信区间项的分母与样本量的平方根成正比的事实相一致。E. +
-![An example of the effect of sample size on the width of the confidence interval for the mean.](img/file63.png) +### 10.1.3 置信区间和样本量 -图 10.1 样本量对平均值置信区间宽度影响的示例。 +因为标准误差随着样本量的增加而减小,所以置信区间应该随着样本量的增加而变窄,从而为我们的估计提供越来越紧的界限。图 [10.2](#fig:CISampSize) 显示了置信区间如何作为权重示例的样本大小的函数而变化的示例。从图中可以明显看出,随着样本量的增加,置信区间变得越来越窄,但样本量的增加会带来收益递减,这与置信区间项的分母与样本量的平方根成比例的事实相一致。 -# +![An example of the effect of sample size on the width of the confidence interval for the mean.](../media/file56.png) -## 10.1.4 使用引导程序计算置信区间 +图10.2:样本大小对均值置信区间宽度影响的例子。 -在某些情况下,我们不能假定正态性,或者我们不知道统计的抽样分布。在这些情况下,我们可以使用引导程序(我们在[8](#resampling-and-simulation)章中介绍了它)。作为提醒,引导程序需要重复地用替换项对数据 _ 进行重采样,然后使用这些样本上计算的统计分布作为统计分布的抽样代理。_ +
-早些时候,我们使用手工编写的代码运行引导程序,但是 R 包含一个名为`boot`的包,我们可以使用它运行引导程序并计算置信区间。让我们用它来计算 nhanes 样本中权重的置信区间。 +
-```r -# compute bootstrap confidence intervals on NHANES weight data +### 10.1.4 使用自举计算置信区间 -meanWeight <- function(df, foo) { - return(mean(df[foo, ]$Weight)) -} +在某些情况下,我们不能假设正态性,或者我们不知道统计的抽样分布。在这些情况下,我们可以使用bootstrap(我们在第 [8](#resampling-and-simulation) 章中介绍过)。提醒一下,bootstrap包括用替换数据重复重新采样数据*,然后使用在这些样本上计算的统计分布作为统计抽样分布的替代。当我们使用R中内置的bootstrapping函数来计算NHANES样本中权重的置信区间时,结果如下:* -bs <- boot(NHANES_sample, meanWeight, 1000) - -# use the percentile bootstrap -bootci <- boot.ci(bs, type = "perc") -print("Bootstrap confidence intervals:") ``` - -```r -## [1] "Bootstrap confidence intervals:" +## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS +## Based on 1000 bootstrap replicates +## +## CALL : +## boot.ci(boot.out = bs, type = "perc") +## +## Intervals : +## Level Percentile +## 95% (78, 84 ) +## Calculations and Intervals on Original Scale ``` -```r -tibble( - lower = bootci$perc[4], - upper = bootci$perc[5] -) %>% - pander() -``` +这些值非常接近使用上述t分布获得的值,尽管不完全相同。 - -| 降低 | 上面的 | -| --- | --- | -| 第 80.12 条 | 85.71 美元 | +
-这些值与使用上面的 t 分布得到的值相当接近,尽管不完全相同。 +
-# +### 10.1.5 置信区间与假设检验的关系 -## 10.1.5 置信区间与假设检验的关系 +置信区间和假设检验之间有密切的关系。特别是,如果置信区间不包括零假设,那么相关的统计检验将具有统计显著性。例如,如果您使用α=0.05\α= 0.05来测试样本的平均值是否大于零,您可以简单地检查零是否包含在平均值的95%置信区间内。 -置信区间与假设检验有着密切的关系。尤其是,如果置信区间不包括无效假设,那么相关的统计检验将具有统计学意义。例如,如果您使用![](img/6bdc138de1860434ee85d22ac40f9ae8.jpg)测试样本的平均值是否大于零,您可以简单地检查是否在平均值的 95%置信区间内包含零。 +如果我们想要比较两个条件的平均值 ( [申克尔和绅士2001](ch020.xhtml#ref-sche:gent:2001) ) ,事情就变得更棘手了。有几种情况很明显。首先,如果每个平均值都包含在另一个平均值的置信区间内,那么在选定的置信水平上肯定没有显著差异。第二,如果置信区间之间没有重叠,那么在选定的水平上肯定有显著差异;事实上,这个测试基本上是*保守的*,这样实际的错误率将低于选择的水平。但是,如果置信区间彼此重叠,但不包含另一组的均值,该怎么办呢?在这种情况下,答案取决于两个变量的相对可变性,没有通用的答案。然而,人们通常应该避免使用重叠置信区间的“眼球测试”。 -如果我们想比较两个条件的平均值,事情会变得更棘手(Schenker 和绅士 2001)。有几个情况是清楚的。首先,如果每个均值都包含在另一个均值的置信区间内,那么在所选置信水平上肯定没有显著差异。其次,如果置信区间之间没有重叠,那么在所选水平上肯定存在显著差异;事实上,该测试基本上是 _ 保守 _,因此实际误差率将低于所选水平。但是,如果置信区间彼此重叠,但不包含另一组的平均值,情况会怎样呢?在这种情况下,答案取决于两个变量的相对可变性,没有一般的答案。一般来说,我们应该避免对重叠的置信区间使用“视觉测试”,因为它通常会导致较高的假阴性(II 型)错误率。 +
-## 10.2 效果大小 +
-> “统计显著性是最不有趣的结果。你应该用数量尺度来描述结果——不仅仅是治疗对人有影响,还有它对人有多大的影响。”基因玻璃(Ref) +
-在最后一章中,我们讨论了统计学意义不一定反映实际意义的观点。为了讨论实际意义,我们需要一种标准的方法来根据实际数据描述效应的大小,我们称之为 _ 效应大小 _。在本节中,我们将介绍这个概念,并讨论计算影响大小的各种方法。 +## 10.2 效果尺寸 -效应大小是一种标准化的测量,它将某些统计效应的大小与参考量(如统计的可变性)进行比较。在一些科学和工程领域中,这个概念被称为“信噪比”。有许多不同的方法可以量化效果大小,这取决于数据的性质。 +> “统计显著性是结果中最没意思的地方。你应该用数量级来描述结果——不仅仅是一种治疗对人们有没有影响,而是它对人们的影响有多大。”吉恩·格拉斯,引自 ( [沙利文和费恩2012](ch020.xhtml#ref-Sullivan:2012ta) ) -# +在前一章,我们讨论了统计意义不一定反映实际意义的观点。为了讨论实际意义,我们需要一种标准的方法来描述实际数据中效应的大小,我们称之为*效应大小*。在本节中,我们将介绍这一概念,并讨论计算效应大小的各种方法。 -## 10.2.1 科恩 +效应大小是一种标准化的度量,它将某些统计效应的大小与参考量(如统计的可变性)进行比较。在一些科学和工程领域,这种想法被称为“信噪比”。有许多不同的方法可以量化影响大小,这取决于数据的性质。 -影响大小最常见的度量之一是以统计学家雅各布·科恩(Jacob Cohen)的名字命名的 _ 科恩的 D_,他在 1994 年发表的题为“地球是圆的(P<;.05)”的论文中最为著名。它用于量化两种方法之间的差异,根据它们的标准偏差: +
-![](img/ed4b5723c1c1d00c8f305919ccfbd224.jpg) +### 10.2.1 科恩医生 -其中![](img/9f07a04e73180057e99b6fb08e88614c.jpg)和![](img/2e54e3c201411d186d4ed11b14e4d6b6.jpg)是两组的平均值,而![](img/0492c0bfd615cb5e61c847ece512ff51.jpg)是合并标准偏差(这是两个样本的标准偏差的组合,由样本大小加权): +最常见的效应大小测量方法之一被称为*科恩的d* ,以统计学家雅各布·科恩(Jacob Cohen)的名字命名(他因1994年题为“地球是圆的(p < .05)”的论文而闻名)。它用于量化两个平均值之间的差异,即它们的标准偏差: -![](img/c32d91ff7a5a1e8df4cb8176b405ddda.jpg) +【丁】= -其中![](img/43dc0e5b26df34d3e2f9c1ea065d2cec.jpg)和![](img/f654c11a6cebbc4eb0d47572ce0dd9ed.jpg)是样品尺寸,![](img/c24c5663bd51a01bc22bd9045f59cbfc.jpg)和![](img/b876141d76079657cceccf2a798df6b8.jpg)分别是两组的标准偏差。 +其中x1\ bar { x } _ 1x2\ bar { x } _ 2是两者的意思 -有一个常用的尺度可以用科恩的 D 来解释效应的大小: +s=(n1——1)s12+s22n1+n2-2 其中nn _ 1n2n _ 2是样本大小和 请注意,这在精神上与t统计非常相似,主要区别在于t统计中的分母基于平均值的标准误差,而Cohen的D中的分母基于数据的标准偏差。这意味着t统计量将随着样本量的增加而增加,而Cohen的D值将保持不变。 - +Table 10.1: Interpetation of Cohen’s D | D | 解释 | | --- | --- | -| 0.2 条 | 小的 | -| 0.5 倍 | 中等的 | -| 0.8 倍 | 大的 | - -观察一些常见的理解效果,有助于理解这些解释。 - -```r -# compute effect size for gender difference in NHANES - -NHANES_sample <- - NHANES_adult %>% - drop_na(Height) %>% - sample_n(250) - -hsum <- - NHANES_sample %>% - group_by(Gender) %>% - summarize( - meanHeight = mean(Height), - varHeight = var(Height), - n = n() - ) - -#pooled SD -s_height_gender <- sqrt( - ((hsum$n[1] - 1) * hsum$varHeight[1] + (hsum$n[2] - 1) * hsum$varHeight[2]) / - (hsum$n[1] + hsum$n[2] - 2) -) - -#cohen's d -d_height_gender <- (hsum$meanHeight[2] - hsum$meanHeight[1]) / s_height_gender - -sprintf("Cohens d for male vs. female height = %0.2f", d_height_gender) -``` - -```r -## [1] "Cohens d for male vs. female height = 1.95" -``` - -参照上表,身高性别差异的影响大小(d=1.95)很大。我们也可以通过观察样本中男性和女性身高的分布来看到这一点。图[10.2](#fig:genderHist)显示,这两个分布虽然仍然重叠,但分离得很好,突出了这样一个事实:即使两个组之间的差异有很大的影响大小,每个组中的个体也会更像另一个组。 - -![Smoothed histogram plots for male and female heights in the NHANES dataset, showing clearly distinct but also clearly overlapping distributions.](img/file64.png) - -图 10.2 nhanes 数据集中男性和女性身高的平滑柱状图,显示了明显不同但明显重叠的分布。 - -同样值得注意的是,我们很少在科学中遇到这种规模的影响,部分原因是它们是如此明显的影响,以至于我们不需要科学研究来找到它们。正如我们将在第[17](#doing-reproducible-research)章中看到的那样,在科学研究中报告的非常大的影响往往反映出有问题的研究实践的使用,而不是自然界中真正的巨大影响。同样值得注意的是,即使有如此巨大的影响,这两种分布仍然是重叠的——会有一些女性比普通男性高,反之亦然。对于最有趣的科学效应来说,重叠的程度会大得多,所以我们不应该马上就基于一个大的效应大小得出关于不同人群的强有力的结论。 - -# - -## 10.2.2 皮尔逊 R +| 0.0 - 0.2 | 微不足道的 | +| 0.2 - 0.5 | 小的 | +| 0.5 - 0.8 | 媒介 | +| 0.8 - | 大的 | -Pearson 的 _r_ 也称为 _ 相关系数 _,是对两个连续变量之间线性关系强度的度量。我们将在[13](#modeling-continuous-relationships)章中更详细地讨论相关性,因此我们将保存该章的详细信息;这里,我们简单地介绍 _r_ 作为量化两个变量之间关系的方法。 +根据Cohen's d,有一个解释效果大小的常用尺度,如表 [10.1](#tab:dInterp) 所示。查看一些普遍理解的效应有助于理解这些解释。例如,参照我们上面的表格,成人身高性别差异的影响大小(d = 2.05)非常大。我们也可以通过观察NHANES数据集样本中男性和女性身高的分布来了解这一点。图 [10.3](#fig:genderHist) 显示这两种分布很好地分开,尽管仍然重叠,这突出了一个事实,即使两组之间的差异有很大的影响大小,每个组中也会有更像另一组的个体。 -_r_ 是一个在-1 到 1 之间变化的度量值,其中值 1 表示变量之间的完全正关系,0 表示没有关系,而-1 表示完全负关系。图[10.3](#fig:corrFig)显示了使用随机生成的数据的各种相关级别的示例。 +![Smoothed histogram plots for male and female heights in the NHANES dataset, showing clearly distinct but also clearly overlapping distributions.](../media/file57.png) -![Examples of various levels of Pearson's r.](img/file65.png) +图10.3:NHANES数据集中男性和女性身高的平滑直方图,显示了明显不同但也明显重叠的分布。 -图 10.3 不同水平皮尔逊 R 的示例。 +同样值得注意的是,我们很少在科学中遇到这种量级的影响,部分原因是它们是如此明显的影响,以至于我们不需要科学研究来发现它们。正如我们将在关于再现性的第 [18](#doing-reproducible-research) 章中看到的,科学研究中报道的非常大的效应通常反映了可疑研究实践的使用,而不是自然界中真正巨大的效应。同样值得注意的是,即使是如此巨大的影响,两种分布仍然重叠——会有一些女性比一般男性高,反之亦然。对于大多数有趣的科学效应来说,重叠的程度要大得多,所以我们不应该根据一个很大的效应大小就立即对来自不同人群的个体做出强有力的结论。 -# +
-## 10.2.3 优势比 +
-在我们之前关于概率的讨论中,我们讨论了概率的概念——也就是说,某些事件发生与未发生的相对可能性: +### 10.2.2 皮尔森的r -![](img/87bcd112e30593468e1624d0dd165047.jpg) +皮尔逊的 *r* ,也被称为*相关系数*,是衡量两个连续变量之间线性关系强度的指标。我们将在第13章[中更详细地讨论相关性,所以我们将把细节留到那一章;这里,我们简单地引入 *r* 作为一种量化两个变量之间关系的方法。](#modeling-continuous-relationships) -优势比只是两个优势比。例如,让我们以吸烟和肺癌为例。2012 年发表在《国际癌症杂志》上的一项研究(Pesch 等人 2012 年)关于吸烟者和从未吸烟的个体肺癌发生率的综合数据,通过许多不同的研究。请注意,这些数据来自病例对照研究,这意味着这些研究的参与者之所以被招募,是因为他们要么患了癌症,要么没有患癌症;然后检查他们的吸烟状况。因此,这些数字并不代表一般人群中吸烟者的癌症患病率,但它们可以告诉我们癌症与吸烟之间的关系。 +*r* 是一个从-1到1变化的测度,其中值1代表变量之间完全正相关,0代表没有关系,-1代表完全负相关。图 [10.4](#fig:corrFig) 显示了使用随机生成数据的各种相关水平的示例。 -```r -# create table for cancer occurrence depending on smoking status -smokingDf <- tibble( - NeverSmoked = c(2883, 220), - CurrentSmoker = c(3829, 6784), - row.names = c("NoCancer", "Cancer") -) -pander(smokingDf) -``` - - -| 从不吸烟 | 当前吸烟者 | 行名称 | -| --- | --- | --- | -| 2883 个 | 3829 年 | 无癌症者 | -| 220 | 6784 个 | 癌症 | +![Examples of various levels of Pearson's r.](../media/file58.png) -我们可以将这些数字转换为每个组的优势比: +图10.4:不同等级皮尔逊风险比的例子。 -```r -# convert smoking data to odds +
-smokingDf <- - smokingDf %>% - mutate( - pNeverSmoked = NeverSmoked / sum(NeverSmoked), - pCurrentSmoker = CurrentSmoker / sum(CurrentSmoker) - ) +
-oddsCancerNeverSmoked <- smokingDf$NeverSmoked[2] / smokingDf$NeverSmoked[1] -oddsCancerCurrentSmoker <- smokingDf$CurrentSmoker[2] / smokingDf$CurrentSmoker[1] -``` +### 10.2.3 比值比 -从未吸烟的人患肺癌的几率为 0.08,而目前吸烟者患肺癌的几率为 1.77。这些比值告诉我们两组患者患癌症的相对可能性: +在我们之前关于概率的讨论中,我们讨论了几率的概念,即某个事件发生与不发生的相对可能性: -```r -#compute odds ratio + -oddsRatio <- oddsCancerCurrentSmoker/oddsCancerNeverSmoked -sprintf('odds ratio of cancer for smokers vs. nonsmokers: %0.3f',oddsRatio) -``` +我们还讨论了*赔率*,简单来说就是两个赔率的比值。比值比是描述二元变量效应大小的一种有用方法。 -```r -## [1] "odds ratio of cancer for smokers vs. nonsmokers: 23.218" -``` +例如,让我们以吸烟和肺癌为例。2012年发表在《国际癌症杂志》上的一项研究 ( [Pesch et al. 2012](ch020.xhtml#ref-pesc:kend:gust:2012) ) 综合了许多不同研究中关于吸烟者和从不吸烟者肺癌发生率的数据。请注意,这些数据来自病例对照研究,这意味着这些研究的参与者是因为他们患有或未患有癌症而被招募的;然后检查他们的吸烟状况。因此,这些数字(如表 [10.2](#tab:smokingData) 所示)并不代表普通人群中吸烟者的癌症患病率——但它们可以告诉我们癌症和吸烟之间的关系。 -23.22 的比值比告诉我们,吸烟者患癌症的几率大约是不吸烟者的 23 倍。 - -## 10.3 统计能力 +Table 10.2: Lung cancer occurrence separately for current smokers and those who have never smoked +| 状态 | 从不吸烟 | 当前吸烟者 | +| --- | --- | --- | +| 没有癌症 | Two thousand eight hundred and eighty-three | Three thousand eight hundred and twenty-nine | +| 巨蟹星座 | Two hundred and twenty | Six thousand seven hundred and eighty-four | -请记住,在上一章中,根据 Neyman-Pearson 假设检验方法,我们必须指定我们对两种错误的容忍程度:假阳性(他们称之为 _I 型错误 _)和假阴性(他们称之为 _II 型错误 _)。人们经常把重点放在 I 型错误上,因为作出假阳性的声明通常被视为一件非常糟糕的事情;例如,韦克菲尔德(1999)现在不可信的声称自闭症与疫苗接种有关,导致了反疫苗情绪的大幅上升。儿童疾病,如麻疹。同样,我们也不想声称一种药物如果真的不能治愈一种疾病,这就是为什么 I 型错误的耐受性通常被设定为相当低的原因,通常是在![](img/6bdc138de1860434ee85d22ac40f9ae8.jpg)。但是 II 型错误呢? +我们可以将这些数字转换成每一组的优势比。不吸烟者患肺癌的几率为0.08,而当前吸烟者患肺癌的几率为1.77。这些比值比告诉我们两组之间患癌的相对可能性:比值比23.22告诉我们,吸烟者患肺癌的几率大约比不吸烟者高23倍。 -_ 统计功率 _ 的概念是对第二类错误的补充,也就是说,如果存在的话,很可能会得到一个正的结果: +
-![](img/f013d353691220c2ac10c2a1eeb7a0a0.jpg) +
-Neyman-Pearson 模型的另一个重要方面,我们没有在上面讨论过,事实上,除了说明 I 型和 II 型错误的可接受水平外,我们还必须描述一个特定的替代假设——即,我们希望检测的影响大小计算机断层扫描?否则,我们无法解释![](img/50705df736e9a7919e768cf8c4e4f794.jpg)——发现大效应的可能性总是高于发现小效应的可能性,因此![](img/50705df736e9a7919e768cf8c4e4f794.jpg)将根据我们试图检测的效应大小而有所不同。 +
-影响功率的因素有三个: +## 10.3 统计功率 -* 样本量:较大的样本提供更大的统计能力 -* 效果大小:给定的设计总是比小效果有更大的发现大效果的能力(因为发现大效果更容易) -* I 型错误率:I 型错误与功率之间存在一种关系,因此(其他所有情况相同)减少 I 型错误也会降低功率。 +请记住上一章的内容,在奈曼-皮尔森假设检验方法下,我们必须指定我们对两种错误的容忍度:假阳性(他们称之为*第一类错误*)和假阴性(他们称之为*第二类错误*)。人们经常把注意力集中在第一类错误上,因为做出一个错误的肯定声明通常被认为是一件非常糟糕的事情;例如,韦克菲尔德( [1999](ch020.xhtml#ref-wake:1999) ) 声称自闭症与疫苗接种有关,这一现已不可信的说法导致了反疫苗情绪,导致麻疹等儿童疾病大幅增加。同样,我们也不想声称一种药物可以治愈一种疾病,如果它真的不能。这也是为什么I类误差的容差一般设置的相当低,通常为α=0.05\α= 0.05。但是第二类错误呢? -我们可以通过模拟看到这一点。首先,让我们模拟一个单独的实验,在这个实验中,我们使用标准 t 检验比较两组的平均值。我们将改变影响的大小(根据 Cohen's d 的规定)、I 类错误率和样本大小,并针对每一个,我们将检查重要结果(即功率)的比例是如何受到影响的。图[10.4](#fig:plotPowerSim)显示了功率如何随这些因素的函数而变化的示例。 +*统计功效*的概念是第二类错误的补充——也就是说,它是在假设存在的情况下找到阳性结果的可能性: -```r -# Simulate power as a function of sample size, effect size, and alpha +【p】【w】【e】【r】=】 -# create a set of functions to generate simulated results -powerDf <- - expand.grid( - sampSizePerGroup = c(12, 24, 48, 96), - effectSize = c(.2, .5, .8), - alpha = c(0.005, 0.05) - ) %>% - tidyr::expand(effectSize, sampSizePerGroup, alpha) %>% - group_by(effectSize, sampSizePerGroup, alpha) +奈曼-皮尔逊模型的另一个我们之前没有讨论的重要方面是,除了规定第一类和第二类错误的可接受水平,我们还必须描述一个具体的替代假设——即,我们希望检测的影响大小是多少?否则,我们无法解读β——发现大效应的可能性总是会高于发现小效应的可能性,因此【β会因我们试图检测的效应大小而有所不同。 -runPowerSim <- function(df, nsims = 1000) { - p <- array(NA, dim = nsims) - for (s in 1:nsims) { - data <- data.frame( - y = rnorm(df$sampSizePerGroup * 2), - group = array(0, dim = df$sampSizePerGroup * 2) - ) +有三个因素会影响统计能力: - data$group[1:df$sampSizePerGroup] <- 1 - data$y[data$group == 1] <- data$y[data$group == 1] + df$effectSize - tt <- t.test(y ~ group, data = data) - p[s] <- tt$p.value - } - return(data.frame(power = mean(p < df$alpha))) -} +* 样本量:样本越大,统计能力越强 +* 效果大小:一个给定的设计总是比一个小的效果有更大的力量去发现大的效果(因为发现大的效果更容易) +* I型误差率:I型误差和功率之间存在一种关系,即(在其他条件相同的情况下)降低I型误差也会降低功率。 -# run the simulation -powerSimResults <- powerDf %>% - do(runPowerSim(.)) -``` +我们可以通过模拟看到这一点。首先让我们模拟一个实验,在这个实验中,我们使用标准的t检验来比较两组的平均值。我们将改变影响的大小(根据Cohen's d指定)、I型错误率和样本大小,对于其中的每一项,我们将检查显著结果(即功效)的比例是如何受到影响的。图 [10.5](#fig:plotPowerSim) 显示了功率作为这些因素的函数如何变化的示例。 -![Results from power simulation, showing power as a function of sample size, with effect sizes shown as different colors, and alpha shown as line type. The standard criterion of 80 percent power is shown by the dotted black line.](img/file66.png) +![Results from power simulation, showing power as a function of sample size, with effect sizes shown as different colors, and alpha shown as line type. The standard criterion of 80 percent power is shown by the dotted black line.](../media/file59.png) -图 10.4 功率模拟结果,显示功率与样本大小的函数关系,效果大小显示为不同颜色,alpha 显示为线条类型。80%功率的标准标准标准用虚线黑线表示。 +图10.5:功率模拟的结果,显示功率作为样本大小的函数,效果大小显示为不同的颜色,alpha显示为线型。80%功率的标准标准由黑色虚线表示。 -这个模拟表明,即使样本大小为 96,我们也几乎没有能力用![](img/5df69e5aed1e15865f5b409184e1f9ec.jpg)找到一个小的效果(![](img/dfc882492c011c73dbc2d4834b30ba47.jpg))。这意味着,一项旨在实现这一目标的研究将是徒劳的,也就是说,即使存在这种规模的真实效应,也几乎可以保证什么也找不到。 +这个模拟向我们表明,即使样本大小为96,我们也只有相对较小的能力来找到一个小效果(d=0.2d = 0.2)与α=0.005\α= 0.005这意味着一项为此而设计的研究将是徒劳的——也就是说,即使这种规模的效应确实存在,也几乎肯定不会有任何发现。 -至少有两个重要的原因需要关注统计能力,一个是我们在这里讨论的,另一个是我们将在第[17 章](#doing-reproducible-research)中讨论的。如果你是一名研究人员,你可能不想花时间做无用的实验。运行一个动力不足的研究基本上是徒劳的,因为这意味着即使它存在,人们也很难找到效果。 +关注统计能力至少有两个重要原因。首先,如果你是一名研究人员,你可能不想把时间花在徒劳的实验上。进行一项动力不足的研究基本上是徒劳的,因为这意味着即使存在效果,人们发现效果的可能性也非常低。第二,事实证明,与有力的研究相比,来自力度不足的研究的任何积极发现更有可能是错误的,这一点我们将在第 [18](#doing-reproducible-research) 章中更详细地讨论。 -# +
-## 10.3.1 功率分析 +### 10.3.1 功率分析 -幸运的是,有一些工具可以帮助我们确定实验的统计能力。这些工具最常见的用途是在计划一个实验时,我们想确定我们的样本需要多大才能有足够的能力发现我们感兴趣的效果。 +幸运的是,有工具可以让我们确定实验的统计能力。这些工具最常见的用途是在计划一个实验时,当我们想要确定我们的样本需要多大,以便有足够的能力找到我们感兴趣的效果。 -假设我们有兴趣进行一项研究,研究 iOS 和 Android 设备用户之间的特定个性特征是如何不同的。我们的计划是收集两组个体并测量他们的人格特征,然后用 t 检验比较这两组。为了确定必要的样本大小,我们可以使用`pwr`库中的`pwr.t.test()`函数。 +比方说,我们有兴趣开展一项研究,探讨iOS设备用户和Android设备用户之间的特定个性特征有何不同。我们的计划是收集两组人,测量他们的个性特征,然后用t检验比较两组人。在这种情况下,我们会认为一个中等效应(【d】=0.5d = 0.5)是有科学意义的,因此我们将使用那个水平来进行我们的功率分析。为了确定必要的样本量,我们可以使用统计软件中的幂函数: -```r -# power analysis for Cohen's d = 0.5, for 80% power with alpha = 0.05 -pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05) ``` - -```r ## ## Two-sample t test power calculation ## ## n = 64 -## d = 0.5 +## delta = 0.5 +## sd = 1 ## sig.level = 0.05 ## power = 0.8 ## alternative = two.sided @@ -372,16 +237,16 @@ pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05) ## NOTE: n is number in *each* group ``` -这告诉我们,为了有足够的力量找到中等规模的效果,我们需要每组至少 64 名受试者。在开始一项新的研究之前进行一次功率分析总是很重要的,以确保研究不会因为样本太小而无效。 +这告诉我们,每组至少需要64名受试者,才能有足够的力量发现中等大小的效应。在开始新的研究之前,进行功效分析总是很重要的,以确保研究不会因为样本太小而无效。 -您可能会想到,如果效果大小足够大,那么所需的样本将非常小。例如,如果我们运行相同的功率分析,效果大小为 d=3,那么我们将看到,每个组中只有大约 3 个受试者有足够的功率来发现差异。 +你可能会想到,如果效应大小足够大,那么所需的样本就会非常小。例如,如果我们运行相同的功效分析,效果大小为d=2,那么我们将看到,我们只需要每组约5名受试者就有足够的功效来发现差异。 -```r +``` ## ## Two-sample t test power calculation ## -## n = 3.1 -## d = 3 +## n = 5.1 +## d = 2 ## sig.level = 0.05 ## power = 0.8 ## alternative = two.sided @@ -389,8 +254,30 @@ pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05) ## NOTE: n is number in *each* group ``` -然而,在科学界很少有人做这样一个实验,我们期望能发现如此巨大的影响——正如我们不需要统计数据来告诉我们 16 岁的孩子比 6 岁的孩子高一样。当我们进行功率分析时,我们需要指定一个对我们的研究合理的效应大小,这通常来自以前的研究。然而,在第[17 章](#doing-reproducible-research)中,我们将讨论一种被称为“赢家诅咒”的现象,这种现象可能导致公布的效果大小大于实际效果大小,因此也应记住这一点。 +然而,在科学界,我们很少会在实验中发现如此大的影响——就像我们不需要统计数据来告诉我们16岁的孩子比6岁的孩子高一样。当我们进行功效分析时,我们需要指定一个对我们的研究看似合理和/或科学上有趣的效应大小,这通常来自以前的研究。然而,在第 [18](#doing-reproducible-research) 章中,我们将讨论一种被称为“赢家的诅咒”的现象,这种现象可能会导致发布的效果尺寸大于真实的效果尺寸,因此这一点也应该记住。 + +
+ +
+ +
+ +## 10.4 学习目标 + +阅读完本章后,您应该能够: + +* 描述置信区间的正确解释,并计算给定数据集平均值的置信区间。 +* 定义效应大小的概念,并计算给定测试的效应大小。 +* 描述统计能力的概念以及它对研究的重要性。 + +
+ +
+ +## 10.5 建议读数 + +* [Hoekstra等人对置信区间的错误理解](http://www.ejwagenmakers.com/inpress/HoekstraEtAlPBR.pdf) -## 10.4 阅读建议 +
-* [Hoekstra 等人对置信区间的强大误解。[高温 1]](http://www.ejwagenmakers.com/inpress/HoekstraEtAlPBR.pdf) \ No newline at end of file +
\ No newline at end of file diff --git a/docs/11.md b/docs/11.md index 5054473babba8ef6f0d15f965dc6a5ef7d99bcfa..7d365ec5ac71e3d005543cff98106e2f56cbfdeb 100644 --- a/docs/11.md +++ b/docs/11.md @@ -1,517 +1,273 @@ -# 十一、贝叶斯统计 +
-在本章中,我们将采用统计建模和推断的方法,这与您在[9](#hypothesis-testing)章中遇到的空假设测试框架形成对比。这是继托马斯·拜斯牧师之后的“贝叶斯统计”,你已经在第[3 章](#probability)中遇到过他的定理。在本章中,您将了解贝叶斯定理如何提供一种理解数据的方法,从而解决我们讨论的关于空假设测试的许多概念性问题。 +# 11 贝叶斯统计 -## 11.1 生成模型 +在这一章中,我们将采用统计建模和推断的方法,与你在第 [9](#hypothesis-testing) 章中遇到的零假设检验框架形成对比。这就是以托马斯·贝叶斯牧师命名的“贝叶斯统计”,他的定理你已经在第六章[中遇到过。在本章中,您将了解贝叶斯定理如何提供了一种理解数据的方法,解决了我们讨论的关于零假设检验的许多概念问题,同时也引入了一些新的挑战。](#probability) -假设你走在街上,你的一个朋友路过,但没有打招呼。你可能会试图决定为什么会发生这种事——他们没有看到你吗?他们生你的气吗?你突然被一个魔法隐身盾牌遮住了吗?贝叶斯统计背后的一个基本思想是,我们希望根据数据本身推断出数据是如何生成的细节。在这种情况下,您希望使用数据(即,您的朋友没有打招呼)来推断生成数据的过程(例如,他们是否真的看到您,他们对您的感觉如何等)。 +
-生成模型背后的思想是,我们观察由 _ 潜在的 _(看不见)过程生成的数据,通常在过程中具有一定的随机性。事实上,当我们从一个群体中抽取一个数据样本,并从样本中估计一个参数时,我们所做的实质上是尝试学习一个潜在变量(群体平均值)的值,这个潜在变量是通过对观察到的数据(样本平均值)进行抽样而产生的。 +## 11.1 创成式模型 -如果我们知道潜在变量的值,那么很容易重建观测数据应该是什么样子。例如,假设我们在抛硬币,我们知道这是公平的。我们可以用 p=0.5 的二项式分布来描述硬币,然后我们可以从这种分布中生成随机样本,以观察观察到的数据应该是什么样的。然而,总的来说,我们处于相反的情况:我们不知道潜在的利益变量的价值,但我们有一些数据,我们想用来估计它。 +假设你正走在街上,你的一个朋友路过,但没有打招呼。你可能会试着判断为什么会发生这种情况——他们没有看到你吗?他们生你的气吗?你突然披上了魔法隐身衣吗?贝叶斯统计背后的一个基本思想是,我们希望根据数据本身来推断数据是如何生成的细节。在这种情况下,您希望使用数据(即,您的朋友没有打招呼的事实)来推断生成数据的过程(例如,他们是否真的看到了您,他们对您的感觉如何,等等)。 -## 11.2 贝叶斯定理与逆推理 +生成模型背后的想法是,一个*潜在的*(看不见的)过程生成我们观察到的数据,通常在这个过程中有一定的随机性。当我们从总体中抽取一个数据样本,并从样本中估计一个参数时,我们所做的事情实质上是试图学习一个潜在变量(总体均值)的值,该变量通过对观察数据(样本均值)的抽样而产生。图 [11.1](#fig:GenerativeModel) 显示了这个想法的示意图。 -贝叶斯统计之所以有它的名字,是因为它利用了贝叶斯定理,从数据中作出推论,使之返回到生成数据的(潜在)模型的某些特征。假设我们想知道一枚硬币是否公平。为了测试这一点,我们将硬币翻转 10 次,然后拿出 7 个硬币头。在这个测试之前,我们很确定硬币是公平的(即![](img/cd9bbb538bd1c0dbde95ceab64ec7f61.jpg)),但是这些数据确实让我们停顿了一下。我们已经知道如何计算条件概率,如果硬币真的是公平的(htg1),我们会用二项分布从 10 中倒出 7 个或更多的头。 +![A schematic of the idea of a generative model.](../media/file60.png) -```r -# compute the conditional probability of 7 or more heads when p(heads)=0.5 -sprintf( - "p(7 or more heads | p(heads) = 0.5) = %.3f", - pbinom(7, 10, .5, lower.tail = FALSE) -) -``` - -```r -## [1] "p(7 or more heads | p(heads) = 0.5) = 0.055" -``` - -这是一个相当小的数字,但这个数字并不能真正回答我们所问的问题——它告诉我们,考虑到头部的特定概率,7 个或更多头部的可能性,而我们真正想知道的是头部的概率。这听起来应该很熟悉,因为这正是我们进行无效假设测试的情况,它告诉我们数据的可能性,而不是假设的可能性。 - -记住,贝叶斯定理为我们提供了一个工具,我们需要它来反转条件概率: - -![](img/2f17a9b425c331238312e908893c6b76.jpg) - -我们可以认为这个定理有四个部分: - -* 先验(![](img/995ec7e5ce638c761412c3a72b1205fc.jpg)):我们在看到数据 D 之前对假设 H 的信任程度。 -* 可能性(![](img/f9a6ac6779edc30af459b2a85f233a90.jpg)):假设 h 下观察数据 d 的可能性有多大? -* 边际可能性(![](img/64a7abdfb98eadee6db62a3795edd609.jpg)):观察到的数据结合所有可能的假设的可能性有多大? -* 后验(![](img/9dbb3da99dde7c1ed5b3f9c07b24916e.jpg)):我们对假设 h 的最新看法,给出了数据 d。 - -这里我们看到了频率主义和贝叶斯统计的主要区别之一。频率主义者不相信假设概率的概念(即我们对假设的信仰程度),对他们来说,假设要么是真的,要么不是真的。另一种说法是,对于频率主义者,假设是固定的,数据是随机的,这就是为什么频率主义者 ST 推理的重点是描述给定假设(即 P 值)的数据概率。另一方面,贝叶斯则乐于对数据和假设进行概率陈述。 - -## 11.3 进行贝叶斯估计 - -我们最终希望使用贝叶斯统计来测试假设,但是在我们这样做之前,我们需要估计测试假设所需的参数。这里我们将介绍贝叶斯估计的过程。让我们用另一个筛选示例:机场安全筛选。如果你像我一样经常飞行,那么在随机爆炸物筛选结果恢复正常之前只是个时间问题;2001 年 9 月 11 日之后不久,当机场保安人员特别紧张时,我有过这种特别不幸的经历。 - -安全人员想知道的是,考虑到机器进行了正面测试,一个人携带爆炸物的可能性是多少。让我们来介绍一下如何使用贝叶斯分析计算这个值。 - -# - -## 11.3.1 规定 - -为了使用贝叶斯定理,我们首先需要为假设指定先验概率。在这种情况下,我们不知道实数,但我们可以假设它很小。根据[联邦航空局](https://www.faa.gov/air_traffic/by_the_numbers/media/Air_Traffic_by_the_Numbers_2018.pdf),2017 年美国有 971595898 名乘客。在这个例子中,假设有一个旅行者的包里装着炸药 - -```r -prior <- 1/971595898 -``` - -# - -## 11.3.2 收集一些数据 - -数据由炸药筛选试验结果组成。让我们假设安全人员通过他们的测试设备运行了 10 次袋子,它给出了 10 次测试中 9 次的正读数。 +图11.1:生成模型的概念示意图。 -```r -nTests <- 10 -nPositives <- 9 -``` +如果我们知道潜在变量的值,那么很容易重建观察到的数据应该是什么样子。例如,让我们说,我们正在抛一个硬币,我们知道这是公平的,所以我们会期望它有50%的机会正面朝上。我们可以用一个值为Pheads=0.5P _ { heads } = 0.5的二项分布来描述硬币,然后我们可以生成随机样本然而,总的来说,我们处于相反的情况:我们不知道感兴趣的潜在变量的值,但我们有一些数据,我们想用它们来估计它。 -# +
-## 11.3.3 计算可能性 +
-我们要在假设袋中有炸药的情况下计算数据的可能性。假设我们知道测试的灵敏度是 0.99——也就是说,当一个设备存在时,它将 99%的时间检测到它。为了确定在设备存在的假设下数据的可能性,我们可以将每个测试视为伯努利试验(即结果为真或假的试验),成功概率为 0.99,我们可以使用二项式分布来建模。 +## 11.2 贝叶斯定理和逆推理 -```r -likelihood <- dbinom(nPositives, nTests, 0.99) -likelihood -``` +贝叶斯统计之所以得名,是因为它利用贝叶斯定理从数据中推断出生成数据的基本过程。假设我们想知道一枚硬币是否公平。为了测试这一点,我们将硬币抛10次,得到7个头。在这次测试之前,我们非常确定,Pheds=P _ { heads } = 0.5, 但是如果我们相信Pheads=0.5P _ { heads } = 0.5的话,那么在10次翻转中找到7次正面肯定会让我们停下来 我们已经知道如何计算条件概率,如果硬币真的是公平的,我们将从10个硬币中掷出7个或更多的正面(P(n|Ph -```r -## [1] 0.091 -``` +得到的概率是0.055。这是一个相当小的数字,但这个数字并没有真正回答我们要问的问题——它告诉我们在给定某种特定正面概率的情况下,出现7个或更多正面的可能性,而我们真正想知道的是这种特定硬币正面的真实概率。这听起来应该很熟悉,因为这正是我们在零假设测试中的情况,它告诉我们数据的可能性,而不是假设的可能性。 -# +请记住,贝叶斯定理为我们提供了反演条件概率所需的工具: -## 11.3.4 计算边际可能性 +【p】(| -我们还需要知道数据的总体可能性——也就是说,在 10 个测试中找出 9 个阳性。计算边际似然性通常是贝叶斯分析中最困难的方面之一,但对于我们的例子来说,这很简单,因为我们可以利用我们在[3.7 节](#bayestheorem)中介绍的贝叶斯定理的具体形式: +我们可以认为这个定理有四个部分: -![](img/b94584013098374a0ab47488f17113bf.jpg) +* *先验*(P(HyPotHesIs) +* *可能性*(P(Data|HyPotHe +* *边际可能性*(P(Data)P(数据) ):综合所有可能的假设,观测数据的可能性有多大? +* *后路*(P(HyPotHess|D -在这种情况下,边际可能性是存在或不存在爆炸物时数据可能性的加权平均值,乘以存在爆炸物的概率(即先验概率)。在这种情况下,假设我们知道测试的特异性是 0.9,这样当没有爆炸物时,阳性结果的可能性是 0.1。 +在我们掷硬币的例子中: -我们可以用 r 计算,如下所示: +* *先验*(PheadsP _ { heads }):我们对掷人头的可能性的相信程度,即P【T30 +* *可能性*(P(7以上人头出10次翻转|Pheads=0 ):如果Pheads=0.5 +* *边际可能性*()P(10次掷硬币中有7次或7次以上正面朝上))P(\ text { 10次掷硬币中有7次或7次以上正面朝上}) ):一般来说,我们观察到10次掷硬币中有7次正面朝上的可能性有多大? +* *后路*(Pheads|10个硬币中有7个或7个以上的正面朝上抛)P _ {正面朝上}|\text{7个或7个以上正面朝上 -```r -marginal_likelihood <- - dbinom( - x = nPositives, - size = nTests, - prob = 0.99 - ) * prior + - dbinom( - x = nPositives, - size = nTests, - prob = .1 - ) * - (1 - prior) - -sprintf("marginal likelihood = %.3e", marginal_likelihood) -``` +这里我们看到了频率主义者和贝叶斯统计之间的一个主要区别。频繁主义者不相信假设的概率(即我们对假设的相信程度)——对他们来说,假设要么是真的,要么不是。另一种说法是,对于频率主义者来说,假设是固定的,数据是随机的,这就是为什么频率主义者的推断侧重于描述给定一个假设的数据的概率(即p值)。另一方面,贝叶斯主义者乐于对数据和假设进行概率陈述。 -```r -## [1] "marginal likelihood = 9.094e-09" -``` +
-# +
-## 11.3.5 计算后部 +## 11.3 做贝叶斯估计 -我们现在有了所有需要计算炸药存在后验概率的部分,假设在 10 个测试中观察到 9 个阳性结果。 +我们最终希望使用贝叶斯统计来对假设做出决策,但在此之前,我们需要估计做出决策所需的参数。在这里,我们将走过贝叶斯估计的过程。我们再举一个筛查的例子:机场安检。如果你经常坐飞机,那么随机爆炸筛查中的一次出现阳性结果只是时间问题;2001年9月11日之后不久,我就有过这种特别不幸的经历,当时机场安检人员特别紧张。 -```r -posterior <- (likelihood * prior) / marginal_likelihood -posterior -``` +安全人员想知道的是,在机器测试结果为阳性的情况下,一个人携带爆炸物的可能性有多大。让我们看看如何使用贝叶斯分析来计算这个值。 -```r -## [1] 0.01 -``` +
-这一结果表明,袋中爆炸物的概率远高于之前的概率,但几乎不确定,再次强调了一个事实,即测试罕见事件几乎总是容易产生大量的假阳性。 +### 11.3.1 指定在先 -## 11.4 估计后验分布 +要使用贝叶斯定理,我们首先需要指定假设的先验概率。在这种情况下,我们不知道真实的数字,但我们可以假设它很小。根据 [FAA](https://www.faa.gov/air_traffic/by_the_numbers/media/Air_Traffic_by_the_Numbers_2018.pdf) 的数据,2017年美国共有971,595,898名航空乘客。假设这些旅行者中有一个在包里携带了爆炸物——这将给出9.71亿分之一的先验概率,这非常小!在9/11袭击后的几个月里,安全人员可能合理地持有更强的先验,所以让我们说他们的主观信念是每一百万个飞行员中有一个携带爆炸物。 -在前一个例子中,只有两种可能的结果——爆炸物要么在那里,要么不在那里——我们想知道给出数据后,哪种结果最有可能。但是,在其他情况下,我们希望使用贝叶斯估计来估计参数的数值。比如说,我们想知道一种新的止痛药的有效性;为了测试这一点,我们可以给一组病人服用这种药物,然后询问他们服用这种药物后疼痛是否有所改善。我们可以使用贝叶斯分析来估计药物对谁有效的比例。 +
-# +
-## 11.4.1 规定 +### 11.3.2 收集一些数据 -在这种情况下,我们没有任何关于药物有效性的先验信息,因此我们将使用 _ 均匀分布 _ 作为先验值,因为所有值在均匀分布下都是相同的。为了简化示例,我们将只查看 99 个可能有效性值的子集(从.01 到.99,步骤为.01)。因此,每个可能值的先验概率为 1/99。 +数据由爆炸物筛选试验的结果组成。假设安检人员用他们的测试仪器测试这个包3次,在3次测试中有3次给出了肯定的读数。 -# +
-## 11.4.2 收集一些数据 +
-我们需要一些数据来估计药物的效果。假设我们给 100 个人用药,结果如下: +### 11.3.3 计算可能性 -```r -# create a table with results -nResponders <- 64 -nTested <- 100 +我们想在假设包里有炸药的情况下计算数据的可能性。假设我们(从机器制造商那里)知道测试的灵敏度是0.99——也就是说,当一个设备存在时,它将在99%的时间内检测到它。为了在假设设备存在的情况下确定我们的数据的可能性,我们可以将每个测试视为成功概率为0.99的伯努利试验(即,结果为真或假的试验),我们可以使用二项式分布对其进行建模。 -drugDf <- tibble( - outcome = c("improved", "not improved"), - number = c(nResponders, nTested - nResponders) -) -pander(drugDf) -``` +
- -| 结果 | 数 | -| --- | --- | -| 改进 | 64 个 | -| 没有改善 | 36 岁 | +
-# +### 11.3.4 计算边际可能性 -## 11.4.3 计算可能性 +我们还需要知道数据的总体可能性,也就是说,从3次测试中找出3次阳性。计算边际可能性通常是贝叶斯分析最困难的方面之一,但对于我们的例子来说,这很简单,因为我们可以利用我们在第 [6.7](#bayestheorem) 节中介绍的二元结果的贝叶斯定理的特定形式: -我们可以使用 r 中的`dbinom()`函数计算有效性参数的任何特定值下的数据的可能性。在图[11.1](#fig:like2)中,您可以看到响应器数量对![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)几个不同值的可能性曲线。从这一点来看,我们观察到的数据在![](img/7ce19d5535bbf697999957a6831830c7.jpg)假设下的可能性相对较大,在![](img/52fe760c55a8b94c6345c1ba173d254d.jpg)假设下的可能性相对较小,在![](img/565101aba21de92eb8f6077836e5144e.jpg)假设下的可能性相对较小。贝叶斯推理的一个基本思想是,我们将试图找到我们感兴趣的参数的值,这使得数据最有可能,同时也考虑到我们的先验知识。 +【p】(e|e)e -![Likelihood of each possible number of responders under several different hypotheses (p(respond)=0.5 (red), 0.7 (green), 0.3 (black). Observed value shown in blue.](img/file67.png) +其中EE表示存在爆炸物,TT表示检测结果为阳性。 -图 11.1 几个不同假设下每个可能数量的应答者的可能性(P(应答)=0.5(红色),0.7(绿色),0.3(黑色)。观察值以蓝色显示。 +在这种情况下,边际可能性是存在或不存在爆炸物情况下数据可能性的加权平均值,乘以爆炸物存在的概率(即先验)。在这种情况下,假设我们(从制造商处)知道测试的特异性为0.99,这样在没有炸药的情况下出现阳性结果的可能性(P(T|)P(T | \ neg E) -# +
-## 11.4.4 计算边际可能性 +
-除了不同假设下数据的可能性外,我们还需要知道数据的总体可能性,并结合所有假设(即边际可能性)。这种边际可能性主要是重要的,因为它有助于确保后验值是真实概率。在这种情况下,我们使用一组离散的可能参数值使得计算边际似然变得容易,因为我们只需计算每个假设下每个参数值的似然,并将它们相加。 +### 11.3.5 计算后验 -```r -# compute marginal likelihood -likeDf <- - likeDf %>% - mutate(uniform_prior = array(1 / n())) +我们现在有了计算爆炸物存在的后验概率所需的所有部分,给出了3次试验中观察到的3个阳性结果。 +这一结果向我们表明,在这些阳性测试中,行李中爆炸物的后验概率(0.492)略低于50%,这再次强调了这样一个事实,即对罕见事件的测试几乎总是容易产生大量假阳性,即使特异性和敏感性非常高。 -# multiply each likelihood by prior and add them up -marginal_likelihood <- - sum( - dbinom( - x = nResponders, # the number who responded to the drug - size = 100, # the number tested - likeDf$presp # the likelihood of each response - ) * likeDf$uniform_prior - ) +贝叶斯分析的一个重要方面是它可以是连续的。一旦我们从一个分析中获得了后验概率,它就可以成为下一个分析的先验概率! -sprintf("marginal likelihood = %0.4f", marginal_likelihood) -``` +
-```r -## [1] "marginal likelihood = 0.0100" -``` +
-# - -## 11.4.5 计算后部 - -我们现在有了所有需要计算![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)所有可能值的后验概率分布的部分,如图[11.2](#fig:posteriorDist)所示。 - -```r -# Create data for use in figure -bayesDf <- - tibble( - steps = seq(from = 0.01, to = 0.99, by = 0.01) - ) %>% - mutate( - likelihoods = dbinom( - x = nResponders, - size = 100, - prob = steps - ), - priors = dunif(steps) / length(steps), - posteriors = (likelihoods * priors) / marginal_likelihood - ) -``` +
-![Posterior probability distribution plotted in blue against uniform prior distribution (dotted black line).](img/file68.png) +## 11.4 估计后验分布 -图 11.2 蓝色后验概率分布图与均匀前验概率分布图(黑色虚线)。 +在前面的例子中,只有两种可能的结果——爆炸物要么存在,要么不存在——我们想知道在给定数据的情况下,哪种结果最有可能出现。然而,在其他情况下,我们希望使用贝叶斯估计来估计参数的数值。比方说,我们想知道一种治疗疼痛的新药的有效性;为了测试这一点,我们可以给一组病人服用这种药物,然后问他们服药后疼痛是否得到改善。我们可以使用贝叶斯分析来估计该药物对使用这些数据的人群有效的比例。 -# +
-## 11.4.6 最大后验概率(MAP)估计 +### 11.4.1 指定在先 -根据我们的数据,我们希望获得样本的估计值![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)。一种方法是找到后验概率最高的![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)值,我们称之为后验概率(map)估计的 _ 最大值。我们可以从[11.2](#fig:posteriorDist)中的数据中找到:_ +在这种情况下,我们没有任何关于药物有效性的先验信息,所以我们将使用一个*均匀分布*作为我们的先验,因为所有值在均匀分布下的概率是相等的。为了简化示例,我们将只查看99个可能的有效性值的子集(从. 01到. 99,步长为. 01)。因此,每个可能值的先验概率为1/99。 -```r -# compute MAP estimate -MAP_estimate <- - bayesDf %>% - arrange(desc(posteriors)) %>% - slice(1) %>% - pull(steps) +
-sprintf("MAP estimate = %0.4f", MAP_estimate) -``` +
-```r -## [1] "MAP estimate = 0.6400" -``` +### 11.4.2 收集一些数据 -请注意,这只是样本中反应者的比例——这是因为之前的反应是一致的,因此没有影响我们的反应。 +我们需要一些数据来估计药物的效果。假设我们给100个人服用这种药物,我们发现64个人对这种药物有积极的反应。 -# +
-## 11.4.7 可信区间 +
-通常我们想知道的不仅仅是对后位的单一估计,而是一个我们确信后位下降的间隔。我们之前讨论过频繁推理背景下的置信区间概念,您可能还记得,置信区间的解释特别复杂。我们真正想要的是一个区间,在这个区间中,我们确信真正的参数会下降,而贝叶斯统计可以给我们一个这样的区间,我们称之为 _ 可信区间 _。 +### 11.4.3 计算可能性 -在某些情况下,可信区间可以根据已知的分布用数字 _ 计算,但从后验分布中采样,然后计算样本的分位数更常见。当我们没有一个简单的方法来用数字表示后验分布时,这是特别有用的,在实际的贝叶斯数据分析中经常是这样。_ +我们可以使用二项式密度函数计算任何特定有效性参数值下观察数据的似然性。在图 [11.2](#fig:like2) 中可以看到PresPondP _ { respond }。看这个,似乎我们观测到的数据在PresPond=0.7PresPond=0。 而且在PresPod=0.3 贝叶斯推理的一个基本思想是,我们应该提高我们对感兴趣的参数值的信念,与数据在这些值之下的可能性成比例,与我们在看到数据之前对参数值的信念(我们的先验知识)相平衡。 -我们将使用一个简单的算法从我们的后验分布中生成样本,该算法被称为[_ 拒绝抽样 _](https://am207.github.io/2017/wiki/rejectionsampling.html)。我们的想法是从一个均匀分布中选择 x 的随机值(在本例中为![](img/cb86d3a73cc424b0260d4020c4b40755.jpg))和 y 的随机值(在本例中为![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)的后验概率)。然后,只有在![](img/9c86ebacc1cbef2bb12c73aeb21d23e9.jpg)—这种情况下,如果随机选择的 y 值小于 y 的实际后验概率,我们才接受样本。图[11.3](#fig:rejectionSampling)显示了使用拒绝抽样的样本的直方图示例,以及使用 th 获得的 95%可信区间。是方法。 +![Likelihood of each possible number of responders under several different hypotheses (p(respond)=0.5 (solid), 0.7 (dotted), 0.3 (dashed). Observed value shown in the vertical line](../media/file61.png) -```r -# Compute credible intervals for example +图11.2:在几种不同的假设下,每个可能的响应者数量的可能性(p(响应)=0.5(实线),0.7(虚线),0.3(虚线)。观察值显示在垂直线中 -nsamples <- 100000 +
-# create random uniform variates for x and y -x <- runif(nsamples) -y <- runif(nsamples) +
-# create f(x) -fx <- dbinom(x = nResponders, size = 100, prob = x) +### 11.4.4 计算边际可能性 -# accept samples where y < f(x) -accept <- which(y < fx) -accepted_samples <- x[accept] +除了不同假设下数据的可能性,我们需要知道数据的总体可能性,结合所有假设(即边际可能性)。这个边际可能性非常重要,因为它有助于确保后验值是真实的概率。在这种情况下,我们使用一组离散的可能参数值可以很容易地计算边际可能性,因为我们可以计算每个假设下每个参数值的可能性,并将它们相加。 -credible_interval <- quantile(x = accepted_samples, probs = c(0.025, 0.975)) -pander(credible_interval) -``` +
- -| 2.5% | 98% | -| --- | --- | -| 0.54 分 | 0.72 分 | +
-![Rejection sampling example.The black line shows the density of all possible values of p(respond); the blue lines show the 2.5th and 97.5th percentiles of the distribution, which represent the 95 percent credible interval for the estimate of p(respond).](img/file69.png) +### 11.4.5 计算后验 -图 11.3 拒绝抽样示例。黑线表示 P(响应)所有可能值的密度;蓝线表示分布的 2.5%和 97.5%,表示 P(响应)估计的 95%可信区间。 +我们现在已经得到了计算所有可能值的后验概率分布所需的所有部分,这些值为prespondp _ { respond },如图 [11.3所示](#fig:posteriorDist) -这个可信区间的解释更接近于我们希望从置信区间(但不能)中得到的结果:它告诉我们,95%的概率![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)的值介于这两个值之间。重要的是,它表明我们对![](img/7dde591ac08edac3e5ac5c432367acde.jpg)有很高的信心,这意味着该药物似乎有积极的效果。 +![Posterior probability distribution for the observed data plotted in solid line against uniform prior distribution (dotted line). The maximum a posteriori (MAP) value is signified by the diamond symbol.](../media/file62.png) -# +图11.3:观察数据的后验概率分布,实线表示均匀先验分布(虚线)。最大后验概率(MAP)值由菱形符号表示。 -## 11.4.8 不同先验的影响 +
-在上一个例子中,我们在之前使用了 _ 平面,这意味着我们没有任何理由相信![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)的任何特定值或多或少是可能的。然而,假设我们是从一些以前的数据开始的:在之前的一项研究中,研究人员测试了 20 个人,发现其中 10 个人的反应是积极的。这将引导我们从先前的信念开始,即治疗对 50%的人有效果。我们可以做与上面相同的计算,但是使用我们以前的研究中的信息来通知我们之前的研究(参见图[11.4](#fig:posteriorDistPrior))。_ +
-```r -# compute likelihoods for data under all values of p(heads) -# using a flat or empirical prior. -# here we use the quantized values from .01 to .99 in steps of 0.01 +### 11.4.6 最大后验概率估计 -df <- - tibble( - steps = seq(from = 0.01, to = 0.99, by = 0.01) - ) %>% - mutate( - likelihoods = dbinom(nResponders, 100, steps), - priors_flat = dunif(steps) / sum(dunif(steps)), - priors_empirical = dbinom(10, 20, steps) / sum(dbinom(10, 20, steps)) - ) +给定我们的数据,我们希望获得我们的样本的估计值prespondp _ { respond }。一种方法是找出后验概率最高的prespondp _ { respond }的值,我们称之为我们可以从 [11.3](#fig:posteriorDist) 中的数据中找到这一点——这是在分布顶部用标记显示的值。请注意,结果(0.64)只是我们样本中应答者的比例——这是因为先验是一致的,因此不会影响我们的估计。 -marginal_likelihood_flat <- - sum(dbinom(nResponders, 100, df$steps) * df$priors_flat) +
-marginal_likelihood_empirical <- - sum(dbinom(nResponders, 100, df$steps) * df$priors_empirical) +
-df <- - df %>% - mutate( - posteriors_flat = - (likelihoods * priors_flat) / marginal_likelihood_flat, - posteriors_empirical = - (likelihoods * priors_empirical) / marginal_likelihood_empirical - ) -``` +### 11.4.7 可信区间 -![Effects of priors on the posterior distribution. The original posterior distribution based on a flat prior is plotted in blue. The prior based on the observation of 10 responders out of 20 people is plotted in the dotted black line, and the posterior using this prior is plotted in red.](img/file70.png) +通常我们不仅想知道后验概率的单个估计,还想知道后验概率下降的区间。我们以前在频繁推理的上下文中讨论过置信区间的概念,您可能还记得置信区间的解释特别复杂:它是一个在95%的时间里包含参数值的区间。我们真正想要的是一个区间,在这个区间内我们有信心真参数下降,贝叶斯统计可以给我们这样一个区间,我们称之为*可信区间*。 -图 11.4 先验对后验分布的影响。基于平坦先验的原始后验分布用蓝色绘制。根据对 20 人中 10 名反应者的观察,先验者被画成黑色虚线,后验者被画成红色。 +对这个可信区间的解释更接近于我们曾经希望从置信区间中得到的(但却无法得到):它告诉我们有95%的可能性是,prespondp _ { response }重要的是,在这种情况下它表明我们有很高的信心认为prespond>0p _ { 0 -注意,可能性和边际可能性并没有改变——只有先前的改变。手术前改变的效果是将后路拉近新手术前的质量,中心为 0.5。 +在某些情况下,可信区间可以基于已知的分布在数字上计算*,但更常见的是通过从后验分布中采样来生成可信区间,然后计算样本的分位数。当我们没有一种简单的方法来用数字表示后验分布时,这是特别有用的,这在真实的贝叶斯数据分析中是常见的情况。一种这样的方法(拒绝抽样)在本章末尾的附录中有更详细的解释。* -现在,让我们看看如果我们以一个更强大的先验信念来进行分析会发生什么。假设之前的研究没有观察到 20 人中有 10 人有反应,而是测试了 500 人,发现 250 人有反应。原则上,这应该给我们一个更强大的先验,正如我们在图[11.5](#fig:strongPrior)中所看到的,这就是发生的事情:先验的集中度要高出 0.5 左右,后验的集中度也更接近先验。一般的观点是贝叶斯推理将先验信息和似然信息结合起来,并对每一种推理的相对强度进行加权。 +
-```r -# compute likelihoods for data under all values of p(heads) using strong prior. + *
-df <- - df %>% - mutate( - priors_strong = dbinom(250, 500, steps) / sum(dbinom(250, 500, steps)) - ) +### 11.4.8 不同先验的影响 -marginal_likelihood_strong <- - sum(dbinom(nResponders, 100, df$steps) * df$priors_strong) +在前面的例子中我们使用了一个*平坦的先验*,这意味着我们没有任何理由相信prespondp _ { respond }然而,假设我们从一些以前的数据开始:在以前的研究中,研究人员测试了20个人,发现其中10个人做出了积极的回应。这将使我们从先前的信念开始,即这种治疗对50%的人有效。我们可以进行与上述相同的计算,但是使用来自我们先前研究的信息来通知我们的先验(参见图 [11.4](#fig:posteriorDistPrior) 中的子图A)。 -df <- - df %>% - mutate( - posteriors_strongprior = (likelihoods * priors_strong) / marginal_likelihood_strong - ) -``` +请注意,可能性和边际可能性没有改变,只有先验发生了变化。“先验”更改的效果是将“后验”拉近到新“先验”的质量,该质量以0.5为中心。 -![Effects of the strength of the prior on the posterior distribution. The blue line shows the posterior obtained using the prior based on 50 heads out of 100 people. The dotted black line shows the prior based on 250 heads out of 500 flips, and the red line shows the posterior based on that prior.](img/file71.png) +现在让我们看看,如果我们带着更强的先验信念进行分析,会发生什么。假设先前的研究不是观察20个人中的10个响应者,而是测试500个人,发现250个响应者。原则上,这应该给我们一个更强的先验,正如我们在图 [11.4](#fig:posteriorDistPrior) 的子图B中看到的,这就是所发生的:先验更加集中在0.5左右,后验也更加接近先验。一般的想法是,贝叶斯推理结合了先验和似然的信息,加权各自的相对强度。 -图 11.5:前向强度对后向分布的影响。蓝线显示了 100 人中 50 个人头使用先验图获得的后验图。虚线黑线显示的是 500 次翻转中 250 个头部的先验图像,红线显示的是基于先验图像的后验图像。 +这个例子也强调了贝叶斯分析的顺序性质——一个分析的后验可以成为下一个分析的先验。 -这个例子也突出了贝叶斯分析的顺序性——一个分析的后验可以成为下一个分析的前验。 +最后,重要的是要认识到,如果先验足够强,它们可以完全压倒数据。假设您有一个绝对的先验,即prespondp _ { respond }为0.8或更大,这样您就将所有其他值的先验概率设置为零。如果我们计算后验概率会发生什么? -最后,重要的是要认识到,如果先验足够强,它们可以完全压倒数据。假设你有一个绝对先验,它![](img/cb86d3a73cc424b0260d4020c4b40755.jpg)等于或大于 0.8,这样你就把所有其他值的先验概率设置为零。如果我们计算后验,会发生什么? +![A: Effects of priors on the posterior distribution. The original posterior distribution based on a flat prior is plotted in blue. The prior based on the observation of 10 responders out of 20 people is plotted in the dotted black line, and the posterior using this prior is plotted in red. B: Effects of the strength of the prior on the posterior distribution. The blue line shows the posterior obtained using the prior based on 50 heads out of 100 people. The dotted black line shows the prior based on 250 heads out of 500 flips, and the red line shows the posterior based on that prior. C: Effects of the strength of the prior on the posterior distribution. The blue line shows the posterior obtained using an absolute prior which states that p(respond) is 0.8 or greater. The prior is shown in the dotted black line.](../media/file63.png) -```r -# compute likelihoods for data under all values of p(respond) using absolute prior. -df <- - df %>% - mutate( - priors_absolute = array(data = 0, dim = length(steps)), - priors_absolute = if_else( - steps >= 0.8, - 1, priors_absolute - ), - priors_absolute = priors_absolute / sum(priors_absolute) - ) +图11.4: A:先验对后验分布的影响。基于平坦先验的原始后验分布以蓝色绘制。基于20个人中10个应答者的观察的先验以黑色虚线绘制,使用该先验的后验以红色绘制。b:先验强度对后验分布的影响。蓝线表示基于100个人中的50个人使用先验获得的后验概率。黑色虚线表示基于500次翻转中250次翻转的先验,红线表示基于该先验的后验。c:先验强度对后验分布的影响。蓝线显示使用绝对先验获得的后验概率,表明p(响应)为0.8或更大。先验以黑色虚线显示。 -marginal_likelihood_absolute <- - sum(dbinom(nResponders, 100, df$steps) * df$priors_absolute) +在图 [11.4](#fig:posteriorDistPrior) 的子图C中,我们看到,先验设置为零的任何值的后验密度为零——数据被绝对先验淹没。 -df <- - df %>% - mutate( - posteriors_absolute = - (likelihoods * priors_absolute) / marginal_likelihood_absolute - ) -``` +
*
-![Effects of the strength of the prior on the posterior distribution. The blue line shows the posterior obtained using an absolute prior which states that p(respond) is 0.8 or greater. The prior is shown in the dotted black line.](img/file72.png) + *
-图 11.6:前向强度对后向分布的影响。蓝线表示使用绝对先验得到的后验值,表示 P(响应)大于等于 0.8。前面的内容显示在黑色虚线中。 +## 11.5 选择优先 -在图[11.6](#fig:absolutePrior)中,我们发现,在先前设置为零的任何值的后面都存在零密度-数据被绝对先前覆盖。 +先验对所得推论的影响是贝叶斯统计中最有争议的方面。使用前的权利是什么?如果先验的选择决定了结果(即后验),你怎么能确定你的结果是可信的呢?这些都是难题,但我们不应该因为面临难题就退缩。正如我们之前讨论的,贝叶斯分析给我们提供了可解释的结果(可信区间等)。).仅此一点就应该激励我们认真思考这些问题,以便我们能够得出合理和可解释的结果。 -## 11.5 选择优先权 +有各种方式来选择一个人的先验,这(正如我们在上面看到的)会影响最终的推论。有时我们有一个非常具体的先验,比如我们期望硬币有50%的机会正面朝上,但在很多情况下,我们没有这么强的起点。*无信息先验*试图尽可能少地影响结果后验,正如我们在上面的均匀先验的例子中看到的。使用*弱信息先验*(或*默认先验*)也很常见,这对结果的影响非常小。例如,如果我们使用基于两次抛硬币中有一次正面朝上的二项式分布,则先验值将集中在0.5左右,但相当平坦,对后验值的影响很小。也可以使用基于科学文献或现有数据的先验知识,我们称之为*经验先验知识*。然而,总的来说,我们将坚持使用无信息/弱信息先验,因为它们最不担心影响我们的结果。 -先验对结果推断的影响是贝叶斯统计中最具争议的方面。有很多种方法可以选择一个人的先验,这(如我们上面所看到的)会影响结果的推论。_ 非形成性先验 _ 试图尽可能少地偏倚产生的后验,正如我们在上述均匀先验的例子中看到的。使用 _ 弱信息先验 _(或 _ 默认先验 _)也很常见,这只会对结果产生很小的偏差。例如,如果我们使用基于两个硬币翻转中一个头的二项式分布,那么前面的硬币将集中在 0.5 左右,但相当平坦,只稍微偏向后面的硬币。 +
-也可以根据科学文献或现有数据使用先验,我们称之为 _ 经验先验 _。然而,总的来说,我们将坚持使用不具形成性/信息不足的先验,因为它们对偏向我们的结果提出的关注最少。一般来说,使用多个合理先验来尝试任何贝叶斯分析都是一个好主意,并确保结果不会在基于先验的重要方面发生变化。 +
## 11.6 贝叶斯假设检验 -在学习了如何执行贝叶斯估计之后,我们现在转向使用贝叶斯方法进行假设检验。假设有两位政治家对公众是否支持死刑持不同的看法。史密斯参议员认为只有 40%的人支持死刑,而琼斯参议员认为 60%的人支持死刑。他们安排了一个民意测验来测试这一点,随机抽取 1000 人,询问他们是否支持死刑。调查结果显示,在接受调查的样本中,490 人支持死刑。基于这些数据,我们想知道:这些数据支持一位参议员对另一位参议员的主张吗?我们可以使用一个名为[贝叶斯因子](https://bayesfactor.blogspot.com/2014/02/the-bayesfactor-package-this-blog-is.html)的概念来测试这一点。 - -# - -## 11.6.1 贝叶斯因子 - -贝叶斯因子表征了两种不同假设下数据的相对似然性。定义如下: - -![](img/fcaf56f4409db92cbad0bc0b7a778d4a.jpg) - -对于两个假设![](img/31f022bcc9b435f1bfa0f95e0e2e285f.jpg)和![](img/2f753734e201315b67e17379e653910b.jpg)。对于我们的两位参议员,我们知道如何使用二项分布计算每个假设下数据的可能性。我们将把史密斯参议员作为分子,琼斯参议员作为分母,这样一个大于一的值将为史密斯参议员反映出更多的证据,而一个小于一的值将为琼斯参议员反映出更多的证据。 - -```r -# compute Bayes factor for Smith vs. Jones - -bf <- - dbinom( - x = 490, - size = 1000, - prob = 0.4 #Smith's hypothesis - ) / dbinom( - x = 490, - size = 1000, - prob = 0.6 #Jones' hypothesis - ) - -sprintf("Bayes factor = %0.2f", bf) -``` +已经学习了如何进行贝叶斯估计,我们现在转向使用贝叶斯方法进行假设检验。假设有两个政治家,他们对公众是否赞成征收额外的税来支持国家公园有不同的看法。参议员史密斯认为只有40%的人赞成这项税收,而参议员琼斯认为60%的人赞成。他们安排了一个民意测验来测试这一点,随机选择了1000个人来询问他们是否支持这样的税。结果是在民意测验样本中有490的人赞成征税。基于这些数据,我们想知道:这些数据是否支持一位参议员的观点,支持程度如何?我们可以使用一个称为[贝叶斯因子](https://bayesfactor.blogspot.com/2014/02/the-bayesfactor-package-this-blog-is.html)的概念来测试这一点,它通过比较每个假设对观察数据的预测程度来量化哪个假设更好。 -```r -## [1] "Bayes factor = 3325.26" -``` +
-这个数字提供了数据提供的关于两个假设的证据的度量——在本例中,它告诉我们数据支持史密斯参议员的力度是他们支持琼斯参议员的 3000 倍。 +### 11.6.1 贝叶斯因素 -# +贝叶斯因子描述了两种不同假设下数据的相对似然性。它被定义为: -## 11.6.2 统计假设的贝叶斯因子 +【B3】【b】【f】= -在前一个例子中,我们有来自每个参议员的具体预测,这些预测的可能性我们可以用二项分布来量化。然而,在实际数据分析中,我们通常必须处理参数的不确定性,这会使贝叶斯因子复杂化。然而,作为交换,我们获得了量化相对数量的证据的能力,支持无效假设与替代假设。 +对于两个假设H1H _ 1H2H _ 2。在我们两位参议员的例子中,我们知道如何使用二项式分布计算每个假设下数据的可能性;让我们暂时假设我们每个参议员正确的先验概率是相同的(PH1=PH2=0.5我们将把参议员史密斯放在分子中,将参议员琼斯放在分母中,这样,大于1的值将反映参议员史密斯的更多证据,小于1的值将反映参议员琼斯的更多证据。由此产生的贝叶斯因子(3325.26)提供了数据提供的关于两个假设的证据的度量-在这种情况下,它告诉我们数据支持参议员Smith的程度比支持参议员Jones的程度强3000多倍。 -假设我们是一名医学研究人员,正在进行糖尿病治疗的临床试验,我们希望知道与安慰剂相比,某种药物是否能降低血糖。我们招募了一组志愿者,将他们随机分配到药物组或安慰剂组,并在给药或安慰剂期间测量各组血红蛋白 A1c(血糖水平的一个标记)的变化。我们想知道的是:药物和安慰剂之间有区别吗? +
-首先,让我们生成一些数据,并使用空假设测试对其进行分析(参见图[11.7](#fig:bayesTesting))。 +
-```r -# create simulated data for drug trial example +### 11.6.2 统计假设的贝叶斯因子 -set.seed(123456) -nsubs <- 40 -effect_size <- 0.1 +在前面的例子中,我们有每个参议员的具体预测,我们可以使用二项式分布来量化其可能性。此外,我们两个假设的先验概率是相等的。然而,在实际数据分析中,我们通常必须处理参数的不确定性,这使贝叶斯因素变得复杂,因为我们需要计算边际似然性(即,所有可能的模型参数的似然性的综合平均值,按其先验概率加权)。然而,作为交换,我们获得了量化相对数量的证据的能力,这有利于零假设与替代假设。 -# randomize indiviuals to drug (1) or placebo (0) -drugDf <- - tibble( - group = as.integer(runif(nsubs) > 0.5) - ) %>% - mutate( - hbchange = rnorm(nsubs) - group * effect_size - ) -``` +假设我们是一名医学研究人员,正在进行一项治疗糖尿病的临床试验,我们希望知道与安慰剂相比,某种药物是否能降低血糖。我们招募了一组志愿者,并将他们随机分配到药物组或安慰剂组,并在服用药物或安慰剂期间,测量每组的血红蛋白A1C(血糖水平的标志)的变化。我们想知道的是:这种药物和安慰剂之间有区别吗? -![Box plots showing data for drug and placebo groups.](img/file73.png) +首先,让我们生成一些数据,并使用零假设检验对它们进行分析(见图 [11.5](#fig:bayesTesting) )。然后,让我们进行独立样本t检验,结果显示两组之间存在显著差异: -图 11.7 显示药物和安慰剂组数据的方框图。 +![Box plots showing data for drug and placebo groups.](../media/file64.png) -让我们进行一个独立的样本 t 检验,这表明两组之间存在显著差异: +图11.5:显示药物组和安慰剂组数据的箱线图。 -```r -# compute t-test for drug example -drugTT <- t.test(hbchange ~ group, alternative = "greater", data = drugDf) -print(drugTT) ``` - -```r ## ## Welch Two Sample t-test ## ## data: hbchange by group -## t = 2, df = 40, p-value = 0.03 -## alternative hypothesis: true difference in means is greater than 0 +## t = 2, df = 32, p-value = 0.02 +## alternative hypothesis: true difference in means between group 0 and group 1 is greater than 0 ## 95 percent confidence interval: -## 0.096 Inf +## 0.11 Inf ## sample estimates: ## mean in group 0 mean in group 1 -## 0.12 -0.48 +## -0.082 -0.650 ``` -这个测试告诉我们,两组之间存在显著的差异,但是它并不能量化证据支持无效假设和替代假设的强度。为了测量这一点,我们可以使用 r 中 bayes factor 包中的`ttestBF`函数计算贝叶斯因子: - -```r -# compute Bayes factor for drug data -bf_drug <- ttestBF( - formula = hbchange ~ group, data = drugDf, - nullInterval = c(0, Inf) -) +这个测试告诉我们两组之间有显著差异,但它没有量化证据支持无效假设和替代假设的力度。为了测量它,我们可以使用R: -bf_drug ``` - -```r ## Bayes factor analysis ## -------------- -## [1] Alt., r=0.707 0 -## 11.6.2.1 单侧试验 +#### 11.6.2.1片面测试 -我们通常对针对特定点值(例如,平均差=0)的零假设进行测试的兴趣低于针对定向零假设(例如,差小于或等于零)进行测试的兴趣。我们也可以使用`ttestBF`分析的结果进行定向(或 _ 单边 _)测试,因为它提供了两个 Bayes 因素:一个是平均差大于零的替代假设,另一个是平均差为 l 的替代假设。小于零。如果我们想评估正效应的相对证据,我们可以通过简单地将返回的两个 Bayes 因子除以函数来计算 Bayes 因子,比较正效应和负效应的相对证据: +我们通常对检验特定点值的零假设(例如,平均差= 0)不感兴趣,而对检验方向零假设(例如,差小于或等于0)不感兴趣。我们还可以使用来自`ttestBF`分析的结果执行定向(或*单侧*)测试,因为它提供了两个贝叶斯因子:一个用于平均差大于零的替代假设,一个用于平均差小于零的替代假设。如果我们想要评估正面效应的相对证据,我们可以通过简单地将函数返回的两个贝叶斯因子相除来计算比较正面效应和负面效应的相对证据的贝叶斯因子: -```r -bf_drug[1]/bf_drug[2] ``` - -```r ## Bayes factor analysis ## -------------- -## [1] Alt., r=0.707 0 -## +
-## 11.6.2.2 解释贝叶斯因子 +#### 11.6.2.2解读贝叶斯因素 -我们如何知道 2 或 20 的贝叶斯因子是好是坏?[Kass&Rafferty(1995)](https://www.andrew.cmu.edu/user/kk3n/simplicity/KassRaftery1995.pdf)提出了一个解释 Bayes 因子的一般准则: +我们如何知道2或20的贝叶斯因子是好是坏?由[卡斯&拉弗蒂(1995)](https://www.andrew.cmu.edu/user/kk3n/simplicity/KassRaftery1995.pdf) 提出了解释贝叶斯因子的一般准则: -| 高炉 | 证据的效力 | +| 男友 | 证据的力度 | | --- | --- | -| 1 到 3 | 只值得一提 | -| 3 至 20 | 积极的 | -| 20 至 150 | 坚强的 | -| &150 英镑 | 非常强壮 | +| 1比3 | 不值一提 | +| 3到20岁 | 积极的 | +| 20到150 | 强烈的 | +| >150 | 很强 | + +基于这一点,即使统计结果是重要的,支持替代假设和点零假设的证据数量是如此之少,以至于几乎不值得一提,而方向假设的证据却是相对有力的。 + +
-在此基础上,尽管统计结果是显著的,但支持替代假设与点零假设的证据数量足够弱,甚至不值得一提,而方向假设的证据是积极的,但不太强。 +
-# +
+ +### 11.6.3 评估无效假设的证据 + +因为贝叶斯因子是比较两个假设的证据,它还允许我们评估是否有支持零假设的证据,这是我们用标准零假设检验无法做到的(因为它从零假设为真的假设开始)。这对于确定一个不重要的结果是否真的提供了强有力的证据证明没有影响,或者只是反映了总体上的弱证据是非常有用的。 + +
+ +
+ +
+ +## 11.7 学习目标 + +阅读完本章后,应该能够: + +* 描述贝叶斯分析和零假设检验之间的主要区别 +* 描述并执行贝叶斯分析中的步骤 +* 描述不同前科的影响,以及选择前科的考虑因素 +* 描述置信区间和贝叶斯可信区间在解释上的区别 + +
+ +
+ +## 11.8 建议读数 + +* 《不会消亡的理论:贝氏法则如何破解英格玛密码,追捕俄罗斯潜艇,并从两个世纪的争议中脱颖而出》 +* *做贝叶斯数据分析:R的教程介绍*,作者John K. Kruschke + +
+ +
+ +## 11.9 附录: + +
+ +### 11.9.1 拒绝取样 + +我们将使用一种称为 [*拒绝抽样*](https://am207.github.io/2017/wiki/rejectionsampling.html) 的简单算法,从我们的后验分布中生成样本。其思路是我们选择一个随机值x(本例中为prespondp _ { respond })和一个随机值y(本例中 prespondp _ { respond })的后验概率各自来自一个均匀分布。 我们这时只接受样本如果y<f()y<——在这种情况下,如果随机选取的值? )。 + +| | x | +| --- | --- | +| 2.5% | Zero point five four | +| 97.5% | Zero point seven three | -## 11.6.3 评估无效假设的证据 +![Rejection sampling example.The black line shows the density of all possible values of p(respond); the blue lines show the 2.5th and 97.5th percentiles of the distribution, which represent the 95 percent credible interval for the estimate of p(respond).](../media/file65.png) -因为 Bayes 因子正在比较两个假设的证据,它还允许我们评估是否有支持空假设的证据,而标准的空假设测试无法做到这一点(因为它从空值为真的假设开始)。这对于确定一个非重大的结果是否真的提供了有力的证据证明没有效果,或者只是反映了总体上的薄弱证据是非常有用的。 +图11.6:剔除抽样示例。黑线表示p(响应)所有可能值的密度;蓝线显示分布的2.5和97.5个百分点,代表p(响应)估计值的95%可信区间。 -## 11.7 阅读建议 +
-* _ 永不消亡的理论:拜耳法则是如何破解谜代码,追捕俄罗斯潜艇,并在两个世纪的争论中取得胜利的(HTG1),作者是莎朗·伯茨·麦格雷恩(Sharon Bertsch McGrayne)。_ -* _ 做贝叶斯数据分析:约翰·K·克鲁施克的 R_ 教程介绍 \ No newline at end of file +
*
\ No newline at end of file diff --git a/docs/12.md b/docs/12.md index 3752c3436697753d888d708c9d328c957947c3e3..73412b3f5d348b88ff929bf2a23bf95026306eb7 100644 --- a/docs/12.md +++ b/docs/12.md @@ -1,332 +1,125 @@ -# 十二、分类关系建模 +
-到目前为止,我们已经讨论了统计建模和假设检验的一般概念,并将它们应用到一些简单的分析中。在本章中,我们将重点介绍 _ 分类 _ 关系的建模,通过建模,我们可以表示在名义(有时是序数)尺度上测量的变量之间的关系。这些数据通常用计数来表示;也就是说,对于变量的每个值(或多个变量的值的组合),有多少观测值取这个值?例如,当我们计算每个专业有多少人在我们班上时,我们将根据数据拟合一个分类模型。 +# 12 建模分类关系 -## 12.1 示例:糖果颜色 +到目前为止,我们已经讨论了统计建模和假设检验的一般概念,并将其应用于一些简单的分析;现在我们将转向如何在我们的数据中对特定类型的关系建模的问题。在本章中,我们将重点关注*分类*关系的建模,我们指的是定性测量的变量之间的关系。这些数据通常用计数来表示;也就是说,对于变量的每个值(或多个变量的值的组合),有多少个观测值取该值?例如,当我们计算我们班每个专业有多少人时,我们是在为数据拟合一个分类模型。 -假设我买了一袋 100 颗糖果,上面写着有 1/3 巧克力、1/3 甘草和 1/3 胶球。当我数包里的糖果时,我们得到以下数字: +
-```r -candyDf <- - tibble( - candyType = c("chocolate", "licorice", "gumball"), - count = c(30, 33, 37) - ) -pander(candyDf) -``` - - -| 糖果型 | 计数 | -| --- | --- | -| 巧克力 | 30 个 | -| 甘草 | 33 | -| 胶球 | 37 岁 | - -因为我更喜欢巧克力,而不是甘草或树胶球,我觉得有点被撕了。我想知道的是:如果每种糖果的真实概率是每种糖果平均 1/3 的比例,那么这种计数的可能性有多大? - -## 12.2 皮尔逊卡方检验 - -皮尔逊卡方检验为我们提供了一种方法来检验观察到的计数数据是否与定义零假设的某些特定预期值不同: - -![](img/a39dfdf63e525b1d15f99c58b2ae7a2e.jpg) - -在我们的糖果例子中,无效假设是每种糖果的比例是相等的。我们可以计算我们观察到的糖果计数的卡方统计,如下所示: - -```r -# compute chi-squared statistic - -nullExpectation <- c(1 / 3, 1 / 3, 1 / 3) * sum(candyDf$count) - -chisqVal <- - sum( - ((candyDf$count - nullExpectation)**2) / nullExpectation - ) -``` - -这个分析的卡方统计结果是 0.74,这本身是不可解释的,因为它取决于加在一起的不同值的数量。然而,我们可以利用这样一个事实:卡方统计量是根据零假设下的特定分布分布分布的,这就是所谓的 _ 卡方 _ 分布。这种分布被定义为一组标准正态随机变量的平方和;它有若干自由度,等于被加在一起的变量数。分布的形状取决于自由度的数量。图[12.1](#fig:chisqDist)显示了几种不同自由度的分布示例。 - -![Examples of the chi-squared distribution for various degrees of freedom.](img/file74.png) - -图 12.1 不同自由度的卡方分布示例。 - -让我们通过模拟来验证卡方分布是否准确地描述了一组标准正态随机变量的平方和。 - -```r -# simulate 50,000 sums of 8 standard normal random variables and compare -# to theoretical chi-squared distribution - -# create a matrix with 50k columns of 8 rows of squared normal random variables -d <- replicate(50000, rnorm(n = 8, mean = 0, sd = 1)**2) -# sum each column of 8 variables -dMean <- apply(d, 2, sum) - -# create a data frame of the theoretical chi-square distribution -# with 8 degrees of freedom -csDf <- - data.frame(x = seq(0.01, 30, 0.01)) %>% - mutate(chisq = dchisq(x, 8)) -``` - -图[12.2](#fig:chisqSim)显示,理论分布与重复将一组随机正态变量的平方相加的模拟结果非常吻合。 - -![Simulation of sum of squared random normal variables. The histogram is based on the sum of squares of 50,000 sets of 8 random normal variables; the blue line shows the values of the theoretical chi-squared distribution with 8 degrees of freedom.](img/file75.png) - -图 12.2 平方随机正态变量和的模拟。柱状图是基于 5 万组 8 个随机正态变量的平方和;蓝线显示了 8 个自由度下理论卡方分布的值。 - -对于糖果的例子,我们可以计算在所有糖果的相同频率的零假设下,我们观察到的卡方值为 0.74 的可能性。我们使用自由度等于 k-1(其中 k=类别数)的卡方分布,因为我们在计算平均值以生成预期值时失去了一个自由度。 - -```r -pval <- pchisq(chisqVal, df = 2, lower.tail = FALSE) #df = degrees of freedom -sprintf("p-value = %0.3f", pval) -``` - -```r -## [1] "p-value = 0.691" -``` +## 12.1 示例:糖果色 -这表明,观察到的糖果数量并不是特别令人惊讶的,基于印刷在糖果袋上的比例,我们不会拒绝等比的无效假设。 +比方说,我购买了一袋100颗糖果,标签上标明有1/3巧克力、1/3巧克力糖和1/3口香糖。当我数袋子里的糖果时,我们得到了下面的数字:30块巧克力,33块巧克力糖和37块口香糖球。因为比起甘草糖或口香糖,我更喜欢巧克力,所以我觉得有点被骗了,我想知道这是否只是一个偶然事件。要回答这个问题,我需要知道:如果每种糖果类型的真实概率是每种糖果的1/3的平均比例,那么计数结果是这样的可能性有多大? -## 12.3 应急表及双向试验 +
-我们经常使用卡方检验的另一种方法是询问两个分类变量是否相互关联。作为一个更现实的例子,让我们来考虑一个问题,当一个黑人司机被警察拦下时,他们是否比一个白人司机更有可能被搜查,斯坦福公开警务项目([https://open policing.stanford.edu/](https://openpolicing.stanford.edu/))研究了这个问题,并提供了我们可以用来分析问题的数据。我们将使用来自康涅狄格州的数据,因为它们相当小。首先清理这些数据,以删除所有不必要的数据(参见 code/process_ct_data.py)。 +
-```r -# load police stop data -stopData <- - read_csv("data/CT_data_cleaned.csv") %>% - rename(searched = search_conducted) -``` - -表示分类分析数据的标准方法是通过 _ 列联表 _,列联表显示了属于每个变量值的每个可能组合的观测值的数量或比例。 +## 12.2 皮尔森卡方检验 -让我们计算一下警察搜索数据的应急表: +Pearson卡方检验为我们提供了一种方法来检验一组观察计数是否不同于定义零假设的某些特定期望值: -```r -# compute and print two-way contingency table -summaryDf2way <- - stopData %>% - count(searched, driver_race) %>% - arrange(driver_race, searched) += 【I】) -summaryContingencyTable <- - summaryDf2way %>% - spread(driver_race, n) +在我们的糖果例子中,零假设是每种糖果的比例相等。为了计算卡方统计量,我们首先需要在零假设下得出我们的预期计数:因为零假设是它们都是相同的,那么这就是跨三个类别的总计数(如表 [12.1](#tab:candyDf) 所示)。然后,我们取每个计数与其在零假设下的期望值之间的差,将它们平方,除以零期望值,然后将它们相加,得到卡方统计量。 -pander(summaryContingencyTable) -``` - - -| 已搜索 | 黑色 | 白色 | -| --- | --- | --- | -| 错误的 | 36244 个 | 239241 个 | -| 真的 | 1219 年 | 3108 个 | - -使用比例而不是原始数字查看应急表也很有用,因为它们更容易在视觉上进行比较。 - -```r -# Compute and print contingency table using proportions -# rather than raw frequencies -summaryContingencyTableProportion <- - summaryContingencyTable %>% - mutate( - Black = Black / nrow(stopData), #count of Black individuals searched / total searched - White = White / nrow(stopData) - ) -pander(summaryContingencyTableProportion, round = 4) -``` +Table 12.1: Observed counts, expectations under the null hypothesis, and squared differences in the candy data +| 糖果型 | 数数 | null期望 | 平方差 | +| --- | --- | --- | --- | +| 巧克力 | Thirty | Thirty-three | Eleven point one one | +| 欧亚甘草 | Thirty-three | Thirty-three | Zero point one one | +| 球形口香糖 | Thirty-seven | Thirty-three | Thirteen point four four | - -| searched | Black | White | -| --- | --- | --- | -| FALSE | 0.1295 年 | 0.855 个 | -| TRUE | 0.0044 美元 | 0.0111 个 | +此分析的卡方统计结果为0.74,这本身是不可解释的,因为它取决于不同值相加的数量。但是,我们可以利用卡方统计量是根据零假设下的特定分布分布的这一事实,这种分布称为*卡方*分布。这个分布被定义为一组标准正态随机变量的平方和;它的自由度数量等于变量相加的数量。分布的形状取决于自由度的数量。图 [12.1](#fig:chisqDist) 的左图显示了几个不同自由度的分布示例。 -Pearson 卡方检验允许我们检验观察到的频率是否与预期频率不同,因此我们需要确定如果搜索和种族不相关,我们期望在每个细胞中出现的频率,我们可以定义为 _ 独立。_ 请记住,如果 x 和 y 是独立的,那么: +![Left: Examples of the chi-squared distribution for various degrees of freedom. Right: Simulation of sum of squared random normal variables. The histogram is based on the sum of squares of 50,000 sets of 8 random normal variables; the dotted line shows the values of the theoretical chi-squared distribution with 8 degrees of freedom.](../media/file66.png) -![](img/ae00b41c7d126a5646eb9e06bf53e695.jpg) +图12.1:左图:不同自由度的卡方分布示例。右图:随机正态变量平方和的模拟。直方图基于5万组8个随机正态变量的平方和;虚线显示了具有8个自由度的理论卡方分布的值。 -也就是说,零独立假设下的联合概率仅仅是每个变量的 _ 边际 _ 概率的乘积。边际概率只是每一个事件发生的概率,与其他事件无关。我们可以计算这些边际概率,然后将它们相乘,得到独立状态下的预期比例。 +让我们使用模拟来验证卡方分布是否准确描述了一组标准正态随机变量的平方和。为了做到这一点,我们反复抽取8个随机数的集合,并在平方每个值后将每个集合相加。图 [12.1](#fig:chisqDist) 的右图显示,理论分布与一组随机正态变量的平方反复相加的模拟结果非常匹配。 -| | 黑色 | 白色 | | -| --- | --- | --- | --- | -| 未搜索 | P(ns)*P(b) | P(ns)*P(w) | P(纳秒) | -| 已搜索 | P(S)*P(B) | P(S)*P(W) | P(S) | -| | P(B) | P(宽) | | - -我们可以使用称为“外积”的线性代数技巧(通过`outer()`函数)来轻松计算。 - -```r -# first, compute the marginal probabilities - -# probability of being each race -summaryDfRace <- - stopData %>% - count(driver_race) %>% #count the number of drivers of each race - mutate( - prop = n / sum(n) #compute the proportion of each race out of all drivers - ) - -# probability of being searched -summaryDfStop <- - stopData %>% - count(searched) %>% #count the number of searched vs. not searched - mutate( - prop = n / sum(n) # compute proportion of each outcome out all traffic stops - ) -``` +以糖果为例,在所有糖果频率相等的零假设下,我们可以计算观察到的卡方值为0.74的可能性。我们使用自由度等于k - 1(其中k =类别数)的卡方分布,因为我们在计算平均值以生成期望值时损失了一个自由度。得到的P值(P(卡方)> 0.74 = 0.691)表明,根据糖果袋上印刷的比例,观察到的糖果数量并不特别令人惊讶,我们不会拒绝相等比例的无效假设。 -```r -# second, multiply outer product by n (all stops) to compute expected frequencies -expected <- outer(summaryDfRace$prop, summaryDfStop$prop) * nrow(stopData) - -# create a data frame of expected frequencies for each race -expectedDf <- - data.frame(expected, driverRace = c("Black", "White")) %>% - rename( - NotSearched = X1, - Searched = X2 - ) - -# tidy the data frame -expectedDfTidy <- - gather(expectedDf, searched, n, -driverRace) %>% - arrange(driverRace, searched) -``` +
-```r -# third, add expected frequencies to the original summary table -# and fourth, compute the standardized squared difference between -# the observed and expected frequences +
-summaryDf2way <- - summaryDf2way %>% - mutate(expected = expectedDfTidy$n) +## 12.3 列联表和双向检验 -summaryDf2way <- - summaryDf2way %>% - mutate(stdSqDiff = (n - expected)**2 / expected) +我们经常使用卡方检验的另一种方法是询问两个分类变量是否彼此相关。作为一个更现实的例子,让我们来看看这样一个问题:与白人司机相比,黑人司机在被警察拦下时是否更容易被搜查。斯坦福开放警务项目([https://openpolicing.stanford.edu/](https://openpolicing.stanford.edu/))对此进行了研究,并提供了我们可以用来分析这个问题的数据。我们将使用康涅狄格州的数据,因为它们相当小,因此更容易分析。 -pander(summaryDf2way) -``` +表示分类分析数据的标准方式是通过*列联表*,该表显示了落入每个变量的每个可能值组合中的观察值的数量或比例。下表 [12.2](#tab:policeCT) 显示了警方搜索数据的列联表。使用比例而不是原始数字来查看列联表也是有用的,因为它们更容易直观地比较,所以我们在这里包括绝对数字和相对数字。 - | searched | 车手比赛 | N 号 | 预期 | 标准平方差 | +Table 12.2: Contingency table for police search data +| 搜查 | 黑色 | 白色的 | 黑色(相对) | 白色(相对) | | --- | --- | --- | --- | --- | -| FALSE | 黑色 | 36244 | 36883.67 个 | 2009 年 11 月 | -| TRUE | Black | 1219 | 579.33 条 | 第 706.31 条 | -| FALSE | 白色 | 239241 | 238601.3 条 | 1.71 条 | -| TRUE | White | 3108 | 3747.67 美元 | 109.18 条 | - -```r -# finally, compute chi-squared statistic by -# summing the standardized squared differences -chisq <- sum(summaryDf2way$stdSqDiff) -sprintf("Chi-squared value = %0.2f", chisq) -``` +| 错误的 | Thirty-six thousand two hundred and forty-four | Two hundred and thirty-nine thousand two hundred and forty-one | Zero point one three | Zero point eight six | +| 真实的 | One thousand two hundred and nineteen | Three thousand one hundred and eight | Zero | Zero point zero one | -```r -## [1] "Chi-squared value = 828.30" -``` +皮尔逊卡方检验允许我们测试观察到的频率是否与预期的频率不同,因此我们需要确定如果搜索和种族不相关,我们在每个细胞中预期的频率是多少——我们可以定义为*独立。*记住概率一章,如果X和Y是独立的,那么: -在计算了卡方统计之后,我们现在需要将其与卡方分布进行比较,以确定它与我们在无效假设下的期望相比有多极端。这种分布的自由度是![](img/206275e6a74b69f71d35c279b3e2d1c0.jpg)——因此,对于类似于这里的 2x2 表,![](img/ba8975aad6841ab43375c0463cf596e7.jpg)。这里的直觉是计算预期频率需要我们使用三个值:观察总数和两个变量的边际概率。因此,一旦计算出这些值,就只有一个数字可以自由变化,因此有一个自由度。鉴于此,我们可以计算卡方统计的 p 值: - -```r -pval <- pchisq(chisq, df = 1, lower.tail = FALSE) -sprintf("p-value = %e", pval) -``` - -```r -## [1] "p-value = 3.795669e-182" -``` +P(XY)=P()*P边际概率就是不管其他事件如何,每个事件发生的概率。我们可以计算出那些边际概率,然后把它们相乘得到独立情况下的期望比例。 -![](img/0a218a4dadec40dff9f8d2264a3c9d39.jpg)的 p 值非常小,表明如果种族和警察搜查之间真的没有关系,观察到的数据就不太可能,因此我们应该拒绝独立性的无效假设。 +| | 黑色 | 白色的 | | +| --- | --- | --- | --- | +| 未搜索 | 页:1 | 页:1 | 生理盐水 | +| 搜查 | P(S)*P(B) | P(S)*P(W) | P(S) | +| | P(B) | P(W) | | -我们还可以使用 r 中的`chisq.test()`函数轻松执行此测试: +然后,我们计算卡方统计,得出828.3。要计算p值,我们需要将其与零卡方分布进行比较,以确定我们的卡方值与零假设下的预期值相比有多极端。这种分布的自由度是df=(nRows1* (nColumns-df =(nRows-1)*(nColumns-1) df=(2—T78】1*(2 这里的直觉是,计算预期频率需要我们使用三个值:观察的总数和两个变量的边际概率。因此,一旦计算出这些值,只有一个数字可以自由变化,因此有一个自由度。考虑到这一点,我们可以计算卡方统计的p值,它几乎接近于零:3.79×101823.79 \次10^{-182}这表明,如果种族和警察搜查之间真的没有关系,观察到的数据将是极不可能的,因此我们应该拒绝独立性的零假设。 -```r -# first need to rearrange the data into a 2x2 table -summaryDf2wayTable <- - summaryDf2way %>% - dplyr::select(-expected, -stdSqDiff) %>% - spread(searched, n) %>% - dplyr::select(-driver_race) +我们还可以使用我们的统计软件轻松执行该测试: -chisqTestResult <- chisq.test(summaryDf2wayTable, 1, correct = FALSE) -chisqTestResult ``` - -```r ## ## Pearson's Chi-squared test ## -## data: summaryDf2wayTable -## X-squared = 800, df = 1, p-value <2e-16 +## data: summaryDf2wayTable and 1 +## X-squared = 828, df = 1, p-value <2e-16 ``` -## 12.4 标准化残差 +
-当我们发现卡方检验的显著效果时,这告诉我们,在无效假设下,数据是不可能的,但它并没有告诉我们 _ 数据有什么不同。为了更深入地了解数据与我们在零假设下预期的差异,我们可以检查模型的残差,该残差反映了数据(即观察到的频率)与每个单元中模型的偏差(即预期频率)。而不是查看原始残差(仅根据数据中观察的数量而变化),更常见的是查看其他 _ 标准化残差 _,其计算如下:_ +
-![](img/fc6dfc834654c8a6d8b2323c1bd6b480.jpg) +## 12.4 标准化残差 -其中![](img/31df9c730e19ca29b59dce64b99d98c1.jpg)和![](img/d8fdd0e28cfb03738fc5227885ee035a.jpg)分别是行和列的索引。我们可以为警察局的数据计算这些数据: +当我们发现卡方检验有显著影响时,这告诉我们数据在零假设下不太可能,但它没有告诉我们*数据如何*不同。为了更深入地了解数据与我们在零假设下的预期有何不同,我们可以检查模型的残差,它反映了每个像元中数据(即观察到的频率)与模型(即预期的频率)的偏差。与其查看原始残差(其变化仅取决于数据中的观测值数量),不如查看*标准化残差*(有时也称为*皮尔逊残差*),其计算方法如下: -```r -# compute standardized residuals -summaryDf2way <- - summaryDf2way %>% - mutate(stdRes = (n - expected)/sqrt(expected)) +standardIzedres bservedIje ectedIj标准化\残差_{ij} = \frac{observed_{ij} -预期 -pander(summaryDf2way) -``` +表 [12.3](#tab:stdRes) 显示了这些警察停车数据。这些标准化的残差可以解释为Z分数——在这种情况下,我们看到黑人个体的搜索次数大大高于基于独立性的预期,白人个体的搜索次数大大低于预期。这为我们提供了解释显著的卡方检验结果所需的背景。 - | 已搜索 | 车手比赛 | N 号 | 预期 | 标准平方差 | 标准普尔 | -| --- | --- | --- | --- | --- | --- | -| 错误的 | 黑色 | 36244 个 | 36883.67 个 | 2009 年 11 月 | -3.33 条 | -| 真的 | Black | 1219 年 | 579.33 条 | 第 706.31 条 | 26.58 美元 | -| FALSE | 白色 | 239241 个 | 238601.3 条 | 1.71 条 | 1.31 条 | -| TRUE | White | 3108 个 | 3747.67 美元 | 109.18 条 | -10.45 美元 | - -这些标准化的残差可以解释为 z 分数——在这种情况下,我们看到,基于独立性,对黑人个体的搜索次数大大高于预期,而对白人个体的搜索次数大大低于预期。这为我们提供了解释显著的卡方结果所需的上下文。 +Table 12.3: Summary of standardized residuals for police stop data +| 搜查 | 车手_比赛 | 标准化残差 | +| --- | --- | --- | +| 错误的 | 黑色 | -3.3 | +| 真实的 | 黑色 | Twenty-six point six | +| 错误的 | 白色的 | One point three | +| 真实的 | 白色的 | -10.4 | -## 12.5 优势比 +
-我们还可以使用前面介绍的优势比在应急表中表示不同结果的相对可能性,以便更好地了解影响的大小。首先,我们表示每一场比赛被阻止的几率: +
-![](img/e6acd79788a8dbe24193b20151db6a12.jpg) +## 12.5 优势比 -![](img/9aa2622d4176179ddfde24206732f146.jpg)![](img/be906c2bfa49b7ba6d831a99b9f47c71.jpg) +为了更好地理解影响的大小,我们还可以在列联表中用我们前面介绍的比值比来表示不同结果的相对可能性。首先,我们表示每场比赛被停止的几率,然后我们计算它们的比率: -根据这一数据集,优势比显示,黑人和白人驾驶员被搜索的几率要高出 2.59 倍。 + bla= 【s】【e】【a】【r】【c】 -## 12.6 贝叶斯系数 +【h】【我】=【s】【e】【a】【r】【c】 已搜索\ cap white } } = \ frac { 3108 } { 239241 } = 0.013【T1148】 【b】【l】【a】【c】【k】 -![](img/ed955fccd67d36cab5ec92cfcd8c1742.jpg) +根据这个数据集,赔率显示,黑人司机被搜索的几率是白人司机的2.59倍。 -我们在关于贝叶斯统计的前一章中讨论了贝叶斯因子——你可能记得它代表了两种假设下数据的可能性比:贝叶斯因子在某种程度上类似于 p 值和影响大小,也就是说它们的解释是某种意义上的。t 主观。他们的解释有各种各样的指导方针——这是来自 Kass 和 Raftery(1995)的一个: +
-| 高炉 | 解释 | -| --- | --- | -| 1 到 3 | 不值得一提 | -| 3 至 20 | 积极的 | -| 20 至 150 | 坚强的 | -| 150 及以上 | 非常强壮 | +
-我们可以使用 BayesFactor 包中的`contingencyTableBF()`函数计算警察搜索数据的 Bayes 因子: +## 12.6 贝叶斯因子 -```r -# compute Bayes factor -# using independent multinomial sampling plan in which row totals (driver race) -# are fixed +我们在前面关于贝叶斯统计的章节中讨论过贝叶斯因子——你可能记得它代表了两种假设下数据的可能性的比率:K=P(dAtA|H P(dAtA|H)= P(HA)P(H0|) K = \ frac { P(data | H _ A)} { P(data | H _ 0)} = \ frac { P(H _ A | data)* P(H _ A)} { P(H _ 0 | data)* P(H _ 0)}我们可以使用我们的统计软件计算警方搜索数据的贝叶斯因子: -bf <- - contingencyTableBF(as.matrix(summaryDf2wayTable), - sampleType = "indepMulti", - fixedMargin = "cols" -) -bf ``` - -```r ## Bayes factor analysis ## -------------- ## [1] Non-indep. (a=1) : 1.8e+142 ±0% @@ -337,73 +130,38 @@ bf ## Bayes factor type: BFcontingencyTable, independent multinomial ``` -这表明,在这个数据集中,支持驾驶员种族和警察搜索之间关系的证据非常有力。 - -## 12.7 超出 2 x 2 表的分类分析 +这表明,在这个数据集中,有利于司机种族和警察搜索之间关系的证据非常有力——1.8*101421.8 * 10^{142}大约是我们在统计中可以想象得到的接近无穷大。 -分类分析也可以应用于应急表,其中每个变量有两个以上的类别。 +
-例如,让我们看一下 nhanes 的数据,比较变量 _depressed_,它表示“参与者感到沮丧、沮丧或绝望的自我报告天数”。此变量编码为`None`、`Several`或`Most`。让我们测试这个变量是否与 _sleeptrouble_ 变量相关,这个变量报告个人是否向医生报告了睡眠问题。 +
-```r -# summarize depression as a function of sleep trouble -depressedSleepTrouble <- - NHANES_adult %>% - drop_na(SleepTrouble, Depressed) %>% - count(SleepTrouble, Depressed) %>% - arrange(SleepTrouble, Depressed) +## 12.7 超出2 X 2表格的分类分析 -depressedSleepTroubleTable <- - depressedSleepTrouble %>% - spread(SleepTrouble, n) %>% - rename( - NoSleepTrouble = No, - YesSleepTrouble = Yes - ) +类别分析也可以应用于列联表,其中每个变量有两个以上的类别。 -pander(depressedSleepTroubleTable) -``` +例如,让我们看看NHANES的数据,并比较变量*抑郁*,它表示“参与者自我报告的感到情绪低落、抑郁或绝望的天数”。该变量编码为`None`、`Several`或`Most`。让我们来测试这个变量是否与 *SleepTrouble* 变量相关,后者表示个人是否向医生报告了睡眠问题。 - -| 沮丧的 | 无阻力 | 是的,可重复 | +Table 12.4: Relationship between depression and sleep problems in the NHANES dataset +| 沮丧的 | 无睡眠问题 | 是睡眠问题 | | --- | --- | --- | -| 无 | 2614 个 | 676 个 | -| 几个 | 418 个 | 249 个 | -| 大多数 | 138 个 | 145 个 | +| 没有人 | Two thousand six hundred and fourteen | Six hundred and seventy-six | +| 几个 | Four hundred and eighteen | Two hundred and forty-nine | +| 最 | One hundred and thirty-eight | One hundred and forty-five | -简单地看一下这些数据,我们就可以知道这两个变量之间可能存在某种关系;特别是,尽管睡眠问题患者的总数比没有睡眠问题的患者要少很多,但对于大多数时间都处于抑郁状态的患者来说,睡眠问题患者的数量更大。比没有的要水。我们可以直接使用卡方检验对其进行量化;如果我们的数据框只包含两个变量,那么我们可以简单地将数据框作为参数提供给`chisq.test()`函数: +仅仅通过查看这些数据,我们就可以知道这两个变量之间很可能存在关系;值得注意的是,虽然有睡眠问题的总人数比没有睡眠问题的人少得多,但对于大多数时间都感到抑郁的人来说,有睡眠问题的人数比没有睡眠问题的人多。我们可以使用卡方检验直接对此进行量化: -```r -# need to remove the column with the label names -depressedSleepTroubleTable <- - depressedSleepTroubleTable %>% - dplyr::select(-Depressed) - -depressedSleepChisq <- chisq.test(depressedSleepTroubleTable) -depressedSleepChisq ``` - -```r ## ## Pearson's Chi-squared test ## ## data: depressedSleepTroubleTable -## X-squared = 200, df = 2, p-value <2e-16 +## X-squared = 191, df = 2, p-value <2e-16 ``` -这项测试表明,抑郁和睡眠问题之间有很强的关系。我们还可以计算贝叶斯因子来量化有利于替代假设的证据的强度: +这项测试表明,抑郁症和睡眠问题之间有很大的关系。我们还可以计算贝叶斯因子来量化支持替代假设的证据强度: -```r -# compute bayes factor, using a joint multinomial sampling plan -bf <- - contingencyTableBF( - as.matrix(depressedSleepTroubleTable), - sampleType = "jointMulti" - ) -bf ``` - -```r ## Bayes factor analysis ## -------------- ## [1] Non-indep. (a=1) : 1.8e+35 ±0% @@ -414,15 +172,42 @@ bf ## Bayes factor type: BFcontingencyTable, joint multinomial ``` -在这里,我们看到贝叶斯系数非常大,这表明支持抑郁和睡眠问题之间关系的证据非常有力。 +这里我们看到贝叶斯因子非常大(1.8*10351.8 * 10^{35}),这表明支持抑郁与睡眠问题之间存在联系的证据非常有力。 + +
-## 12.8 注意辛普森悖论 +
-上述应急表是对大量观察结果的总结,但有时会产生误导。让我们以棒球为例。下表显示了 1995-1997 年间德里克·杰特和大卫·贾斯汀的击球数据(击数/击数和平均击球数): +## 当心辛普森悖论 -| 玩家 | 1995 年 | | 1996 年 | | 1997 年 | | 合并 | | +上面给出的列联表代表了大量观察结果的汇总,但汇总有时会产生误导。让我们举一个棒球的例子。下表显示了德瑞克·基特和大卫·贾斯蒂斯在1995-1997年间的击球数据(击球次数和平均击球率): + + +| 运动员 | One thousand nine hundred and ninety-five | | One thousand nine hundred and ninety-six | | One thousand nine hundred and ninety-seven | | 结合的 | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| 基特 | 12 月 48 日 | 0.250 | 183/582 年 | .314 条 | 190/654 年 | .291 条 | 385/1284 年 | **.300** | -| 大卫·正义 | 104/411 号 | **.253** | 45/140 分 | **.321** | 163/495 年 | **.329** | 312/1046 年 | .298 条 | +| 德瑞克·基特 | 12/48 | .250 | 183/582 | .314 | 190/654 | .291 | 385/1284 | **.300** | +| 大卫·贾斯蒂斯 | 104/411 | **.253** | 45/140 | **.321** | 163/495 | **.329** | 312/1046 | .298 | + +如果你仔细观察,你会发现一些奇怪的事情正在发生:在每一年,正义的平均打击率都比杰特高,但当我们把三年的数据结合起来,杰特的平均打击率实际上比正义的高!这是一个被称为*辛普森悖论*的现象的例子,在这种现象中,出现在组合数据集中的模式可能不会出现在任何数据子集中。当另一个变量可能在不同的子集之间发生变化时,就会出现这种情况——在这种情况下,击球次数会随着年份的变化而变化,正义在1995年击球次数要多得多(当时击球率很低)。我们称之为*潜伏变量*,每当我们检查分类数据时,关注这些变量总是很重要的。 + +
+ +
+ +## 12.9 学习目标 + +* 描述分类数据的列联表的概念。 +* 描述关联的卡方检验的概念,并计算给定列联表的卡方检验。 +* 描述辛普森悖论以及为什么它对分类数据分析很重要。 + +
+ +
+ +## 12.10 附加读数 + +* 心理科学中的辛普森悖论:实用指南 + +
-如果你仔细观察,你会发现有些奇怪的事情正在发生:在每一年,正义比杰特有一个更高的击球平均值,但当我们结合所有三年的数据,杰特的平均值实际上高于正义!这是一个被称为 _ 辛普森悖论 _ 的现象的例子,在这种现象中,组合数据集中的模式可能不存在于数据的任何子集中。当有另一个变量可能在不同的子集之间发生变化时,就会发生这种情况——在这种情况下,AT 蝙蝠的数量随着时间的推移而变化,1995 年司法部的击球次数更多(击球平均数较低时)。我们把它称为一个潜伏变量(htg2),每当我们检查分类数据时,注意这些变量总是很重要的。 \ No newline at end of file +
\ No newline at end of file diff --git a/docs/13.md b/docs/13.md index ece2dc9afea21419cbab30b0143dbdc708c9e7b9..81d80b5492907d6377a43143a0b8ead2f52ce128 100644 --- a/docs/13.md +++ b/docs/13.md @@ -1,320 +1,234 @@ -# 十三、建模持续关系 +
-大多数人都熟悉 _ 相关 _ 的概念,在本章中,我们将对这个常用和误解的概念提供更正式的理解。 +# 13 建模连续关系 -## 13.1 一个例子:仇恨犯罪和收入不平等 +大多数人都很熟悉*相关性*这个概念,在本章中我们将为这个常用且容易被误解的概念提供一个更正式的理解。 -2017 年,网站 fivethirtyeight.com 发表了一篇题为“仇恨犯罪率上升与收入不平等(htg1)”的文章,讨论了 2016 年总统选举后仇恨犯罪率与收入不平等之间的关系。报道分析了来自联邦调查局和南方贫困法中心的仇恨犯罪数据,并据此报告: +
-> “我们发现,收入不平等是全美国调整人口仇恨犯罪和仇恨事件的最重要决定因素”。 +## 一个例子:仇恨犯罪和收入不平等 -此分析的数据包含在`fivethirtyeight`r 包中,这使得我们很容易访问它们。报道中的分析集中在收入不平等(定义为一个叫做 _ 基尼指数 _ 的量)与各州仇恨犯罪流行率之间的关系。 +2017年,Fivethirtyeight.com网站发表了一篇名为 [*的报道,仇恨犯罪的高发生率与收入不平等有关*](https://fivethirtyeight.com/features/higher-rates-of-hate-crimes-are-tied-to-income-inequality/) ,该报道讨论了2016年总统大选后仇恨犯罪的流行与收入不平等之间的关系。这篇报道报道了美国联邦调查局和南方贫困法律中心对仇恨犯罪数据的分析,在此基础上,他们报告说: -# +> “我们发现,收入不平等是美国各地人口调整后的仇恨犯罪和仇恨事件的最重要决定因素”。 -## 13.1.1 量化不平等:基尼指数 +用于这种分析的数据可以作为R统计软件的`fivethirtyeight`包的一部分获得,这使得我们很容易访问它们。报道中的分析集中在收入不平等(由一个叫做*基尼指数*的数量定义——更多细节见附录)和各州仇恨犯罪流行率之间的关系。 -在我们查看报道中的分析之前,首先要了解如何使用基尼指数来量化不平等。基尼指数通常用一条曲线来定义,这条曲线描述了收入与收入水平等于或小于该水平的人口比例之间的关系,称为 _ 洛伦兹曲线 _。然而,另一种更直观的思考方式是:收入之间的相对平均绝对差异除以二(摘自[https://en.wikipedia.org/wiki/gini_coefficient](https://en.wikipedia.org/wiki/Gini_coefficient)): +
-![](img/1283ad31298b6a845d0b54ea5116c77d.jpg) + -```r -hateCrimes <- - hate_crimes %>% - mutate(state_abb = state.abb[match(state,state.name)]) %>% - drop_na(avg_hatecrimes_per_100k_fbi) - -hateCrimes$state_abb[hateCrimes$state=="District of Columbia"]='DC' - -ggplot(hateCrimes,aes(gini_index,avg_hatecrimes_per_100k_fbi,label=state_abb)) + - geom_point() + - geom_text(aes(label=state_abb),hjust=0, vjust=0) + - theme(plot.title = element_text(size = 20, face = "bold")) + - xlab('Gini index') + - ylab('Avg hate crimes per 100K population (FBI)') + - theme(plot.margin = unit(c(1,1,1,1), "cm")) -``` - -![Plot of rates of hate crimes vs. Gini index.](img/file77.png) - -图 13.2 仇恨犯罪率与基尼指数的关系图。 - -从数据来看,这两个变量之间似乎有一个正的关系。我们如何量化这种关系? +
## 13.3 协方差和相关性 -量化两个变量之间关系的一种方法是 _ 协方差 _。记住,单个变量的方差计算如下: - -![](img/134e6de0f245b57b2f07e6a35831cb9e.jpg) +量化两个变量之间关系的一种方法是*协方差*。请记住,单个变量的方差计算为每个数据点与平均值之间的平均平方差: -这告诉我们每个观察值与平均值相差多远。协方差告诉我们两个不同的变量在观测值之间的偏差是否存在关系。定义如下: +【S5】= -![](img/b268259e45c69b4bfdac3da4ed6962b5.jpg) +这告诉我们每个观察值离平均值有多远,以平方单位表示。协方差告诉我们两个不同变量的偏差之间是否有关系。它被定义为: -当 x 和 y 都高度偏离平均值时,该值将远离零;如果它们在同一方向上偏离,则协方差为正,而如果它们在相反方向上偏离,则协方差为负。让我们先看一个玩具的例子。 +【c】【o】【v】【a】【r】【I】 )【我】 -```r -# create data for toy example of covariance -df <- - tibble(x = c(3, 5, 8, 10, 12)) %>% - mutate(y = x + round(rnorm(n = 5, mean = 0, sd = 2))) %>% - mutate( - y_dev = y - mean(y), - x_dev = x - mean(x) - ) %>% - mutate(crossproduct = y_dev * x_dev) - -pander(df) -``` +当单个数据点偏离其各自平均值的量相似时,该值将远离零;如果它们在相同的方向上偏离,那么协方差是正的,而如果它们在相反的方向上偏离,那么协方差是负的。我们先来看一个玩具的例子。表 [13.1](#tab:covTable) 中显示了这些数据,以及它们与平均值的个别偏差和它们的叉积。 - | X | 是 | Y 轴偏差 | X 轴偏差 | 叉乘 | +Table 13.1: Data for toy example of covariance +| x | y | y _开发 | x _开发 | 交叉乘积 | | --- | --- | --- | --- | --- | -| 三 | 1 个 | -6.6 条 | -4.6 节 | 30.36 天 | -| 5 个 | 3 | -4.6 | -第 2.6 条 | 11.96 年 | -| 8 个 | 8 | 0.4 倍 | 0.4 | 0.16 分 | -| 10 个 | 12 个 | 第 4.4 条 | 第 2.4 条 | 10.56 条 | -| 12 | 14 | 第 6.4 条 | 4.4 | 28.16 条 | +| three | five | -3.6 | -4.6 | Sixteen point five six | +| five | four | -4.6 | -2.6 | Eleven point nine six | +| eight | seven | -1.6 | Zero point four | -0.64 | +| Ten | Ten | One point four | Two point four | Three point three six | +| Twelve | Seventeen | Eight point four | Four point four | Thirty-six point nine six | -```r -# compute covariance +协方差就是叉积的平均值,在本例中为17.05。我们通常不使用协方差来描述变量之间的关系,因为它随数据的总体方差水平而变化。相反,我们通常会使用*相关系数*(通常被称为*皮尔逊相关*,以统计学家卡尔·皮尔逊命名)。相关性是通过用两个变量的标准偏差缩放协方差来计算的: -sprintf("sum of cross products = %.2f", sum(df$crossproduct)) -``` +r=covarIances n(xIx【‾(ysxsyr = \ frac {协方差} { s _ xs _ y } = \frac{\sum_{i=1}^n(x _ I-\ bar { x })(y _ I-\ bar { y })} {(n-n 相关系数是有用的,因为不管数据的性质如何,它都在-1和1之间变化。事实上,我们在前面讨论效应大小时已经讨论过相关系数。正如我们在前一章中看到的,相关性为1表示完全线性关系,相关性为-1表示完全负相关,相关性为零表示没有线性关系。 -```r -## [1] "sum of cross products = 81.20" -``` +
-```r -covXY <- sum(df$crossproduct) / (nrow(df) - 1) -sprintf("covariance: %.2f", covXY) -``` - -```r -## [1] "covariance: 20.30" -``` +### 13.3.1 相关性假设检验 -我们通常不使用协方差来描述变量之间的关系,因为它随数据的总体方差水平而变化。相反,我们通常使用 _ 相关系数 _(通常在统计学家 Karl Pearson 之后称为 _Pearson 相关 _)。通过用两个变量的标准偏差缩放协方差来计算相关性: +仇恨犯罪和收入不平等之间的相关值为0.42,这似乎表明两者之间有相当强的关系,但我们也可以想象,即使没有关系,这也可能是偶然发生的。我们可以使用一个简单的等式将相关值转换成一个 *t* 统计量,来测试相关性为零的零假设: -![](img/69240baf835a9a8f0311c744556cb85f.jpg) +【hoshi】【r】=【r】 -```r -# compute the correlation coefficient +在零假设下H0:r=0H _ 0:r = 0,这个统计量分布为一个带有N2的t分布我们可以用我们的统计软件来计算: -corXY <- sum(df$crossproduct) / ((nrow(df) - 1) * sd(df$x) * sd(df$y)) -sprintf("correlation coefficient = %.2f", corXY) ``` - -```r -## [1] "correlation coefficient = 0.99" +## +## Pearson's product-moment correlation +## +## data: hateCrimes$avg_hatecrimes_per_100k_fbi and hateCrimes$gini_index +## t = 3, df = 48, p-value = 0.002 +## alternative hypothesis: true correlation is not equal to 0 +## 95 percent confidence interval: +## 0.16 0.63 +## sample estimates: +## cor +## 0.42 ``` -我们还可以使用 r 中的`cor()`函数轻松计算相关值: +这一检验表明,在零假设下,r值达到或超过这一极值的可能性相当低,因此我们拒绝零假设r=0r = 0。注意,这个测试假设两个变量都是正态分布的。 -```r -# compute r using built-in function +我们也可以通过随机化来测试这一点,在随机化中,我们反复打乱其中一个变量的值并计算相关性,然后将我们观察到的相关值与该零分布进行比较,以确定我们观察到的值在零假设下的可能性有多大。结果如图 [13.2](#fig:shuffleCorr) 所示。使用随机化计算的p值相当类似于t检验给出的答案。 -c <- cor(df$x, df$y) -sprintf("correlation coefficient = %.2f", c) -``` +![Histogram of correlation values under the null hypothesis, obtained by shuffling values. Observed value is denoted by blue line.](../media/file68.png) -```r -## [1] "correlation coefficient = 0.99" -``` +图13.2:零假设下相关值的直方图,通过混排值获得。观察值用蓝线表示。 -相关系数是有用的,因为它在-1 和 1 之间变化,不管数据的性质如何-事实上,我们在讨论影响大小时已经讨论过相关系数。正如我们在上一章关于影响大小的内容中看到的,1 的相关性表示一个完美的线性关系,-1 的相关性表示一个完美的负关系,0 的相关性表示没有线性关系。 +我们也可以使用贝叶斯推理来估计相关性;请参阅附录了解更多相关信息。 -我们可以计算仇恨犯罪数据的相关系数: +
-```r -corGiniHC <- - cor( - hateCrimes$gini_index, - hateCrimes$avg_hatecrimes_per_100k_fbi - ) -sprintf('correlation coefficient = %.2f',corGiniHC) -``` +
-```r -## [1] "correlation coefficient = 0.42" -``` +### 13.3.2 稳健相关性 -# +您可能已经注意到图 [13.1](#fig:hateCrimeGini) 中有些奇怪的地方——其中一个数据点(哥伦比亚特区的数据点)似乎与其他数据点完全不同。我们称之为*异常值*,标准相关系数对异常值非常敏感。例如,在图 [13.3](#fig:outlierCorr) 中,我们可以看到一个孤立的数据点如何导致非常高的正相关值,即使其他数据点之间的实际关系完全是负的。 -## 13.3.1 相关性假设检验 +![An simulated example of the effects of outliers on correlation. Without the outlier the remainder of the datapoints have a perfect negative correlation, but the single outlier changes the correlation value to highly positive.](../media/file69.png) -相关值 0.42 似乎表明两个变量之间的关系相当强,但我们也可以想象,即使没有关系,这种情况也可能是偶然发生的。我们可以使用一个简单的公式来测试相关性为零的空假设,该公式允许我们将相关性值转换为 _t_ 统计: +图13.3:异常值对相关性影响的模拟示例。在没有异常值的情况下,其余的数据点具有完美的负相关,但是单个异常值将相关值变为高度正相关。 -![](img/8a7e337cf588bdff49bc2f192c7eac97.jpg) +解决异常值的一种方法是在排序后计算数据等级的相关性,而不是数据本身的相关性;这就是所谓的*斯皮尔曼相关*。图 [13.3](#fig:outlierCorr) 中的例子的皮尔逊相关性为0.83,而斯皮尔曼相关性为-0.45,表明等级相关性降低了异常值的影响,并反映了大多数数据点之间的负相关关系。 -在零假设![](img/fed676a693d5c98216a52108307827c6.jpg)下,该统计量以自由度为 t 分布。我们可以使用 r 中的`cor.test()`函数计算: +我们还可以计算仇恨犯罪数据的等级相关性: -```r -# perform correlation test on hate crime data -cor.test( - hateCrimes$avg_hatecrimes_per_100k_fbi, - hateCrimes$gini_index -) ``` - -```r ## -## Pearson's product-moment correlation +## Spearman's rank correlation rho ## ## data: hateCrimes$avg_hatecrimes_per_100k_fbi and hateCrimes$gini_index -## t = 3, df = 50, p-value = 0.002 -## alternative hypothesis: true correlation is not equal to 0 -## 95 percent confidence interval: -## 0.16 0.63 +## S = 20146, p-value = 0.8 +## alternative hypothesis: true rho is not equal to 0 ## sample estimates: -## cor +## rho +## 0.033 +``` +现在我们看到相关性不再显著(事实上非常接近于零),这表明由于异常值的影响,FiveThirtyEight博客帖子的说法可能是不正确的。 -## 0.42 -``` +
-这个测试表明,R 值的可能性很低,这个极限或更高,所以我们将拒绝![](img/6937cddf1a8c4f47df75a6977e1234d1.jpg)的无效假设。注意,这个测试假设两个变量都是正态分布的。 +
-我们也可以通过随机化来检验这一点,在随机化中,我们重复地改变其中一个变量的值并计算相关性,然后将我们观察到的相关性值与这个零分布进行比较,以确定我们观察到的值在零假设下的可能性。结果如图[13.3](#fig:shuffleCorr)所示。使用随机化计算的 p 值与 t 检验给出的答案相当相似。 +
-```r -# compute null distribution by shuffling order of variable values +## 13.4 关联和因果关系 -# create a function to compute the correlation on the shuffled values -shuffleCorr <- function(x, y) { - xShuffled <- sample(x) - return(cor(xShuffled, y)) -} +当我们说一件事*引起另一件事*时,我们指的是什么?在哲学中,关于因果关系的意义的讨论有很长的历史,但是在统计学中,我们通常认为因果关系的一种方式是根据实验控制。也就是说,如果我们认为因素X导致因素Y,那么操纵X的值也应该改变Y的值。 -# run this function 2500 times -shuffleDist <- - replicate( - 2500, - shuffleCorr(hateCrimes$avg_hatecrimes_per_100k_fbi, hateCrimes$gini_index) - ) -``` +在医学上,有一套被称为 [*科赫公设*](https://en.wikipedia.org/wiki/Koch%27s_postulates) 的想法,历史上曾被用于确定某一特定生物体是否会引发疾病。基本思想是,这种微生物应该存在于患病人群中,而不存在于未患病人群中——因此,消除这种微生物的治疗也应该消除疾病。此外,用这种有机体感染某人会导致他们感染这种疾病。这方面的一个例子见于Barry Marshall博士的工作,他假设胃溃疡是由细菌引起的(*幽门螺杆菌*)。为了证明这一点,他用这种细菌感染了自己,此后不久,他的胃部出现了严重的炎症。然后他用抗生素治疗自己,他的胃很快就恢复了。他后来因为这项工作获得了诺贝尔医学奖。 -![Histogram of correlation values under the null hypothesis, obtained by shuffling values. Observed value is denoted by blue line.](img/file78.png) +我们经常想测试因果假设,但我们不能实际做实验,因为这是不可能的(“人类碳排放和地球气候之间有什么关系?”)或者不道德(“严重虐待对孩子大脑发育有什么影响?”).然而,我们仍然可以收集可能与这些问题相关的数据。例如,我们可以从受虐待和未受虐待的儿童那里收集数据,然后我们可以询问他们的大脑发育是否不同。 -图 13.3 零假设下相关值的柱状图,通过改变值获得。观测值用蓝线表示。 +假设我们做了这样一个分析,我们发现受虐儿童的大脑发育比非受虐儿童差。这能证明虐待导致大脑发育不良吗?不。每当我们观察两个变量之间的统计关联时,这两个变量中的一个必然会导致另一个。然而,也有可能两个变量都受到第三个变量的影响;在这个例子中,虐待儿童可能与家庭压力有关,家庭压力也可能通过智力参与较少、食物压力或许多其他可能的途径导致大脑发育不良。关键是,两个变量之间的相关性通常会告诉我们,某个东西*可能*会导致其他东西,但它不会告诉我们什么会导致什么。 -# +
-## 13.3.2 稳健相关性 +### 13.4.1 因果图 -在图[13.2](#fig:hateCrimeGini)中,您可能注意到了一些有点奇怪的地方——其中一个数据点(哥伦比亚特区的数据点)似乎与其他数据点非常不同。我们称之为 _ 离群值 _,标准相关系数对离群值非常敏感。例如,在图[13.4](#fig:outlierCorr)中,我们可以看到一个孤立的数据点是如何导致非常高的正相关值的,即使其他数据点之间的实际关系是完全负的。 +描述变量之间因果关系的一个有用的方法是通过*因果图*,它将变量显示为圆圈,将变量之间的因果关系显示为箭头。例如,图 [13.4](#fig:simpleCausalGraph) 显示了学习时间和我们认为应该受其影响的两个变量之间的因果关系:考试成绩和考试结束时间。 -![An simulated example of the effects of outliers on correlation. Without the outlier the remainder of the datapoints have a perfect negative correlation, but the single outlier changes the correlation value to highly positive.](img/file79.png) +然而,实际上,对完成时间和成绩的影响并不直接归因于花在学习上的时间,而是学生通过学习获得的知识量。我们通常会说知识是一个*潜在的*变量——也就是说,我们不能直接测量它,但我们可以看到它反映在我们可以测量的变量中(如分数和完成时间)。图 [13.5](#fig:latentCausalGraph) 显示了这一点。 -图 13.4 异常值对相关性影响的模拟示例。如果没有离群值,其余数据点具有完全的负相关,但单个离群值将相关值更改为高度正相关。 +![A graph showing causal relationships between three variables: study time, exam grades, and exam finishing time. A green arrow represents a positive relationship (i.e. more study time causes exam grades to increase), and a red arrow represents a negative relationship (i.e. more study time causes faster completion of the exam).](../media/file70.png) -解决离群值问题的一种方法是在排序后,在数据的列组上计算相关性,而不是在数据本身上计算相关性;这被称为 _ 斯皮尔曼相关性 _。图[13.4](#fig:outlierCorr)中的 Pearson 相关性为 0.83,而 Spearman 相关性为-0.45,表明等级相关性降低了异常值的影响。 +图13.4:显示三个变量之间因果关系的图表:学习时间、考试成绩和考试结束时间。绿色箭头表示正相关关系(即更多的学习时间导致考试成绩提高),红色箭头表示负相关关系(即更多的学习时间导致更快完成考试)。 -我们可以使用`cor.test`函数计算仇恨犯罪数据的等级相关性: +![A graph showing the same causal relationships as above, but now also showing the latent variable (knowledge) using a square box.](../media/file71.png) -```r -corTestSpearman <- cor.test( hateCrimes$avg_hatecrimes_per_100k_fbi, - hateCrimes$gini_index, - method = "spearman") -corTestSpearman -``` +图13.5:一个图表显示了与上面相同的因果关系,但是现在也用一个方框显示了潜在变量(知识)。 -```r -## -## Spearman's rank correlation rho -## -## data: hateCrimes$avg_hatecrimes_per_100k_fbi and hateCrimes$gini_index -## S = 20000, p-value = 0.8 -## alternative hypothesis: true rho is not equal to 0 -## sample estimates: -## rho +这里我们可以说,知识*调节了*学习时间和成绩/完成时间之间的关系。这意味着,如果我们能够保持知识不变(例如,通过服用一种导致立即遗忘的药物),那么学习时间的长短就不再会对成绩和完成时间产生影响。 +请注意,如果我们简单地测量考试成绩和完成时间,我们通常会看到它们之间的负相关关系,因为通常最快完成考试的人会得到最高的成绩。然而,如果我们将这种相关性解释为因果关系,这将告诉我们,为了取得更好的成绩,我们实际上应该更快地完成考试!这个例子显示了从非实验数据中推断因果关系是多么棘手。 -## 0.033 -``` +在统计学和机器学习领域,有一个非常活跃的研究团体,目前正在研究我们何时以及如何从非实验数据中推断因果关系的问题。然而,这些方法通常需要强有力的假设,并且通常必须非常谨慎地使用。 -现在我们看到相关性不再显著(实际上接近于零),这表明 Fivethirtyeight 博客帖子的声明可能由于离群值的影响而不正确。 +
-# +
-## 13.3.3 贝叶斯相关分析 +
-我们也可以使用贝叶斯分析来分析五个第八个数据,这有两个优点。首先,它为我们提供了一个后验概率——在本例中,相关值超过零的概率。其次,贝叶斯估计将观察到的证据与 _ 先验 _ 相结合,从而使相关估计 _ 正则化,有效地将其拉向零。在这里,我们可以使用 bayesmed 包中的`jzs_cor`函数来计算它。_ +## 13.5 学习目标 -```r -bayesCor <- jzs_cor( - hateCrimes$avg_hatecrimes_per_100k_fbi, - hateCrimes$gini_index -) -``` +阅读本章后,您应该能够: -```r -## Compiling model graph -## Resolving undeclared variables -## Allocating nodes -## Graph information: -## Observed stochastic nodes: 50 -## Unobserved stochastic nodes: 4 -## Total graph size: 230 -## -## Initializing model -``` +* 描述相关系数的概念及其解释 +* 计算两个连续变量之间的相关性 +* 描述异常数据点的影响以及如何解决它们。 +* 描述可能导致观察到的相关性的潜在因果影响。 -```r -bayesCor -``` +
-```r -## $Correlation -## [1] 0.41 -## -## $BayesFactor -## [1] 11 -## -## $PosteriorProbability -## [1] 0.92 -``` +
+ +## 13.6 建议读数 -请注意,使用贝叶斯方法估计的相关性略小于使用标准相关系数估计的相关性,这是由于该估计基于证据和先验的组合,从而有效地将估计缩小到反渗透。但是,请注意,贝叶斯分析对异常值不具有鲁棒性,它仍然表示有相当强的证据表明相关性大于零。 +* 朱迪亚·珀尔的《为什么》一书——对因果推理背后思想的极好介绍。 -## 13.4 相关性和因果关系 +
-当我们说一件事导致另一件事时,我们的意思是什么?关于因果关系意义的讨论在哲学上有着悠久的历史,但在统计学上,我们通常认为因果关系的一种方式是实验控制。也就是说,如果我们认为因子 x 导致因子 y,那么操纵 x 的值也应该操纵 y 的值。 +
-在医学上,有一套被称为[_koch 的假设 _](https://en.wikipedia.org/wiki/Koch%27s_postulates)的观点,在历史上一直被用来确定一个特定的有机体是否引起疾病。基本思想是,有机体应该存在于有疾病的人身上,而不存在于没有疾病的人身上——因此,消除有机体的治疗也应该消除疾病。此外,感染有机体的人应使他们感染该疾病。巴里·马歇尔博士的工作就是一个例子,他假设胃溃疡是由一种细菌(_ 幽门螺杆菌 _)引起的。为了证明这一点,他感染了这种细菌,很快他的胃就出现了严重的炎症。然后他用抗生素治疗自己,他的胃很快就恢复了。他后来因这项工作获得了诺贝尔医学奖。 +## 13.7 附录: -通常我们想测试因果假设,但实际上我们不能做实验,因为这是不可能的(“人类碳排放与地球气候之间的关系是什么?”)或不道德(“严重虐待对儿童大脑发育有什么影响?”)但是,我们仍然可以收集与这些问题相关的数据。例如,在后一个例子中,我们可以潜在地从遭受虐待的儿童和未遭受虐待的儿童那里收集数据,然后我们可以询问他们的大脑发育是否不同。 +
-假设我们做了这样的分析,我们发现被虐待儿童的大脑发育比未被虐待儿童差。这是否表明虐待会导致大脑发育不良?不,当我们观察到两个变量之间的统计关联时,这两个变量中的一个肯定会引起另一个。然而,这两个变量都有可能受到第三个变量的影响;在这个例子中,虐待儿童可能与家庭压力有关,家庭压力也可能通过较少的智力投入、食物压力或许多其他可能导致大脑发育不良。大道。重点是,两个变量之间的相关性通常告诉我们有什么东西导致了其他事情,但它并不能告诉我们是什么导致了什么。正如统计学家 EdwardTufte 所说,“相关性并不意味着因果关系,但它是一个很好的提示。” +### 13.7.1 量化不平等:基尼指数 -# +在我们看这篇报道中的分析之前,首先有必要了解基尼指数是如何用来量化不平等的。基尼指数通常被定义为一条曲线,描述收入与收入等于或低于该水平的人口比例之间的关系,称为*洛伦茨曲线*。然而,另一种思考方式更直观:它是收入之间的相对平均绝对差除以二(来自https://en.wikipedia.org/wiki/Gini_coefficient[):](https://en.wikipedia.org/wiki/Gini_coefficient) -## 13.4.1 因果图 +【g】= 【I】【t】 -描述变量之间因果关系的一种有用方法是通过 _ 因果图 _,它将变量显示为圆,并将变量之间的因果关系显示为箭头。例如,图[13.5](#fig:simpleCausalGraph)显示了学习时间和我们认为应该受到影响的两个变量之间的因果关系:考试成绩和考试完成时间。 +![Lorenz curves for A) perfect equality, B) normally distributed income, and C) high inequality (equal income except for one very wealthy individual).](../media/file72.png) -图 13.5 显示三个变量之间因果关系的图表:学习时间、考试成绩和考试结束时间。绿色箭头表示一种积极的关系(即学习时间越长,考试成绩越高),红色箭头表示一种消极的关系(即学习时间越长,考试完成越快)。 +图13.6:洛伦茨曲线表示A)完全平等,B)正常分配的收入,以及C)高度不平等(除了一个非常富有的人之外,收入相等)。 -然而,事实上,对完成时间和成绩的影响并不是直接由花费在学习上的时间量造成的,而是由学生通过学习获得的知识量造成的。我们通常会说知识是一个潜在的(htg0)变量——也就是说,我们不能直接测量它,但是我们可以看到它反映在我们可以测量的变量中(比如成绩和完成时间)。图[13.6](#fig:latentCausalGraph)显示了这一点。 +图 [13.6](#fig:gini0) 显示了几种不同收入分布的洛伦兹曲线。左上图(A)显示了一个有10个人的例子,其中每个人的收入完全相同。两点之间的间隔长度相等,表明每个人在总收入中所占的份额相同。右上角的面板(B)显示了收入正态分布的示例。左下方的面板显示了一个高度不平等的示例;每个人都有相等的收入(40,000美元),除了一个人,他的收入为40,000,000美元。根据美国人口普查,2010年美国的基尼指数为0.469,大约介于正态分布和最大不平等之间。 -图 13.6 显示了与上述相同的因果关系的图,但现在也显示了使用平方框的潜在变量(知识)。 +
-在这里,我们可以说知识(htg0)介导了学习时间和成绩/完成时间之间的关系。这意味着,如果我们能够保持知识的恒定性(例如,通过服用一种能立即引起遗忘的药物),那么学习时间的长短将不再对成绩和完成时间产生影响。 +
-请注意,如果我们简单地测量考试成绩和完成时间,我们通常会看到他们之间的负面关系,因为完成考试最快的人通常得到最高的分数。然而,如果我们将这种相关性解释为因果关系,这将告诉我们,为了获得更好的成绩,我们实际上应该更快地完成考试!这个例子说明了从非实验数据推断因果关系是多么困难。 +### 13.7.2 贝叶斯相关分析 + +我们还可以使用贝叶斯分析来分析FiveThirtyEight数据,这有两个优点。首先,它为我们提供了后验概率——在这种情况下,是相关值超过零的概率。第二,贝叶斯估计将观察到的证据与之前的*相结合,这具有*正则化*相关性估计的效果,有效地将其拉向零。这里我们可以用r中的 *BayesFactor* 包来计算* + + *``` +## Bayes factor analysis +## -------------- +## [1] Alt., r=0.333 : 21 ±0% +## +## Against denominator: +## Null, rho = 0 +## --- +## Bayes factor type: BFcorrelation, Jeffreys-beta* +``` + +``` +## Summary of Posterior Distribution +## +## Parameter | Median | 95% CI | pd | ROPE | % in ROPE | BF | Prior +## ---------------------------------------------------------------------------------------------- +## rho | 0.38 | [0.13, 0.58] | 99.88% | [-0.05, 0.05] | 0% | 20.85 | Beta (3 +- 3) +``` -在统计学和机器学习领域,有一个非常活跃的研究团体,目前正在研究从非实验数据推断因果关系的时间和方式问题。然而,这些方法往往需要强有力的假设,通常必须谨慎使用。 +请注意,使用贝叶斯方法估计的相关性(0.38)略小于使用标准相关系数估计的相关性(0.42),这是因为估计是基于证据和先验的组合,这有效地将估计缩小到零。但是,请注意,贝叶斯分析对异常值并不稳健,它仍然表示有相当强的证据表明相关性大于零(贝叶斯因子大于20)。*
-## 13.5 阅读建议 +
-* [朱迪亚·珀尔的《为什么》(htg1)一书-对因果推理背后的思想的极好介绍。](http://bayes.cs.ucla.edu/WHY/) \ No newline at end of file +
\ No newline at end of file diff --git a/docs/14.md b/docs/14.md index f26029ad30ff96b8d2fa93dd4f9543e9de0fdfc6..78c132496ad5a52d2e107ec5a43f06c2a61002ab 100644 --- a/docs/14.md +++ b/docs/14.md @@ -1,255 +1,133 @@ -# 十四、一般线性模型 +
-请记住,在本书的早期,我们描述了统计的基本模型: +# 14 一般线性模型 -![](img/7fc06dc3f40e34d7510e8f585719ece6.jpg) +请记住,在本书的前面,我们描述了统计学的基本模型: -其中,我们的一般目标是找到最大限度地减少错误的模型,并受一些其他约束(例如保持模型相对简单,以便我们可以在特定数据集之外进行归纳)。在本章中,我们将重点介绍这种方法的特殊实现,即 _ 一般线性模型 _(或 GLM)。您已经在前面一章中看到了将模型拟合到数据的一般线性模型,我们在 nhanes 数据集中将高度建模为年龄的函数;在这里,我们将更全面地介绍 GLM 的概念及其许多用途。 +data=model+error在这一章中,我们将关注这种方法的一种特殊实现,它被称为*一般线性模型*(或GLM)。您已经在前面关于将模型与数据拟合的章节中看到了一般的线性模型,其中我们将NHANES数据集中的身高建模为年龄的函数;在这里,我们将对GLM的概念和它的许多用途提供一个更一般的介绍。统计中使用的几乎每一个模型都可以用一般线性模型或它的扩展来描述。 -在讨论一般线性模型之前,我们先定义两个对我们的讨论很重要的术语: +在我们讨论一般线性模型之前,让我们首先定义两个对我们的讨论很重要的术语: -* _ 因变量 _:这是我们的模型要解释的结果变量(通常称为 _y_) -* _ 自变量 _:这是一个我们希望用来解释因变量的变量(通常称为 _x_)。 +* *因变量*:这是我们的模型旨在解释的结果变量(通常称为 *Y* +* *自变量*:这是我们希望用来解释因变量的变量(通常称为 *X* )。 -可能有多个自变量,但对于本课程,我们的分析中只有一个因变量。 +可能有多个自变量,但在本课程中,我们将主要关注在我们的分析中只有一个因变量的情况。 -一般线性模型是由独立变量的 _ 线性组合 _ 组成的,每个独立变量乘以一个权重(通常称为希腊字母 beta-![](img/50705df736e9a7919e768cf8c4e4f794.jpg)),确定相对贡献。模型预测的自变量。 +一般线性模型是这样一种模型,其中因变量的模型由独立变量的*线性组合*组成,每个独立变量都乘以一个权重(通常称为希腊字母β-β),该权重确定独立变量对模型预测的相对贡献。 -作为一个例子,让我们为学习时间和考试成绩之间的关系生成一些模拟数据(参见图[14.1](#fig:StudytimeGrades))。 +![Relation between study time and grades](../media/file73.png) -```r -# create simulated data for example -set.seed(12345) +图14.1:学习时间和成绩之间的关系 -# the number of points that having a prior class increases grades -betas <- c(6, 5) +举个例子,我们来生成一些学习时间与考试成绩关系的模拟数据(见图 [14.1](#fig:StudytimeGrades) )。鉴于这些数据,我们可能希望参与统计的三项基本活动: -df <- - tibble( - studyTime = c(2, 3, 5, 6, 6, 8, 10, 12) / 3, - priorClass = c(0, 1, 1, 0, 1, 0, 1, 0) - ) %>% - mutate( - grade = - studyTime * betas[1] + - priorClass * betas[2] + - round(rnorm(8, mean = 70, sd = 5)) - ) -``` - -![Relation between study time and grades](img/file80.png) - -图 14.1 学习时间与成绩的关系 +* *描述*:成绩和学习时间的关系有多强? +* *决定*:成绩和学习时间有统计学意义上的关系吗? +* 预测:给定一段特定的学习时间,我们期望的分数是多少? -鉴于这些数据,我们可能希望参与三项基本统计活动: +在前一章中,我们学习了如何用相关系数来描述两个变量之间的关系。让我们使用我们统计软件来计算这些数据的关系,并测试相关性是否与零显著不同: -* _ 描述一下 _:年级和学习时间之间的关系有多强? -* _ 决定 _:年级和学习时间之间有统计学意义的关系吗? -* _ 预测 _:给定特定的学习时间,我们期望达到什么级别? - -在最后一章中,我们学习了如何使用相关系数来描述两个变量之间的关系,因此我们可以使用它来描述这里的关系,并测试相关性是否具有统计意义: - -```r -# compute correlation between grades and study time -corTestResult <- cor.test(df$grade, df$studyTime, alternative = "greater") -corTestResult ``` - -```r ## ## Pearson's product-moment correlation ## ## data: df$grade and df$studyTime -## t = 2, df = 6, p-value = 0.05 -## alternative hypothesis: true correlation is greater than 0 +## t = 2, df = 6, p-value = 0.09 +## alternative hypothesis: true correlation is not equal to 0 ## 95 percent confidence interval: -## 0.014 1.000 +## -0.13 0.93 ## sample estimates: ## cor ## 0.63 ``` -相关性很高,但由于样本量很小,几乎没有达到统计显著性。 - -## 14.1 线性回归 - -我们还可以使用一般线性模型来描述两个变量之间的关系,并决定这种关系是否具有统计意义;此外,该模型允许我们在给定独立变量的一些新值的情况下预测因变量的值。最重要的是,一般线性模型将允许我们建立包含多个独立变量的模型,而相关性只能告诉我们两个独立变量之间的关系。 - -我们为此使用的 GLM 的特定版本称为 _ 线性回归 _。术语 _ 回归 _ 是由 Francis Galton 创造的,他注意到,当他比较父母和他们的孩子的某些特征(如身高)时,极端父母的孩子(即非常高或非常矮的父母)通常比他们的父母更接近平均值。这是非常重要的一点,我们将回到下面。 - -线性回归模型的最简单版本(具有单个独立变量)可以表示为: - -![](img/b29bde499e20f8dc5fea373a03e1e864.jpg) - -![](img/35e5ca9978017f3c60bdb38fc9d6001f.jpg)值告诉我们,给定 x 中一个单位的变化,y 会发生多大的变化。截距![](img/c12eb7413067599b064fc399a191b496.jpg)是一个整体偏移量,它告诉我们当![](img/fd8e51c73f22442689e0a2862f0ebd49.jpg)时,y 会有多大的值;从我们早期的建模讨论中,您可能会记得,这对于建模过度非常重要。所有数据的大小,即使![](img/40779fc60a53ff2b70f832ec10cade09.jpg)从未真正达到零。误差项![](img/aeb302325ebc29add21f094ad38ad261.jpg)指的是模型一旦被拟合后所剩下的一切。如果我们想知道如何预测 y(我们称之为![](img/e6371f5e5f9dce74d256e6cd501a9bba.jpg)),那么我们可以删除错误项: - -![](img/3fa3edf43ee9dc24e91ea66923278e2a.jpg) - -图[14.2](#fig:LinearRegression)显示了应用于研究时间示例的此模型的示例。 - -![The linear regression solution for the study time data is shown in blue. The value of the intercept is equivalent to the predicted value of the y variable when the x variable is equal to zero; this is shown with a dotted black line. The value of beta is equal to the slope of the line -- that is, how much y changes for a unit change in x. This is shown schematically in the red dashed lines, which show the degree of increase in grade for a single unit increase in study time.](img/file81.png) - -图 14.2 研究时间数据的线性回归解用蓝色表示。当 x 变量等于零时,截距值等于 y 变量的预测值;这用虚线黑线表示。β值等于直线的斜率,也就是 x 单位变化的 y 变化量。红色虚线示意性地显示了这一点,它显示了学习时间单单位增加的年级增加程度。 - -# - -## 14.1.1 回归平均值 - -回归到平均值的概念 _ 是 Galton 对科学的重要贡献之一,在我们解释实验数据分析结果时,它仍然是理解的关键点。假设我们想研究阅读干预对贫困读者表现的影响。为了验证我们的假设,我们可能会去一所学校,在一些阅读测试中招募那些分布在 25%最底层的人,进行干预,然后检查他们的表现。假设干预实际上没有效果,每个人的阅读分数只是来自正态分布的独立样本。我们可以模拟:_ - -```r -# create simulated data for regression to the mean example - -nstudents <- 100 - -readingScores <- data.frame( - #random normal distribution of scores for test 1 - test1 = rnorm(n = nstudents, mean = 0, sd = 1) * 10 + 100, - #random normal distribution of scores for test 2 - test2 = rnorm(n = nstudents, mean = 0, sd = 1) * 10 + 100 -) - -# select the students in the bottom 25% on the first test -cutoff <- quantile(readingScores$test1, 0.25) - -readingScores <- - readingScores %>% - mutate(badTest1 = test1 < cutoff) %>% - dplyr::filter(badTest1 == TRUE) %>% - summarize( - test1mean = mean(test1), - test2mean = mean(test2) - ) %>% - pander() -``` - -如果我们看看第一次和第二次考试的平均成绩之间的差异,似乎干预对这些学生有了很大的帮助,因为他们的分数在考试中提高了超过 10 分!然而,我们知道事实上,学生根本没有进步,因为在这两种情况下,分数只是从随机正态分布中选择的。事实上,一些受试者在第一次考试中由于随机的机会得分很低。如果我们只根据第一次考试的分数来选择这些科目,那么在第二次考试中,即使没有培训的效果,他们也会回到整个组的平均水平。这就是为什么我们需要一个未经治疗的对照组(htg0)来解释随时间变化的读数;否则我们很可能会被回归到平均值所欺骗。 +相关性非常高,但是请注意,估计值的置信区间非常宽,几乎跨越了从0到1的整个范围,这在一定程度上是由于样本量小。 -# +
-## 14.1.2 估算线性回归参数 - -我们通常使用 _ 线性代数 _ 从数据中估计线性模型的参数,这是应用于向量和矩阵的代数形式。如果你不熟悉线性代数,不用担心——你实际上不需要在这里使用它,因为 R 将为我们做所有的工作。然而,线性代数中的一个简短的偏移可以提供一些关于模型参数如何在实践中估计的见解。 - -首先,让我们介绍向量和矩阵的概念;您已经在 r 的上下文中遇到过它们,但是我们将在这里回顾它们。矩阵是一组排列在一个正方形或矩形中的数字,这样就有一个或多个 _ 维度 _ 可供矩阵变化。通常在行中放置不同的观察单位(如人),在列中放置不同的变量。让我们从上面获取学习时间数据。我们可以将这些数字排列在一个矩阵中,这个矩阵有八行(每个学生一行)和两列(一列用于学习时间,一列用于成绩)。如果你在想“这听起来像 R 中的数据帧”,你是完全正确的!实际上,数据帧是矩阵的专用版本,我们可以使用`as.matrix()`函数将数据帧转换为矩阵。 - -```r -df_matrix <- - df %>% - dplyr::select(studyTime, grade) %>% - as.matrix() -``` - -我们可以将线性代数中的一般线性模型写成如下: - -![](img/b47f169cd7ef0c78414448bac001a0a6.jpg) - -这看起来非常像我们之前使用的方程,除了字母都是大写的,这意味着它们是向量这一事实。 - -我们知道等级数据进入 Y 矩阵,但是什么进入了![](img/1284cf6bcb6c2ffc47e2dd24cd1c51b8.jpg)矩阵?请记住,在我们最初讨论线性回归时,除了我们感兴趣的独立变量之外,我们还需要添加一个常量,因此我们的![](img/1284cf6bcb6c2ffc47e2dd24cd1c51b8.jpg)矩阵(我们称之为 _ 设计矩阵 _)需要包括两列:一列表示研究时间变量,另一列表示研究时间变量,以及 mn,每个个体具有相同的值(我们通常用所有值填充)。我们可以以图形方式查看结果设计矩阵(参见图[14.3](#fig:GLMmatrix))。 - -![A depiction of the linear model for the study time data in terms of matrix algebra.](img/file82.png) - -图 14.3 用矩阵代数描述研究时间数据的线性模型。 - -矩阵乘法规则告诉我们,矩阵的维数必须相互匹配;在这种情况下,设计矩阵的维数为 8(行)x 2(列),Y 变量的维数为 8 x 1。因此,![](img/50705df736e9a7919e768cf8c4e4f794.jpg)矩阵需要尺寸为 2 x 1,因为一个 8 x 2 矩阵乘以一个 2 x 1 矩阵会得到一个 8 x 1 矩阵(作为匹配的中间尺寸退出)。对![](img/50705df736e9a7919e768cf8c4e4f794.jpg)矩阵中的两个值的解释是,它们分别乘以研究时间和 1,得出每个个体的估计等级。我们还可以将线性模型视为每个个体的一组单独方程: +## 14.1 线性回归 -![](img/b34b40b6caa1a0ffa9a4666235a83889.jpg) +我们可以使用一般线性模型来描述两个变量之间的关系,并确定这种关系是否具有统计显著性;此外,该模型允许我们在给定自变量的一些新值的情况下预测因变量的值。最重要的是,一般线性模型将允许我们建立包含多个独立变量的模型,而相关系数只能描述两个独立变量之间的关系。 -![](img/308261cdf56789240c353a5d3f95ed6b.jpg) +我们为此使用的GLM的具体版本被称为*线性回归*。术语*回归*是由弗朗西斯·高尔顿创造的,他注意到当他比较父母和他们的孩子的某些特征(如身高)时,极端父母(即非常高或非常矮的父母)的孩子通常比他们的父母更接近平均值。这是一个极其重要的问题,我们将在下面讨论。 -…… +线性回归模型的最简单版本(具有单个独立变量)可以表示如下: -![](img/29d2e96363621fe2ede1c42ad83cf420.jpg) +y=x*βx+β0+ϵy = x * \ beta _ x+\ beta _ 0+\ epsilon截距β0\β_ 0是一个整体偏移量,它告诉我们当x=0x = 0【0】时,我们期望y具有什么值您可能还记得,在我们早期的建模讨论中,即使xx实际上从未达到零值,对数据的总体大小建模也很重要。误差术语ϵ指的是模型拟合后剩下的东西;我们通常将这些称为模型的*残差*。如果我们想知道如何预测y(我们称之为ŷ\ hat { y })在我们估计了\ beta的值之后,那么我们可以去掉误差项: -记住,我们的目标是根据已知的![](img/1284cf6bcb6c2ffc47e2dd24cd1c51b8.jpg)和![](img/fc057c91da229543772de0dd6f8326f5.jpg)值确定![](img/50705df736e9a7919e768cf8c4e4f794.jpg)的最佳拟合值。这样做的一个简单方法是使用简单代数来求解![](img/50705df736e9a7919e768cf8c4e4f794.jpg)——这里我们去掉了错误项![](img/b7c1163d9869c571f333a165377b5b8b.jpg),因为它超出了我们的控制范围: +ŷ=x*βx̂+β̂ 其中βx̂\ hat【beta _ x】是我们对斜率的估计而̂【T77】 图 14.2 显示了该模型应用于研究时间数据的示例。 -![](img/04570ce8176451aeb53b7ebf3565e8d1.jpg) +![The linear regression solution for the study time data is shown in the solid line The value of the intercept is equivalent to the predicted value of the y variable when the x variable is equal to zero; this is shown with a dotted line. The value of beta is equal to the slope of the line -- that is, how much y changes for a unit change in x. This is shown schematically in the dashed lines, which show the degree of increase in grade for a single unit increase in study time.](../media/file74.png) -这里的挑战是![](img/1284cf6bcb6c2ffc47e2dd24cd1c51b8.jpg)和![](img/50705df736e9a7919e768cf8c4e4f794.jpg)现在是矩阵,而不是单个数字——但是线性代数的规则告诉我们如何除以矩阵,这与乘以矩阵的 _ 逆 _ 相同(称为![](img/c8620eef44ebe4b3eec1c2f8f9494e04.jpg))。我们可以在 r 中这样做: +图14.2:研究时间数据的线性回归解以实线表示。当x变量等于零时,截距值相当于y变量的预测值;这用虚线表示。β的值等于直线的斜率,即x的单位变化对应y的变化量。虚线示意性地显示了这一点,它显示了学习时间每增加一个单位,成绩增加的程度。 -```r -# compute beta estimates using linear algebra +我们不会详细讨论最佳拟合斜率和截距实际上是如何从数据中估算出来的;如果你感兴趣,详情请见附录。 -Y <- as.matrix(df$grade) #create Y variable 8 x 1 matrix -X <- matrix(0, nrow = 8, ncol = 2) #create X variable 8 x 2 matrix -X[, 1] <- as.matrix(df$studyTime) #assign studyTime values to first column in X matrix -X[, 2] <- 1 #assign constant of 1 to second column in X matrix +
-# compute inverse of X using ginv() -# %*% is the R matrix multiplication operator +### 14.1.1 回归到平均值 -beta_hat <- ginv(X) %*% Y #multiple the inverse of X by Y -print(beta_hat) -``` +回归平均值的概念是高尔顿对科学的重要贡献之一,当我们解释实验数据分析的结果时,这仍然是一个需要理解的关键点。假设我们想研究阅读干预对不良读者表现的影响。为了检验我们的假设,我们可以去一所学校,招募那些在阅读测试中处于底层25%的人,进行干预,然后在干预后检查他们在测试中的表现。假设干预实际上没有效果,每个人的阅读分数只是正态分布中的独立样本。这个假设实验的计算机模拟结果在表 [14.1](#tab:readingTable) 中给出。 -```r -## [,1] -## [1,] 4.3 -## [2,] 76.2 -``` - -对于认真使用统计方法感兴趣的人,强烈鼓励他们花一些时间学习线性代数,因为它为几乎所有用于标准统计的工具提供了基础。 - -# +Table 14.1: Reading scores for Test 1 (which is lower, because it was the basis for selecting the students) and Test 2 (which is higher because it was not related to Test 1). +| | 得分 | +| --- | --- | +| 测试1 | Eighty-eight | +| 测试2 | One hundred and one | -## 14.1.3 相关性与回归的关系 +如果我们看看第一次和第二次测试的平均成绩之间的差异,干预似乎对这些学生有很大的帮助,因为他们的分数在测试中上升了10多分!然而,我们知道,事实上学生们根本没有提高,因为在这两种情况下,分数只是从随机正态分布中选取的。所发生的情况是,一些学生在第一次考试中分数很低,仅仅是因为随机的机会。如果我们只根据他们的第一次测试分数来选择这些受试者,即使没有训练的影响,他们在第二次测试中肯定会回到整个群体的平均值。这就是为什么我们总是需要一个未经处理的对照组*来解释由于干预导致的任何性能变化;否则我们很可能被回归均值所欺骗。此外,需要将参与者随机分配到对照组或治疗组,以便各组之间不会有任何系统差异(平均而言)。* -相关系数与回归系数有着密切的关系。记住,皮尔逊的相关系数是以协方差的比值和 x 和 y 的标准差的乘积来计算的: +
-![](img/1a40e134ca5017ebd57ad191de615055.jpg) +
-而回归β的计算公式为: +### 14.1.2 相关性和回归的关系 -![](img/4c487dbaeabd216eeb84dcbe7d07c11e.jpg) +相关系数和回归系数之间有密切的关系。请记住,皮尔逊相关系数的计算方法是协方差与x和y的标准差乘积之比: -基于这两个方程,我们可以得出![](img/b1840e5563155446c74b84de77d39e95.jpg)和![](img/9297928338bce8471b9d252e7666130f.jpg)之间的关系: +r̂=covarIance -![](img/e918d8831a6be4d574dbade04ed835ad.jpg) +【β】= -![](img/3d82f659f197f18edc09c90b5cb9b75f.jpg) +基于这两个方程,我们可以推导出r̂【hat { r }betâ\ hat { beta } -也就是说,回归斜率等于相关值乘以 y 和 x 的标准差之比。这告诉我们的一件事是,当 x 和 y 的标准差相同时(例如,当数据被转换为 z 分数时),则相关估计等于 l 回归斜率估计。 +【c】【o】【v】【a】【r】【I】 -# +βx̂=r̂*sx*s sx=r*ssx 回归斜率等于相关值乘以y和x的标准偏差之比。这告诉我们,当x和y的标准偏差相同时(例如,当数据已转换为Z分数时),则相关估计值等于回归斜率估计值。 -## 14.1.4 回归模型的标准误差 +
-如果我们想对回归参数估计进行推断,那么我们还需要对它们的可变性进行估计。为了计算这一点,我们首先需要计算模型的 _ 残差方差 _ 或 _ 误差方差 _——也就是说,依赖变量中有多少可变性不是由模型解释的。模型残差计算如下: +
-![](img/22245124dfea465fcb705facab8c0cc7.jpg) +### 14.1.3 回归模型的标准差 -然后我们计算 _ 平方误差之和(sse)_: +如果我们想对回归参数估计做出推论,那么我们也需要对它们的可变性进行估计。为了计算这一点,我们首先需要计算模型的*残差方差*或*误差方差*——也就是说,模型没有解释因变量的多少可变性。我们可以如下计算模型残差: -![](img/68eb8ec453beccc1646bd9ae8dab4d00.jpg) +resIdual=y-ŷ=y x̂+β【̂残差= y - \hat{y} = y - (x*) -由此我们计算出 _ 的均方误差 _: +sserror=I=1n 2=I=1nres -![](img/f77b0029466ea257be9b74e678f8bcac.jpg) +MSerror=Serr =1n(yIyÎ 这里的自由度(dfdf)是通过减去估计参数的数量确定的(本例中为2:βx 一旦有了均方误差,我们就可以计算模型的标准误差,如下所示: -其中,自由度(![](img/090c32ecb38669de7278e89a9c89f6dd.jpg))是通过从观测值(![](img/9341d9048ac485106d2b2ee8de14876f.jpg))中减去估计参数(本例中为 2 个参数:![](img/a24cc78aeb3b937206aafd8333f3ffa6.jpg)和![](img/c1901c25b94eab74ccb483851ca51d1c.jpg))来确定的。一旦我们有了均方误差,我们就可以将模型的标准误差计算为: +se【m】d【t】 -![](img/d7315e5f1f71bb622688a4b3242266f6.jpg) +为了得到特定回归参数估计值的标准误差,SEβXSE _【beta _ X】,我们需要通过X变量平方和的平方根来重新调整模型的标准误差: -为了得到特定回归参数估计的标准误差,![](img/18cf59e1b4531c3903c64b55748e818d.jpg),我们需要根据 x 变量平方和的平方根重新调整模型的标准误差: +set )【se _ { \ hat } _ beta } _ x = \ frac { t } -![](img/313f4b6e58099e17fa915d2ab167c320.jpg) +
-# +
-## 14.1.5 回归参数的统计检验 +### 14.1.4回归参数的统计测试 -一旦我们得到了参数估计值及其标准误差,我们就可以计算出一个 _t_ 统计数据,告诉我们观察到的参数估计值与无效假设下的某些预期值相比的可能性。在这种情况下,我们将根据无效假设(即![](img/c55ac7b4c829c515a6f42a84911924d0.jpg))进行测试: +一旦我们有了参数估计值和它们的标准误差,我们就可以计算一个 *t* 统计量来告诉我们观察到的参数估计值与零假设下的某个期望值相比的可能性。在这种情况下我们将针对无效的零假设进行检验(即【β】=0\β= 0): -![](img/76f67043f53c45bb919124f3d55a9f5c.jpg) +n p【T1129】=【T1130】【β】 -在 R 中,我们不需要手工计算这些值,因为它们由`lm()`函数自动返回给我们: +一般来说,我们会使用统计软件来计算这些,而不是手工计算。以下是R中线性模型函数的结果: -```r -summary(lmResult) ``` - -```r ## ## Call: ## lm(formula = grade ~ studyTime, data = df) @@ -270,53 +148,41 @@ summary(lmResult) ## F-statistic: 4.05 on 1 and 6 DF, p-value: 0.0907 ``` -在这种情况下,我们看到截距明显不同于零(这不是很有趣),并且研究时间对成绩的影响微乎其微。 - -# - -## 14.1.6 模型拟合优度的量化 - -有时量化模型在整体上与数据的匹配程度是很有用的,而做到这一点的一种方法是询问模型对数据中的可变性有多大的解释。这是使用一个名为![](img/37b3c24ff77b4f85a3ac7fc7c3c88062.jpg)的值(也称为 _ 确定系数 _)来量化的。如果只有一个 x 变量,那么只需将相关系数平方即可轻松计算: +在这种情况下,我们看到截距明显不同于零(这并不十分有趣),学习时间对成绩的影响是微小的(p = .09),与我们之前进行的相关性测试的p值相同。 -![](img/43d74b95a17ab36e90d8505e81f0c6d5.jpg) +
-对于我们的研究时间数据,![](img/37b3c24ff77b4f85a3ac7fc7c3c88062.jpg)=0.4,这意味着我们已经占了数据方差的 40%。 +
-更一般地说,我们可以将![](img/37b3c24ff77b4f85a3ac7fc7c3c88062.jpg)看作是模型所占数据中方差分数的度量,可以通过将方差分解为多个分量来计算: +### 14.1.5 量化模型的拟合优度 -![](img/afa9ea05b6b70a100f45f24d7f2bcb81.jpg) +有时,量化模型与数据的总体拟合程度是很有用的,一种方法是询问模型考虑了多少数据的可变性。这是用一个叫做r2r^2的值来量化的(也称为*决定系数*)。如果只有一个x变量,那么只需计算相关系数的平方就很容易计算出来: -其中![](img/faf0cc0e13c7f76010a24da69ea6a995.jpg)是数据的方差(![](img/c592009395c2de830215c39f7bb6f97b.jpg)),并且![](img/1b171d25e28c908c537ba164ef44508f.jpg)和![](img/cada9ea63611321a50f83f4ff82d1a6f.jpg)如本章前面所示进行计算。利用这个,我们可以计算确定系数为: +r2=r2r^2 = r^2就我们学习时间的例子来说,r2=时间 -![](img/e25d838dfd5d7f16b1d3f91a14d32481.jpg) +更一般地,我们可以将r2r^2视为模型所考虑的数据中方差分数的度量,可以通过将方差分解为多个分量来计算: -![](img/37b3c24ff77b4f85a3ac7fc7c3c88062.jpg)的一个小值告诉我们,即使模型拟合具有统计意义,它也只能解释数据中的少量信息。 +**这令人困惑,改为残差而不是误差** -## 14.2 安装更复杂的模型 +SSttal=SSmodSS _ { total } = SS _ { model }+SS _ { error }其中SStota 还有SSmodelSS _ { model }利用这一点,我们可以将决定系数计算为: -我们通常希望了解多个变量对某些特定结果的影响,以及它们如何相互关联。在我们学习时间的例子中,假设我们发现一些学生以前参加过关于这个主题的课程。如果我们绘制他们的成绩(见图[14.4](#fig:StudytimeGradesPrior)),我们可以看到,在相同的学习时间内,那些上过一门课的学生比没有上过课的学生表现要好得多。 +【r】= s【s】【e】【r】【r】【o】 -![The relationship between study time and grades, with color identifying whether each student had taken a previous course on the topic](img/file83.png) +r2r^2的一个小值告诉我们,即使模型拟合具有统计显著性,也可能只能解释数据中的少量信息。 -图 14.4 学习时间和成绩之间的关系,颜色标识每个学生是否上过该主题的课程 +
-我们希望建立一个考虑到这一点的统计模型,我们可以通过扩展我们在上面建立的模型来实现这一点: +
-![](img/7417fa3aaabd75734ceb8422a543f03a.jpg) +
-为了模拟每个人是否有以前的类,我们使用我们称之为 _ 的伪编码 _ 来创建一个新变量,该变量的值为 1 表示以前有过一个类,否则为零。这意味着,对于以前上过课的人,我们只需将![](img/9b1b472f5e50a814654d7e603d299740.jpg)的值添加到他们的预测值中——也就是说,使用虚拟编码![](img/9b1b472f5e50a814654d7e603d299740.jpg)只是反映了两组人之间的平均值差异。我们对![](img/1bd70013553271dc3b9b449a5eb5a8a9.jpg)的估计反映了所有数据点的回归斜率——我们假设回归斜率是相同的,不管以前是否有过类(见图[14.5](#fig:LinearRegressionByPriorClass))。 +## 14.2 拟合更复杂的模型 -```r -# perform linear regression for study time and prior class +我们通常希望了解多个变量对某些特定结果的影响,以及它们之间的关系。在我们的学习时间示例的上下文中,假设我们发现一些学生以前上过关于该主题的课程。如果我们绘制他们的成绩图(见图 [14.3](#fig:LinearRegressionByPriorClass) ),我们可以看到,在相同的学习时间内,那些上过课程的人比那些没有上过课程的人表现得好得多。我们希望建立一个考虑到这一点的统计模型,这可以通过扩展我们在上面建立的模型来实现: -# must change priorClass to a factor variable -df$priorClass <- as.factor(df$priorClass) +ŷ=β1̂*studyt prIorclass+β 我们使用我们称之为*的虚拟编码*,其中我们创建了一个新变量,该变量的值为1,表示以前有过一个类,否则为0。 这意味着对于之前有过该类的人,我们会简单地将β2̂\ hat【beta _ 2】的值加到我们为他们预测的值上——也就是说,使用哑编码β【t111我们对1̂\ hat { \ beta _ 1 }的估计反映了所有数据点的回归斜率——我们假设回归斜率是相同的,不管是否有人以前上过课(见图[14.3【t141](#fig:LinearRegressionByPriorClass) -lmResultTwoVars <- lm(grade ~ studyTime + priorClass, data = df) -summary(lmResultTwoVars) ``` - -```r ## ## Call: ## lm(formula = grade ~ studyTime + priorClass, data = df) @@ -338,27 +204,21 @@ summary(lmResultTwoVars) ## F-statistic: 10.2 on 2 and 5 DF, p-value: 0.0173 ``` -![The relation between study time and grade including prior experience as an additional component in the model. The blue line shows the slope relating grades to study time, and the black dotted line corresponds to the difference in means between the two groups.](img/file84.png) +![The relation between study time and grade including prior experience as an additional component in the model. The solid line relates study time to grades for students who have not had prior experience, and the dashed line relates grades to study time for students with prior experience. The dotted line corresponds to the difference in means between the two groups.](../media/file75.png) -图 14.5 研究时间和年级之间的关系,包括作为模型中额外组成部分的先前经验。蓝线表示与学习时间相关的坡度,黑色虚线表示两组之间平均值的差异。 +图14.3:学习时间和年级之间的关系,包括以前的经验作为模型中的一个附加部分。实线表示没有工作经验的学生的学习时间与成绩的关系,虚线表示有工作经验的学生的成绩与学习时间的关系。虚线对应于两组之间平均值的差异。 -## 14.3 变量之间的相互作用 +
-在前面的模型中,我们假设两组的学习时间对成绩的影响(即回归斜率)是相同的。但是,在某些情况下,我们可以想象一个变量的效果可能会因另一个变量的值而不同,我们称之为变量之间的 _ 交互 _。 +
-![The relationship between caffeine and public speaking](img/file85.png) +## 14.3 变量之间的相互作用 -图 14.6 咖啡因与公共演讲的关系 +在之前的模型中,我们假设两组的学习时间对成绩的影响(即回归斜率)是相同的。然而,在某些情况下,我们可能会想象一个变量的影响可能会因另一个变量的值而不同,我们称之为变量之间的*交互*。 -让我们用一个新的例子来问这个问题:咖啡因对公众演讲的影响是什么?首先,让我们生成一些数据并绘制它们。从图[14.6](#fig:CaffeineSpeaking)来看,似乎没有关系,我们可以通过对数据进行线性回归来确认: +让我们用一个新的例子来问这个问题:咖啡因对公众演讲有什么影响?首先让我们生成一些数据并绘制它们。查看图 [14.4](#fig:CaffeineAnxietyInteraction) 的面板A,似乎没有关系,我们可以通过对数据进行线性回归来确认: -```r -# perform linear regression with caffeine as independent variable -lmResultCaffeine <- lm(speaking ~ caffeine, data = df) -summary(lmResultCaffeine) ``` - -```r ## ## Call: ## lm(formula = speaking ~ caffeine, data = df) @@ -377,21 +237,11 @@ summary(lmResultCaffeine) ## F-statistic: 1.23 on 1 and 18 DF, p-value: 0.281 ``` -但现在让我们假设,我们发现研究表明焦虑和非焦虑的人对咖啡因的反应不同。首先,让我们分别为焦虑和非焦虑的人绘制数据。 +但是现在让我们说,我们发现研究表明焦虑和不焦虑的人对咖啡因有不同的反应。首先让我们分别绘制焦虑和非焦虑人群的数据。 -![The relationship between caffeine and public speaking, with anxiety represented by the color of the data points](img/file86.png) +正如我们在图 [14.4](#fig:CaffeineAnxietyInteraction) 的子图B中所看到的,似乎说话和咖啡因之间的关系对于两组来说是不同的,咖啡因改善了没有焦虑的人的表现,而降低了焦虑的人的表现。我们想创建一个统计模型来解决这个问题。首先,让我们看看如果我们把焦虑纳入模型会发生什么。 -图 14.7 咖啡因与公共演讲的关系,数据点颜色代表焦虑 - -从图[14.7](#fig:CaffeineSpeakingAnxiety)可以看出,两组人的言语和咖啡因之间的关系是不同的,咖啡因改善了无焦虑人群的表现,降低了焦虑人群的表现。我们想创建一个解决这个问题的统计模型。首先,让我们看看如果在模型中包含焦虑会发生什么。 - -```r -# compute linear regression adding anxiety to model -lmResultCafAnx <- lm(speaking ~ caffeine + anxiety, data = df) -summary(lmResultCafAnx) ``` - -```r ## ## Call: ## lm(formula = speaking ~ caffeine + anxiety, data = df) @@ -411,18 +261,9 @@ summary(lmResultCafAnx) ## F-statistic: 2.18 on 2 and 17 DF, p-value: 0.144 ``` -在这里,我们看到咖啡因和焦虑都没有明显的效果,这看起来有点令人困惑。问题是,这一模型试图符合两组人对咖啡因说话的同一条线。如果我们想使用单独的行来拟合它们,我们需要在模型中包含一个 _ 交互 _,这相当于为两个组中的每个组拟合不同的行;在 r 中,这由![](img/28ec51e742166ea3400be6e7343bbfa5.jpg)符号表示。 +这里我们看到咖啡因和焦虑都没有显著的影响,这可能看起来有点令人困惑。问题是这个模型试图对两组人使用相同的关于咖啡因的斜率。如果我们想要使用具有单独斜率的线来拟合它们,我们需要在模型中包括一个*交互*,这相当于为两组中的每一组拟合不同的线;这通常通过在模型中使用***符号来表示。 -```r -# compute linear regression including caffeine X anxiety interaction -lmResultInteraction <- lm( - speaking ~ caffeine + anxiety + caffeine * anxiety, - data = df -) -summary(lmResultInteraction) ``` - -```r ## ## Call: ## lm(formula = speaking ~ caffeine + anxiety + caffeine * anxiety, @@ -446,19 +287,17 @@ summary(lmResultInteraction) ## F-statistic: 30.8 on 3 and 16 DF, p-value: 7.01e-07 ``` -从这些结果中,我们发现咖啡因和焦虑都有显著的影响(我们称之为 _ 主要影响 _),以及咖啡因和焦虑之间的相互作用。图[14.8](#fig:CaffeineAnxietyInteraction)显示了每组的独立回归线。 +从这些结果中,我们看到咖啡因和焦虑都有显著的影响(我们称之为*主要影响*)以及咖啡因和焦虑之间的相互作用。图 [14.4](#fig:CaffeineAnxietyInteraction) 中的面板C显示了每组的独立回归线。 -![The relationship between public speaking and caffeine, including an interaction with anxiety. This results in two lines that separately model the slope for each group.](img/file87.png) +![A: The relationship between caffeine and public speaking. B: The relationship between caffeine and public speaking, with anxiety represented by the shape of the data points. C: The relationship between public speaking and caffeine, including an interaction with anxiety. This results in two lines that separately model the slope for each group (dashed for anxious, dotted for non-anxious).](../media/file76.png) -图 14.8 公众演讲和咖啡因之间的关系,包括与焦虑的互动。这将生成两条线,分别为每个组建模坡度。 +图14.4: A:咖啡因和公众演讲的关系。b:咖啡因和公开演讲之间的关系,数据点的形状代表焦虑。c:公众演讲和咖啡因之间的关系,包括与焦虑的相互作用。这导致两条线分别模拟每组的斜率(虚线代表焦虑,虚线代表非焦虑)。 -有时我们想比较两个不同模型的相对拟合,以确定哪个模型更好;我们将其称为 _ 模型比较 _。对于上面的模型,我们可以使用 r 中的`anova()`命令比较模型的拟合优度(有无交互作用): +需要注意的重要一点是,如果存在显著的交互作用,我们必须非常小心地解释显著的主效应,因为交互作用表明主效应根据另一个变量的值而不同,因此不容易解释。 -```r -anova(lmResultCafAnx, lmResultInteraction) -``` +有时我们希望比较两个不同模型的相对拟合度,以确定哪个是更好的模型;我们称之为*模型比较*。对于上面的模型,我们可以使用所谓的*方差分析*来比较有交互和没有交互的模型的拟合优度: -```r +``` ## Analysis of Variance Table ## ## Model 1: speaking ~ caffeine + anxiety @@ -470,196 +309,210 @@ anova(lmResultCafAnx, lmResultInteraction) ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` -这告诉我们,有很好的证据表明,比起没有交互作用的模型,更倾向于有交互作用的模型。在这种情况下,模型比较相对简单,因为这两个模型是 _ 嵌套的 _——其中一个模型是另一个模型的简化版本。与非嵌套模型的模型比较可能会变得更加复杂。 +这告诉我们,有充分的证据表明,有交互作用的模型比没有交互作用的模型更受欢迎。在这种情况下,模型比较相对简单,因为两个模型是*嵌套的*——其中一个模型是另一个模型的简化版本,这样简单模型中的所有变量都包含在更复杂的模型中。与非嵌套模型的模型比较会变得更加复杂。 + +
+ +
+ +## 14.4 超越线性预测和结果 + +值得注意的是,尽管它被称为一般的*线性*模型,但我们实际上可以使用相同的机制来模拟不遵循直线的效果(如曲线)。一般线性模型中的“线性”不是指响应的形状,而是指模型在其参数中是线性的,也就是说,模型中的预测器只与参数相乘,而不是像参数的幂那样的非线性关系。分析结果是二元的而不是连续的数据也很常见,就像我们在分类结果一章中看到的那样。有多种方法可以调整通用线性模型(称为*广义线性模型*)来进行这种分析。我们将在本书的后面探索这些模型。 + +
-## 14.4“预测”的真正含义是什么? +
-当我们谈论日常生活中的“预测”时,我们通常指的是在看到数据之前估计某个变量值的能力。然而,该术语通常在线性回归的背景下用于指模型与数据的拟合;估计值(![](img/e6371f5e5f9dce74d256e6cd501a9bba.jpg))有时被称为“预测”,独立变量被称为“预测”。这有一个不幸的含义,因为它意味着我们的模型还应该能够预测未来新数据点的值。实际上,模型与用于获取参数的数据集的匹配几乎总是优于模型与新数据集的匹配(copas 1983)。 +## 14.5 批评我们的模型并检查假设 -作为一个例子,让我们从 NHANES 中选取 48 名儿童为样本,并拟合一个体重回归模型,该模型包括几个回归因子(年龄、身高、看电视和使用电脑的时间以及家庭收入)及其相互作用。 +“垃圾进,垃圾出”这句话对统计学和其他领域一样适用。在统计模型的情况下,我们必须确保我们的模型被适当地指定,并且我们的数据适合于该模型。 + +当我们说模型是“适当指定的”时,我们的意思是我们已经在模型中包括了适当的一组独立变量。在图 [5.3](#fig:childHeightLine) 中,我们已经看到了错误指定模型的例子。请记住,我们看到了几个模型未能正确解释数据的情况,例如未能包括截距。当建立一个模型时,我们需要确保它包括所有适当的变量。 + +我们还需要担心我们的模型是否满足我们的统计方法的假设。使用一般线性模型时,我们做出的一个最重要的假设是残差(即模型预测和实际数据之间的差异)是正态分布的。失败的原因有很多,要么是因为模型没有正确指定,要么是因为我们正在建模的数据不合适。 + +我们可以用一个叫做 *Q-Q* (分位数-分位数)的图来看看我们的残差是否是正态分布的。你已经遇到了*分位数*——它们是截掉累积分布中特定比例的值。Q-Q图显示了两个分布的分位数;在这种情况下,我们将给出实际数据的分位数,与符合相同数据的正态分布的分位数进行比较。图 [14.5](#fig:qqplots) 显示了两个这样的Q-Q图的例子。左图显示了正态分布数据的Q-Q图,而右图显示了非正态数据的Q-Q图。右图中的数据点明显偏离直线,反映出它们不是正态分布的。 -```r -# create dataframe with children with complete data on all variables -NHANES_child <- - NHANES %>% - drop_na(Height, Weight, TVHrsDayChild, HHIncomeMid, CompHrsDayChild, Age) %>% - dplyr::filter(Age < 18) ``` +qq_df <- tibble(norm=rnorm(100), + unif=runif(100)) + +p1 <- ggplot(qq_df,aes(sample=norm)) + + geom_qq() + + geom_qq_line() + + ggtitle('Normal data') -```r -# create function to sample data and compute regression on in-sample and out-of-sample data - -get_sample_predictions <- function(sample_size, shuffle = FALSE) { - # generate a sample from NHANES - orig_sample <- - NHANES_child %>% - sample_n(sample_size) - - # if shuffle is turned on, then randomly shuffle the weight variable - if (shuffle) { - orig_sample$Weight <- sample(orig_sample$Weight) - } - # compute the regression line for Weight, as a function of several - # other variables (with all possible interactions between variables) - heightRegressOrig <- lm( - Weight ~ Height * TVHrsDayChild * CompHrsDayChild * HHIncomeMid * Age, - data = orig_sample - ) - # compute the predictions - pred_orig <- predict(heightRegressOrig) - - # create a new sample from the same population - new_sample <- - NHANES_child %>% - sample_n(sample_size) - - # use the model fom the original sample to predict the - # Weight values for the new sample - pred_new <- predict(heightRegressOrig, new_sample) - - # return r-squared and rmse for original and new data - return(c( - cor(pred_orig, orig_sample$Weight)**2, - cor(pred_new, new_sample$Weight)**2, - sqrt(mean((pred_orig - orig_sample$Weight)**2)), - sqrt(mean((pred_new - new_sample$Weight)**2)) - )) -} +p2 <- ggplot(qq_df,aes(sample=unif)) + + geom_qq() + + geom_qq_line()+ + ggtitle('Non-normal data') + +plot_grid(p1,p2) ``` -```r -# implement the function -sim_results <- - replicate(100, get_sample_predictions(sample_size = 48, shuffle = FALSE)) +![Q-Q plotsof normal (left) and non-normal (right) data. The line shows the point at which the x and y axes are equal.](../media/file77.png) -sim_results <- - t(sim_results) %>% - data.frame() +图14.5:正常(左)和非正常(右)数据的Q-Q图。这条线表示x轴和y轴相等的点。 -mean_rsquared <- - sim_results %>% - summarize( - rmse_original_data = mean(X3), - rmse_new_data = mean(X4) - ) +模型诊断将在后面的章节中更详细地探讨。 -pander(mean_rsquared) -``` +
+ +
+ +## 14.6 “预测”到底是什么意思? - -| RMSE_ 原始数据 | RMSE_ 新数据 | +当我们在日常生活中谈论“预测”时,我们通常指的是在看到数据之前估计某个变量的值的能力。然而,该术语通常在线性回归的上下文中使用,指模型与数据的拟合;估计值(ŷ\ hat { y })有时被称为“预测值”,自变量被称为“预测值”。这有一个不幸的含义,因为它意味着我们的模型还应该能够预测未来新数据点的值。实际上,模型与用于获取参数的数据集的拟合几乎总是比模型与新数据集的拟合好 ( [Copas 1983](ch020.xhtml#ref-copa:1983) ) 。 + +例如,让我们从NHANES的48名儿童中抽取一个样本,并拟合一个体重回归模型,该模型包括几个回归变量(年龄、身高、看电视和使用电脑的时间以及家庭收入)及其相互作用。 + +Table 14.2: Root mean squared error for model applied to original data and new data, and after shuffling the order of the y variable (in essence making the null hypothesis true) +| 数据类型 | RMSE(原始数据) | RMSE(新数据) | +| --- | --- | --- | +| 真实数据 | Three | Twenty-five | +| 混洗数据 | Seven point eight | Fifty-nine | + +在这里,我们看到,尽管模型对原始数据的拟合显示出非常好的拟合(每个人仅相差几公斤),但同一模型在预测从同一人群中取样的新儿童的体重值方面做得差得多(每个人相差超过25公斤)。发生这种情况是因为我们指定的模型非常复杂,因为它不仅包括每个单独的变量,还包括它们所有可能的组合(即它们的*相互作用*),导致模型有32个参数。由于这几乎与数据点(即48个孩子的身高)一样多,模型*对数据进行了过拟合*,就像我们在第 [5.4节](#overfitting)中的初始过拟合示例中的复杂多项式曲线一样。 + +查看过度拟合效果的另一种方法是,看看如果我们随机打乱权重变量的值会发生什么(如表中第二行所示)。随机改变数值应该使得不可能从其他变量预测重量,因为它们应该没有系统的关系。表中的结果表明,即使没有要建模的真实关系(因为混洗应该已经消除了关系),复杂模型在拟合数据的预测中仍然显示出非常低的误差,因为它符合特定数据集中的噪声。然而,当该模型应用于新的数据集时,我们看到误差要大得多,这是应该的。 + +
+ +### 14.6.1 交叉验证 + +一种被开发出来帮助解决过度拟合问题的方法被称为*交叉验证*。这种技术通常用于机器学习领域,它专注于构建能够很好地推广到新数据的模型,即使我们没有新的数据集来测试模型。交叉验证背后的想法是,我们反复拟合我们的模型,每次都留下一个数据子集,然后测试模型预测每个保留子集中的值的能力。 + +![A schematic of the cross-validation procedure.](../media/file78.png) + +图14.6:交叉验证程序的示意图。 + +让我们看看这对于我们的体重预测示例是如何工作的。在这种情况下,我们将执行12重交叉验证,这意味着我们将把数据分成12个子集,然后对模型进行12次拟合,在每种情况下忽略一个子集,然后测试模型准确预测这些保留数据点的因变量的值的能力。大多数统计软件都提供了对数据进行交叉验证的工具。使用此函数,我们可以对NHANES数据集中的100个样本进行交叉验证,并计算交叉验证的RMSE,以及原始数据和新数据集的RMSE,如上面计算的那样。 + +Table 14.3: R-squared from cross-validation and new data, showing that cross-validation provides a reasonable estimate of the model’s performance on new data. +| | r平方 | | --- | --- | -| 2.97 条 | 25.72 美元 | +| 原始资料 | Zero point nine five | +| 新日期 | Zero point three four | +| 交叉验证 | Zero point six | -在这里,我们看到,虽然模型与原始数据相匹配显示出非常好的拟合(每个人只减去几磅),但同一个模型在预测从同一人群中抽样的新儿童的体重值(每个人减去 25 磅以上)方面做得更差。这是因为我们指定的模型非常复杂,因为它不仅包括每个单独的变量,而且还包括它们的所有可能组合(即它们的 _ 交互 _),从而产生一个具有 32 个参数的模型。由于这几乎和数据点一样多的系数(即 48 个孩子的身高),模型 _ 对数据进行了过度拟合 _,就像我们在[5.4 节](#overfitting)中最初的过度拟合示例中的复杂多项式曲线一样。 +在这里,我们看到交叉验证为我们提供了一个预测准确性的估计,它更接近于我们在一个全新的数据集上看到的,而不是我们在原始数据集上看到的夸大的准确性-事实上,它甚至比一个新数据集的平均值更悲观,这可能是因为只有部分数据用于训练每个模型。 -另一种观察过度拟合效果的方法是观察如果我们随机地改变权重变量的值会发生什么。随机改变该值应该使得无法从其他变量预测权重,因为它们不应该有系统的关系。 +请注意,正确使用交叉验证是很棘手的,建议您在实际使用之前咨询专家。然而,这一部分已经向您展示了三件事情: -```r -print("using shuffled y variable to simulate null effect") -``` +* “预测”并不总是意味着你认为它意味着什么 +* 复杂的模型可能会非常严重地过度拟合数据,以至于即使没有真正的信号可以预测,人们也可以观察到看似良好的预测 +* 你应该非常怀疑关于预测准确性的声明,除非它们是用适当的方法完成的。 + +
+ +
+ +
+ +## 14.7 学习目标 + +阅读完本章后,您应该能够: + +* 描述线性回归的概念并将其应用于数据集 +* 描述一般线性模型的概念,并举例说明其应用 +* 描述交叉验证如何让我们评估模型对新数据的预测性能 + +
+ +
+ +## 14.8 建议读数 + +* [统计学习的要素:数据挖掘、推理和预测(第二版)](https://web.stanford.edu/~hastie/Papers/ESLII.pdf)——机器学习方法的“圣经”,网上免费提供。 + +
+ +
+ +## 14.9 附录 + +
+ +### 14.9.1 估计线性回归参数 + +我们通常使用*线性代数*从数据中估计线性模型的参数,线性代数是应用于向量和矩阵的代数形式。如果你不熟悉线性代数,不要担心——你实际上不需要在这里使用它,因为R会为我们做所有的工作。然而,线性代数中的一个简短的游览可以提供一些关于在实践中如何估计模型参数的见解。 + +首先,我们来介绍一下向量和矩阵的思想;您已经在R的上下文中遇到过它们,但是我们将在这里回顾它们。矩阵是一组排列成正方形或长方形的数字,这样矩阵就有一个或多个维度*和*变化。习惯上将不同的观察单位(比如人)放在行中,将不同的变量放在列中。让我们来看看上面的学习时间数据。我们可以将这些数字排列成一个矩阵,这个矩阵有八行(每个学生一行)和两列(一列表示学习时间,一列表示成绩)。如果您认为“这听起来像R中的数据帧”,那么您完全正确!事实上,数据帧是矩阵的一个特殊版本,我们可以使用`as.matrix()`函数将数据帧转换成矩阵。 -```r -## [1] "using shuffled y variable to simulate null effect" ``` +df <- + tibble( + studyTime = c(2, 3, 5, 6, 6, 8, 10, 12) / 3, + priorClass = c(0, 1, 1, 0, 1, 0, 1, 0) + ) %>% + mutate( + grade = + studyTime * betas[1] + + priorClass * betas[2] + + round(rnorm(8, mean = 70, sd = 5)) + ) -```r -sim_results <- - replicate(100, get_sample_predictions(sample_size = 48, shuffle = TRUE)) - -sim_results <- - t(sim_results) %>% - data.frame() - -mean_rsquared <- - sim_results %>% - summarize( - rmse_original_data = mean(X3), - rmse_new_data = mean(X4) - ) -pander(mean_rsquared) +df_matrix <- + df %>% + dplyr::select(studyTime, grade) %>% + as.matrix() ``` - -| rmse_original_data | rmse_new_data | -| --- | --- | -| 7.56 条 | 第 60.1 条 | +我们可以用线性代数写出一般的线性模型如下: -这向我们表明,即使没有真正的关系需要建模(因为疏解应该消除了关系),复杂的模型在预测中仍然显示非常低的错误,因为它适合特定数据集中的噪声。然而,当该模型应用于一个新的数据集时,我们会发现错误要大得多,这是应该的。 +Y=X*β+EY = X * \ beta+E这看起来很像我们之前用的方程,只不过字母都是大写的,这是为了表示它们是矢量的事实。 -# +我们知道成绩数据进入了Y矩阵,但是什么进入了XX矩阵呢?请记住,在我们对线性回归的最初讨论中,除了我们感兴趣的自变量之外,我们还需要添加一个常数,因此我们的XX矩阵(我们称之为*设计矩阵*)需要包括两列:一列代表研究时间变量,一列代表每个个体的相同值(我们通常用全1填充)。我们可以图形方式查看最终的设计矩阵(见图 [14.7](#fig:GLMmatrix) )。 -## 14.4.1 交叉验证 +![A depiction of the linear model for the study time data in terms of matrix algebra.](../media/file79.png) -为了帮助解决过拟合问题而开发的一种方法是 _ 交叉验证 _。这种技术通常用于机器学习领域,该领域的重点是构建能够很好地概括为新数据的模型,即使我们没有新的数据集来测试模型。交叉验证背后的想法是,我们反复地适应我们的模型,每次都会遗漏数据的一个子集,然后测试模型预测每个被保留的子集中值的能力。 +图14.7:用矩阵代数描述研究时间数据的线性模型。 -![A schematic of the cross-validation procedure.](img/file88.png) +矩阵乘法的规则告诉我们,矩阵的维数必须彼此匹配;在这种情况下,设计矩阵的尺寸为8(行)X 2(列),Y变量的尺寸为8 X 1。因此,β矩阵需要具有2×1的维度,因为8×2矩阵乘以2×1矩阵得到8×1矩阵(匹配的中间维度被删除)。对β矩阵中的两个值的解释是,它们是分别乘以学习时间和1以获得每个个体的估计分数的值。我们也可以将线性模型视为每个个体的一组独立方程: -图 14.9 交叉验证程序示意图。 += -让我们看看这对于我们的重量预测示例是如何工作的。在这种情况下,我们将执行 12 倍交叉验证,这意味着我们将把数据分成 12 个子集,然后将模型拟合 12 次,在每种情况下,去掉其中一个子集,然后测试模型准确预测所持有的因变量值的能力。-找出数据点。R 中的`caret`包使我们能够轻松地跨数据集运行交叉验证: += -```r -# create a function to run cross-validation -# returns the r-squared for the out-of-sample prediction +… -compute_cv <- function(d, nfolds = 12) { - # based on https://quantdev.ssri.psu.edu/tutorials/cross-validation-tutorial - train_ctrl <- trainControl(method = "cv", number = nfolds) - model_caret <- train( - Weight ~ Height * TVHrsDayChild * CompHrsDayChild * HHIncomeMid * Age, - data = d, - trControl = train_ctrl, # folds - method = "lm" - ) # specifying regression model += - r2_cv <- mean(model_caret$resample$Rsquared) - rmse_cv <- mean(model_caret$resample$RMSE) - return(c(r2_cv, rmse_cv)) -} -``` +请记住,我们的目标是在已知值XXYY的情况下,确定β的最佳拟合值。一个简单的方法是使用简单的代数来求解β-这里我们去掉了错误项EE,因为它超出了我们的控制范围: + +【β】= + +这里的挑战是xxβ现在是矩阵,而不是单个数字——但是线性代数的规则告诉我们如何除以矩阵,这与乘以矩阵的*逆*是一样的(称为x我们可以在R: -使用此函数,我们可以对来自 nhanes 数据集的 100 个样本运行交叉验证,并计算交叉验证的 RMSE,以及原始数据和新数据集的 RMSE,正如我们上面计算的那样。 - -```r -#implement the function -sim_results <- - replicate(100, get_sample_predictions_cv(sample_size = 48, shuffle = FALSE)) - -sim_results <- - t(sim_results) %>% - data.frame() - -mean_rsquared <- - sim_results %>% - summarize( - mse_original_data = mean(X4), - mse_new_data = mean(X5), - mse_crossvalidation = mean(X6) - ) -pander(mean_rsquared) ``` +# compute beta estimates using linear algebra - -| MSE 原始数据 | MSE 新数据 | MSE 交叉验证 | -| --- | --- | --- | -| 2.98 年 | 21.64 条 | 29.29 条 | +#create Y variable 8 x 1 matrix +Y <- as.matrix(df$grade) + #create X variable 8 x 2 matrix +X <- matrix(0, nrow = 8, ncol = 2) +#assign studyTime values to first column in X matrix +X[, 1] <- as.matrix(df$studyTime) +#assign constant of 1 to second column in X matrix +X[, 2] <- 1 -在这里,我们看到交叉验证给了我们一个预测准确性的估计,它比我们用原始数据集看到的膨胀的准确性更接近我们用一个全新数据集看到的结果——事实上,它甚至比新数据集的平均值更悲观。可能是因为只有部分数据被用来训练每个模型。我们还可以确认,当因变量随机变动时,交叉验证能准确估计预测精度: +# compute inverse of X using ginv() +# %*% is the R matrix multiplication operator - -| rmse_original_data | rmse_new_data | RMSE 交叉验证 | -| --- | --- | --- | -| 第 7.9 条 | 第 73.7 条 | 75.31 条 | +beta_hat <- ginv(X) %*% Y #multiple the inverse of X by Y +print(beta_hat) +``` -在这里,我们再次看到交叉验证给了我们一个预测准确性的评估,这与我们对新数据的预期更为接近,而且更为悲观。 +``` +## [,1] +## [1,] 8.2 +## [2,] 68.0 +``` -正确使用交叉验证是很困难的,建议在实际使用之前咨询专家。然而,本节希望向您展示三件事: +强烈建议任何对统计方法的严肃使用感兴趣的人花些时间学习线性代数,因为它为标准统计中使用的几乎所有工具提供了基础。 -* “预言”并不总是意味着你认为它意味着什么。 -* 复杂的模型会严重地过度拟合数据,这样即使没有真正的预测信号,人们也能看到似乎很好的预测。 -* 除非使用适当的方法,否则您应该非常怀疑地查看有关预测准确性的声明。 +
-## 14.5 阅读建议 +
-* [统计学习要素:数据挖掘、推理和预测(第二版)](https://web.stanford.edu/~hastie/Papers/ESLII.pdf)——机器学习方法圣经,在线免费提供。 \ No newline at end of file +
\ No newline at end of file diff --git a/docs/15.md b/docs/15.md index 2e50906b0f7f7ce252f4c48e21548bc42158f561..7c7da75ef0a6f567da3ada7254d3c91eda443e69 100644 --- a/docs/15.md +++ b/docs/15.md @@ -1,141 +1,173 @@ -# 十五、比较方法 - -在统计学中,我们要问的最常见的问题之一是两个不同组的平均值是否存在差异。假设我们想知道经常吸食大麻的人是否会看更多的电视。我们可以使用 nhanes 数据集来问这个问题;让我们从数据集中抽取 200 个人的样本,测试每天看电视的时间是否与正常使用大麻有关。图[15.1](#fig:PotTVViolin)显示了使用小提琴绘图的这些数据。 - -```r -# create sample with tv watching and marijuana use -NHANES_sample <- - NHANES_adult %>% - drop_na(TVHrsDay, RegularMarij) %>% - mutate( - TVHrsNum = recode( #recode character values into numerical values - TVHrsDay, - "More_4_hr" = 5, - "4_hr" = 4, - "2_hr" = 2, - "1_hr" = 1, - "3_hr" = 3, - "0_to_1_hr" = 0.5, - "0_hrs" = 0 - ) - ) %>% - sample_n(200) +
+ +# 15 比较手段 + +我们已经遇到了一些情况,我们想问一些关于样本均值的问题。在这一章中,我们将更深入地研究各种方法来比较不同组的平均值。 + +
+ +## 15.1 测试单个平均值 + +对于平均值,我们可能想问的最简单的问题是它是否有一个特定的值。假设我们想测试NHANES数据集中成年人的平均舒张压值是否高于80,根据美国心脏病学会的规定,这是高血压的临界值。为了提出这个问题,我们选取了200名成年人作为样本;每个成年人都测量了三次血压,我们使用这些血压的平均值进行测试。 + +测试这种差异的一种简单方法是使用一种称为*符号测试*的测试,它询问实际值和假设值之间的正差异比例是否与我们偶然预期的不同。为此,我们取每个数据点和假设平均值之间的差值,并计算它们的符号。如果数据是正态分布的,并且实际平均值等于假设平均值,那么高于(或低于)假设平均值的值的比例应该是0.5,这样正差异的比例也应该是0.5。在我们的样本中,我们看到19.0%的人舒张压高于80。然后,我们可以使用二项式测试来询问正差异的比例是否大于0.5,使用我们统计软件中的二项式测试功能: + ``` +## +## Exact binomial test +## +## data: npos and nrow(NHANES_sample) +## number of successes = 38, number of trials = 200, p-value = 1 +## alternative hypothesis: true probability of success is greater than 0.5 +## 95 percent confidence interval: +## 0.15 1.00 +## sample estimates: +## probability of success +## 0.19 +``` + +这里我们看到,在p0.5p \ le 0.5的零假设下,有阳性体征的个体比例并不十分令人惊讶,鉴于观测值实际上小于0.50.5,这一点并不应该令我们感到惊讶。 + +我们也可以用学生的t检验来问这个问题,你在本书前面已经遇到过了。我们将平均数称为x\ bar { x }而假设的人口平均数称为【μ\ mu。然后,单个平均值的t检验为: -![Violin plot showing distributions of TV watching separated by regular marijuana use.](img/file89.png) +t=xμsemt = \ frac { \ bar { x }-\ mu } { SEM } -图 15.1 显示电视观看分布的小提琴图,由正常的大麻使用分开。 +【s】【e】【m】= -## 15.1 学生 T 考试 +本质上,t统计量询问样本平均值与假设数量的偏差相对于平均值的抽样可变性有多大。 -在上一章的假设检验中,我们已经遇到了学生 t 统计量。这一统计数据为我们提供了一种测试两组独立观测值之间差异的方法;我们将在本章后面的部分讨论观测值不独立的情况。作为提醒,两个独立组比较的 t 统计量计算如下: +我们可以使用统计软件对NHANES数据集进行计算: -![](img/eb22be2bb5310a1a8380ab51dc3403b2.jpg) +``` +## +## One Sample t-test +## +## data: NHANES_adult$BPDiaAve +## t = -55, df = 4593, p-value = 1 +## alternative hypothesis: true mean is greater than 80 +## 95 percent confidence interval: +## 69 Inf +## sample estimates: +## mean of x +## 70 +``` + +这向我们表明,数据集中的平均舒张压(69.5)实际上远低于80,因此我们对其是否高于80的测试远没有意义。 -其中![](img/9f07a04e73180057e99b6fb08e88614c.jpg)和![](img/2e54e3c201411d186d4ed11b14e4d6b6.jpg)是两组的平均值,![](img/faae753102a8b7f33f0d7c3b55d0f7fe.jpg)和![](img/81f40c14dd3a65790975635990f05d79.jpg)是每组的方差,![](img/43dc0e5b26df34d3e2f9c1ea065d2cec.jpg)和![](img/f654c11a6cebbc4eb0d47572ce0dd9ed.jpg)是两组的大小。在均值无差的零假设下,该统计量按自由度为 n-2 的 t 分布进行分布(因为我们计算了两个参数估计,即两组的均值)。我们可以使用`t.test()`函数计算 r 中的 t 检验。在本例中,我们从吸烟大麻与更大的电视收看量相关的具体假设开始,因此我们将使用单尾测试。由于 t.test 函数按字母顺序排列条件,“no”组排在第一位,因此我们需要测试第一组是否小于第二组(“yes”)的替代假设;因此,我们指定“less”作为替代。 +请记住,大的p值不会为我们提供支持零假设的证据,因为我们已经假设零假设一开始就是正确的。然而,正如我们在贝叶斯分析一章中所讨论的,我们可以使用贝叶斯因子来量化支持或反对零假设的证据: -```r -# compute t test for tv watching as function of marijuana use -t.test( - TVHrsNum ~ RegularMarij, - data = NHANES_sample, - var.equal = TRUE, - alternative = 'less' -) +``` +ttestBF(NHANES_sample$BPDiaAve, mu=80, nullInterval=c(-Inf, 80)) ``` -```r +``` +## Bayes factor analysis +## -------------- +## [1] Alt., r=0.707 -Inf2.73*10162.73 * 10^{16})表示有极其有力的证据支持零假设而不是替代方案。 + +
+ +
+ +## 15.2 比较两种方法 + +统计学中经常出现的一个更常见的问题是,两个不同组的均值之间是否存在差异。假设我们想知道经常吸食大麻的人是否看更多的电视,我们也可以使用NHANES数据集来询问这个问题。我们从数据集中抽取了200个样本,测试每天看电视的小时数是否与经常使用大麻有关。图 [15.1](#fig:PotTVViolin) 的左图使用小提琴图显示了这些数据。 + +![Left: Violin plot showing distributions of TV watching separated by regular marijuana use. Right: Violin plots showing data for each group, with a dotted line connecting the predicted values for each group, computed on the basis of the results of the linear model.. ](../media/file80.png) + +图15.1:左图:小提琴图显示了定期吸食大麻对看电视的影响。右图:显示各组数据的Violin图,虚线连接各组的预测值,根据线性模型的结果进行计算.. + +我们也可以使用学生t检验来检验两组独立观察值之间的差异(正如我们在前面章节中看到的);我们将在本章后面讨论观测值不独立的情况。提醒一下,比较两个独立组的t统计量计算如下: + += n【t = \ frac】{ \ bar { x _ 1 }-\ bar { x _ 2 } } { \ sqrt }+\ frac { s _ 1 ^ 2 } { n _ 1 }+\ frac + +其中x1\ bar { x } _ 1x2\ bar { x } _ 2是两者的意思 s12s^2_1s22s^2_2是每个组的方差,而 在均值间无差异的零假设下,该统计量根据t分布进行分布,自由度使用Welch检验(如前所述)进行计算,因为两组之间的个体数量不同。在这种情况下,我们从特定的假设开始,即吸食大麻与更多地看电视有关,因此我们将使用单尾检验。以下是我们的统计软件得出的结果: + +``` +## +## Welch Two Sample t-test ## ## data: TVHrsNum by RegularMarij -## t = -3, df = 200, p-value = 0.001 -## alternative hypothesis: true difference in means is less than 0 +## t = -3, df = 85, p-value = 6e-04 +## alternative hypothesis: true difference in means between group No and group Yes is less than 0 ## 95 percent confidence interval: -## -Inf -0.29 +## -Inf -0.39 ## sample estimates: ## mean in group No mean in group Yes -## 2.2 2.8 +## 2.0 2.8 ``` -在这种情况下,我们发现,在预期的方向上,两组之间有统计学上的显著差异——普通的大麻吸烟者看更多的电视。 +在这种情况下,我们看到,在预期的方向上,两组之间存在着统计学上的显著差异——经常吸食大麻的人看电视的时间更长。 -## 15.2 t 检验作为线性模型 +
-t 检验是比较平均值的一种专用工具,但也可以看作是一般线性模型的一种应用。在这种情况下,模型如下所示: +
-![](img/257b344874c7e71d01555b79baca9bb3.jpg) +## 15.3 将t检验作为线性模型 -然而,吸烟是一个二元变量,因此我们将其作为一个 _ 虚拟变量 _,正如我们在上一章中讨论的那样,将其设置为吸烟者为 1,不吸烟者为零。在这种情况下,![](img/1bd70013553271dc3b9b449a5eb5a8a9.jpg)只是两组之间平均值的差,![](img/c1901c25b94eab74ccb483851ca51d1c.jpg)是编码为零的组的平均值。我们可以使用`lm()`函数来拟合这个模型,并看到它给出与上面的 t 检验相同的 t 统计量: +t检验通常作为比较均值的专门工具,但它也可以被视为一般线性模型的应用。在这种情况下,模型将如下所示: -```r -# print summary of linear regression to perform t-test -s <- summary(lm(TVHrsNum ~ RegularMarij, data = NHANES_sample)) -s -``` +tv̂=β1̂*marIj = \ hat { \ beta _ 1 } *大麻+ \hat{\beta_0} 由于吸烟是一个二元变量,我们将其视为一个*虚拟变量*,就像我们在上一章中讨论的那样,对于吸烟者将其值设置为1,对于不吸烟者将其值设置为0。 既然如此,β̂\ hat【beta _ 1】简直就是两组的手段之差,β0我们可以使用统计软件中的一般线性模型函数来拟合该模型,并看到它给出了与上述t检验相同的t统计量,只是在这种情况下它是正的,这是因为我们的软件排列组的方式: -```r +``` ## ## Call: ## lm(formula = TVHrsNum ~ RegularMarij, data = NHANES_sample) ## ## Residuals: -## Min 1Q Median 3Q Max -## -2.810 -1.165 -0.166 0.835 2.834 +## Min 1Q Median 3Q Max +## -2.2843 -1.0067 -0.0067 0.9933 2.9933 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) 2.165 0.115 18.86 <2e-16 *** -## RegularMarijYes 0.645 0.213 3.02 0.0028 ** +## (Intercept) 2.007 0.116 17.27 < 2e-16 *** +## RegularMarijYes 0.778 0.230 3.38 0.00087 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 1.4 on 198 degrees of freedom -## Multiple R-squared: 0.0441, Adjusted R-squared: 0.0393 -## F-statistic: 9.14 on 1 and 198 DF, p-value: 0.00282 +## Multiple R-squared: 0.0546, Adjusted R-squared: 0.0498 +## F-statistic: 11.4 on 1 and 198 DF, p-value: 0.000872 ``` -我们还可以以图形方式查看 lm()结果(参见图[15.2](#fig:ttestFig)): +我们也可以图形方式查看线性模型结果(参见图 [15.1](#fig:PotTVViolin) 的右侧面板)。在这种情况下,不吸烟者的预测值是β0̂\帽子【beta _ 0】(2.0),而吸烟者的预测值是β0̂ -![Violin plots showing data for each group, with a blue line connecting the predicted values for each group, computed on the basis of the results of the linear model.](img/file90.png) +为了计算这种分析的标准误差,我们可以使用与线性回归完全相同的方程,因为这实际上是线性回归的另一个例子。事实上,如果您将上述t检验的p值与大麻使用变量的线性回归分析中的p值进行比较,您会发现线性回归分析的p值恰好是t检验的两倍,因为线性回归分析正在执行双尾检验。 -图 15.2 显示每组数据的小提琴图,蓝色线连接每组的预测值,根据线性模型的结果计算。 +
-在这种情况下,不吸烟者的预测值为![](img/c1901c25b94eab74ccb483851ca51d1c.jpg)(2.17),吸烟者的预测值为![](img/522c5e6348887a4c95fababbfeddf52c.jpg)(2.81)。 +### 15.3.1 比较两种方法的效果大小 -为了计算这个分析的标准误差,我们可以使用与线性回归完全相同的方程——因为这实际上只是线性回归的另一个例子。事实上,如果将上述 t 检验中的 p 值与大麻使用变量的线性回归分析中的 p 值进行比较,您会发现线性回归分析中的 p 值正好是 t 检验中的 p 值的两倍,因为线性回归分析正在执行双尾测试。 +比较两个均值最常用的效应大小是科恩的d,它(你可能记得第 [10](#ci-effect-size-power) 章)是用标准差单位表示的效应大小。对于使用上述一般线性模型(即,使用单个虚拟编码变量)估计的t检验,这表示为: -# +d=β̂σresIdua -## 15.2.1 比较两种方法的效果大小 +我们还可以计算出r2r^2进行这种分析,它告诉我们吸食大麻在看电视的方差中占了多大比例。这个值(在上面的线性模型分析总结的底部报告)是0.05,这告诉我们,虽然这种影响在统计上可能是显著的,但它在看电视的变化中占相对较小的比例。 -两种方法之间比较最常用的效果大小是 Cohen's D(如您在第[10](#ci-effect-size-power)章中所记得的),它是用标准误差单位表示效果的表达式。对于使用上文概述的一般线性模型(即使用单个虚拟编码变量)估计的 t 检验,其表示为: +
-![](img/eff581a67a6fe31d7bced24afcaffab4.jpg) +
-我们可以从上面的分析输出中获得这些值,得出 d=0.47,我们通常将其解释为中等大小的效果。 +
-我们也可以计算这个分析的![](img/37b3c24ff77b4f85a3ac7fc7c3c88062.jpg),它告诉我们看电视的差异有多大。这个值(在 lm()分析的摘要中报告)是 0.04,这告诉我们,虽然效果在统计上有显著意义,但它在电视观看方面的差异相对较小。 +## 15.4 均值差异的贝叶斯因子 -## 15.3 平均差的贝叶斯因子 +正如我们在贝叶斯分析一章中所讨论的,贝叶斯因子提供了一种更好地量化支持或反对无差异零假设的证据的方法。我们可以对相同数据进行分析: -正如我们在贝叶斯分析一章中所讨论的,贝叶斯因子提供了一种更好地量化证据的方法,支持或反对零差异假设。在这种情况下,我们要针对零假设进行测试,即差异小于零,因为差异是由第一组(“否”)和第二组(“是”)之间的函数计算得出的。因此,我们指定了一个从零到无穷大的“空间隔”,这意味着替代值小于零。 - -```r -# compute bayes factor for group comparison -bf <- ttestBF( - formula = TVHrsNum ~ RegularMarij, - data = NHANES_sample, - nullInterval = c(0, Inf) -) -bf ``` - -```r ## Bayes factor analysis ## -------------- -## [1] Alt., r=0.707 0 -在实验研究中,我们经常在受试者设计中使用 _,在设计中我们比较同一个人的多个测量值。例如,在 nhanes 数据集中,血压测量了三次。假设我们有兴趣测试第一次和第二次测量之间的平均血压是否存在差异(图[15.3](#fig:BPfig))。_ +
-![Violin plot of systolic blood pressure on first and second recording, from NHANES.](img/file91.png) +## 15.5 比较成对观察值 -图 15.3 NHANES 第一次和第二次记录的收缩压小提琴图。 +在实验研究中,我们经常使用*受试者内*设计,在这种设计中,我们在多个测量值上比较同一个人。来自这种设计的测量通常被称为*重复测量*。例如,在NHANES数据集中,血压被测量三次。假设我们有兴趣测试样本中个体间第一次和第二次测量的平均收缩压是否存在差异(图 [15.2](#fig:BPfig) )。 -我们发现,在不同的时间点(大约一点)之间,平均血压似乎没有太大的差异。首先,让我们使用一个独立的样本 t 检验来测试差异,它忽略了数据点对来自同一个人的事实。 +![Left: Violin plot of systolic blood pressure on first and second recording, from NHANES. Right: Same violin plot with lines connecting the two data points for each individual.](../media/file81.png) -```r -t.test( - BPsys ~ timepoint, - data = NHANES_sample_tidy, - paired = FALSE, - var.equal = TRUE -) -``` +图15.2:左图:NHANES第一次和第二次记录的收缩压小提琴图。右图:同样的小提琴图,用线条连接每个人的两个数据点。 + +我们看到,第一次和第二次测量的平均血压(大约一点)似乎没有太大的差异。首先,让我们使用独立样本t检验来测试差异,这忽略了数据点对来自相同个体的事实。 -```r +``` ## ## Two Sample t-test ## ## data: BPsys by timepoint -## t = 0.5, df = 400, p-value = 0.6 -## alternative hypothesis: true difference in means is not equal to 0 +## t = 0.6, df = 398, p-value = 0.5 +## alternative hypothesis: true difference in means between group BPSys1 and group BPSys2 is not equal to 0 ## 95 percent confidence interval: -## -2.8 4.6 +## -2.1 4.1 ## sample estimates: ## mean in group BPSys1 mean in group BPSys2 -## 122 121 +## 121 120 ``` -这一分析显示没有显著差异。然而,这种分析是不适当的,因为它假定两个样本是独立的,而事实上它们不是独立的,因为数据来自同一个人。我们可以用每一个人的一行来绘制数据来显示这一点(参见图[15.4](#fig:BPLinePlot))。 - -![Violin plot of systolic BP on each recording, with lines connecting the two data points for each individual.](img/file92.png) +这一分析显示没有显著差异。然而,这种分析是不恰当的,因为它假设两个样本是独立的,而事实上它们不是,因为数据来自相同的个体。我们可以为每个人绘制一条线来显示这些数据(见图 [15.2](#fig:BPfig) 中的右图)。 -图 15.4 每一次记录的收缩压小提琴图,每一次记录的两个数据点之间都有连接线。 +在这种分析中,我们真正关心的是每个人的血压在两次测量之间是否以系统的方式发生了变化,因此另一种表示数据的方法是计算每个人在两个时间点之间的差异,然后分析这些差异分数,而不是分析个体测量。在图 [15.3](#fig:BPDiffHist) 中,我们展示了这些差异分数的直方图,蓝色线条表示平均差异。 -在这个分析中,我们真正关心的是两次测量之间每个人的血压是否有系统的变化,所以表示数据的另一种方法是计算每个人的两个时间点之间的差异,然后分析这些差异。而不是分析单个测量值。在图[15.5](#fig:BPDiffHist)中,我们显示了这些差异分数的柱状图,蓝色线表示平均差异。 +![Histogram of difference scores between first and second BP measurement. The vertical line represents the mean difference in the sample.](../media/file82.png) -![Histogram of difference scores between first and second BP measurement.](img/file93.png) +图15.3:第一次和第二次血压测量的差值直方图。垂直线代表样本中的平均差异。 -图 15.5 第一次和第二次血压测量的差分柱状图。 +
-# +### 15.5.1 标志测试 -## 15.4.1 标志试验 +测试差异的一个简单方法是使用*符号测试*。为此,我们取差值并计算其符号,然后我们使用二项式检验来询问正号的比例是否不同于0.5。 -测试差异的一个简单方法是使用一个名为 _ 符号测试 _ 的测试,它询问正差异的比例(忽略它们的大小)是否不同于我们所期望的偶然性。为了做到这一点,我们利用这些差异计算它们的符号,然后我们使用二项式测试来询问阳性符号的比例是否与 0.5 不同。 - -```r -# compute sign test for differences between first and second measurement -npos <- sum(NHANES_sample$diffPos) -bt <- binom.test(npos, nrow(NHANES_sample)) -bt ``` - -```r ## ## Exact binomial test ## ## data: npos and nrow(NHANES_sample) -## number of successes = 100, number of trials = 200, p-value = 0.4 +## number of successes = 96, number of trials = 200, p-value = 0.6 ## alternative hypothesis: true probability of success is not equal to 0.5 ## 95 percent confidence interval: -## 0.46 0.60 +## 0.41 0.55 ## sample estimates: ## probability of success -## 0.53 +## 0.48 ``` -在这里我们看到,在无效假设![](img/dc44c54f4d4f9c2f69998caac444c9bb.jpg)下,有阳性迹象的个体比例(0.53)不足以令人惊讶。然而,符号测试的一个问题是它丢弃了关于差异大小的信息,因此可能遗漏了一些东西。 +这里我们看到在p=0.5p = 0.5的零假设下,有正符号的个体比例(0.48)并没有大到令人惊讶。然而,符号测试的一个问题是,它丢弃了关于差异大小的信息,因此可能会丢失一些东西。 -# +
-## 15.4.2 配对 t 检验 +
-更常见的策略是使用 _ 对 t 检验 _,这相当于一个样本 t 检验,以确定测量值之间的平均差是否为零。我们可以使用 r 中的`t.test()`函数和设置`paired=TRUE`来计算这个值。 +### 15.5.2 配对t检验 -```r -# compute paired t-test -t.test(BPsys ~ timepoint, data = NHANES_sample_tidy, paired = TRUE) -``` +更常见的策略是使用*配对t检验*,这相当于对每个人内部测量值之间的平均差异是否为零的单样本t检验。我们可以使用我们的统计软件进行计算,告诉它数据点是成对的: -```r +``` ## ## Paired t-test ## ## data: BPsys by timepoint -## t = 2, df = 200, p-value = 0.02 -## alternative hypothesis: true difference in means is not equal to 0 +## t = 3, df = 199, p-value = 0.007 +## alternative hypothesis: true mean difference is not equal to 0 ## 95 percent confidence interval: -## 0.17 1.69 +## 0.29 1.75 ## sample estimates: -## mean of the differences -## 0.93 +## mean difference +## 1 ``` -通过这些分析,我们发现两个测量值实际上存在显著差异。让我们计算一下贝叶斯因子,看看这种影响有多强: +通过这种分析,我们看到实际上两个测量值之间存在显著差异。让我们计算贝叶斯因子,看看结果提供了多少证据: -```r -# compute Bayes factor for paired t-test -ttestBF(x = NHANES_sample$BPSys1, y = NHANES_sample$BPSys2, paired = TRUE) ``` - -```r ## Bayes factor analysis ## -------------- -## [1] Alt., r=0.707 : 1.3 ±0% +## [1] Alt., r=0.707 : 3 ±0.01% ## ## Against denominator: ## Null, mu = 0 @@ -262,121 +270,139 @@ ttestBF(x = NHANES_sample$BPSys1, y = NHANES_sample$BPSys2, paired = TRUE) ## Bayes factor type: BFoneSample, JZS ``` -这表明,虽然在配对 t 检验中效果显著,但实际上它几乎没有提供支持替代假设的证据。 +观察到的贝叶斯因子2.97告诉我们,尽管在配对t检验中效果显著,但它实际上提供了非常弱的证据来支持替代假设。 -# +配对t检验也可以根据线性模型来定义;有关这方面的更多详细信息,请参见附录。 -## 15.4.3 配对 t 检验作为线性模型 +
-我们也可以用一般线性模型来定义配对 t 检验。为了做到这一点,我们将每个主题的所有度量都作为数据点(在整洁的数据框架内)。然后,我们在模型中包含一个变量,该变量编码每个人的身份(在本例中,是包含每个人的主题 ID 的 ID 变量)。这被称为 _ 混合模型 _,因为它包括独立变量的影响以及个体的影响。标准模型拟合程序`lm()`不能做到这一点,但我们可以使用流行的 R 包 _lme4_ 中的`lmer()`函数来实现这一点,该包专门用于估计混合模型。公式中的`(1|ID)`告诉`lmer()`为`ID`变量的每个值(即数据集中的每个个体)估计一个单独的截距(即`1`所指的截距),然后估计一个与 bp 相关的公共斜率。 +
-```r -# compute mixed model for paired test +
-lmrResult <- lmer(BPsys ~ timepoint + (1 | ID), data = NHANES_sample_tidy) -summary(lmrResult) -``` +## 15.6 比较两个以上意味着 -```r -## Linear mixed model fit by REML. t-tests use Satterthwaite's method [ -## lmerModLmerTest] -## Formula: BPsys ~ timepoint + (1 | ID) -## Data: NHANES_sample_tidy +我们经常想要比较两个以上的平均数,以确定它们之间是否有任何不同。假设我们正在分析一项高血压治疗临床试验的数据。在这项研究中,志愿者被随机分配到三种情况中的一种:药物1、药物2或安慰剂。让我们生成一些数据并绘制它们(见图 [15.4](#fig:DrugTrial) + +![Box plots showing blood pressure for three different groups in our clinical trial.](../media/file83.png) + +图15.4:箱线图显示了我们临床试验中三个不同组的血压。 + +
+ +### 15.6.1 差异分析 + +我们首先要测试所有组的平均值相等的零假设,也就是说,与安慰剂相比,两种治疗都没有任何效果。我们可以使用一种叫做*方差分析* (ANOVA)的方法来做到这一点。这是心理统计学中最常用的方法之一,在这里我们只触及皮毛。方差分析背后的基本思想是我们在一般线性模型一章中已经讨论过的,事实上方差分析只是这种模型的一个特定版本的名称。 + +记得从上一章我们可以对数据中的总方差进行分区(SStotalSS _ { total }) 入模型解释的方差(SSmoelSS _ { model })和非模型解释的方差( 然后,我们可以通过将它们除以它们的自由度来计算它们的均方差;对于误差这是NpN-p(其中pp是我们已经计算出来的平均数),对于模型这是 + +【m】【s】【m】 l= + +【m】【s】【e】【r】【r】 r= + +使用ANOVA,我们希望在均值间无差异的零假设下,测试模型解释的方差是否大于我们随机预期的方差。而对于t分布,在零假设下期望值为零,但这里不是这样,因为平方和总是正数。幸运的是,有另一种理论分布描述了在零假设下平方和的比率是如何分布的:分布 *F* (见图 [15.5](#fig:FDist) )。这种分布有两个自由度,分别对应于分子(本例中为模型)和分母(本例中为误差)的自由度。 + +![F distributions under the null hypothesis, for different values of degrees of freedom.](../media/file84.png) + +图15.5:不同自由度值的零假设下的f分布。 + +为了创建ANOVA模型,我们扩展了您在上一章中遇到的*虚拟编码*的概念。请记住,对于比较两个平均值的t检验,我们创建了一个虚拟变量,其中一个条件的值为1,其他条件的值为0。在这里,我们通过创建两个虚拟变量来扩展这一思想,一个编码药物1的条件,另一个编码药物2的条件。就像在t检验中一样,我们将有一个条件(在这种情况下,安慰剂)没有虚拟变量,因此代表了与其他条件进行比较的基线;它的平均值定义了模型的截距。使用药品1和2的虚拟编码,我们可以使用与上一章相同的方法来拟合模型: + +``` ## -## REML criterion at convergence: 2982 +## Call: +## lm(formula = sysBP ~ d1 + d2, data = df) ## -## Scaled residuals: +## Residuals: ## Min 1Q Median 3Q Max -## -2.6985 -0.4478 0.0058 0.3996 2.7395 -## -## Random effects: -## Groups Name Variance Std.Dev. -## ID (Intercept) 342 18.49 -## Residual 15 3.87 -## Number of obs: 400, groups: ID, 200 +## -29.084 -7.745 -0.098 7.687 23.431 ## -## Fixed effects: -## Estimate Std. Error df t value Pr(>|t|) -## (Intercept) 121.770 1.336 207.545 91.2 <2e-16 *** -## timepointBPSys2 -0.930 0.387 199.000 -2.4 0.017 * +## Coefficients: +## Estimate Std. Error t value Pr(>|t|) +## (Intercept) 141.60 1.66 85.50 < 2e-16 *** +## d1 -10.24 2.34 -4.37 2.9e-05 *** +## d2 -2.03 2.34 -0.87 0.39 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## Correlation of Fixed Effects: -## (Intr) -## tmpntBPSys2 -0.145 +## Residual standard error: 9.9 on 105 degrees of freedom +## Multiple R-squared: 0.169, Adjusted R-squared: 0.154 +## F-statistic: 10.7 on 2 and 105 DF, p-value: 5.83e-05 ``` -您可以看到,这向我们显示了一个 p 值,它非常接近于使用`t.test()`函数计算的成对 t 检验的结果。 - -## 15.5 比较两种以上的方法 +这个命令的输出为我们提供了两件事。首先,它向我们展示了每个虚拟变量的t检验结果,这基本上告诉我们每个条件是否分别不同于安慰剂;似乎药物1有,而药物2没有。但是,请记住,如果我们想要解释这些测试,我们需要校正p值,以说明我们已经进行了多重假设测试的事实;我们将在下一章看到如何做到这一点的例子。 -通常我们想比较两种以上的方法来确定它们之间是否存在差异。假设我们正在分析一项治疗高血压的临床试验的数据。在研究中,志愿者被随机分为三种情况:药物 1、药物 2 或安慰剂。让我们生成一些数据并绘制它们(参见图[15.6](#fig:DrugTrial)) +请记住,我们开始想要测试的假设是,任何条件之间是否有任何差异;我们称之为*综合*假设检验,它是由F统计提供的检验。F统计量基本上告诉我们,我们的模型是否优于只包含截距的简单模型。在这种情况下,我们看到f检验非常显著,与我们的印象一致,即两组之间似乎确实存在差异(事实上我们知道存在差异,因为我们创建了数据)。 -![Box plots showing blood pressure for three different groups in our clinical trial.](img/file94.png) +
-图 15.6 显示我们临床试验中三个不同组的血压的方框图。 +
-# +
-## 15.5.1 方差分析 +## 15.7 学习目标 -我们首先要验证一个无效的假设,即所有组的平均值都是相等的——也就是说,两种治疗都没有任何效果。我们可以使用一个名为 _ 方差分析 _(anova)的方法来实现这一点。这是心理统计学中最常用的方法之一,我们将只触及表面。方差分析背后的基本思想是我们在关于一般线性模型的章节中已经讨论过的,事实上,方差分析只是这种模型具体实现的一个名称。 +阅读本章后,您应该能够: -记住,从上一章我们可以将数据中的总方差(![](img/faf0cc0e13c7f76010a24da69ea6a995.jpg))划分为模型(![](img/1b171d25e28c908c537ba164ef44508f.jpg))解释的方差和非模型(![](img/cada9ea63611321a50f83f4ff82d1a6f.jpg))解释的方差。然后我们可以通过除以它们的自由度来计算每一个的 _ 均方 _;对于误差,这是![](img/4c73819c1d511acb2a2b59fbc4478801.jpg)(其中![](img/648811253cdbfe19389964c25be56518.jpg)是我们计算的平均数),对于模型,这是![](img/38354c005ec5000e4f493fa45ffc9664.jpg): +* 描述符号测试背后的基本原理 +* 描述如何使用t检验来比较一个平均值和一个假设值 +* 使用双样本t检验比较两个配对或非配对组的平均值 +* 描述如何使用方差分析来检验两个以上平均数之间的差异。 -![](img/d7ca248dffd28b51d7519cfe6cb9aa6e.jpg) +
-![](img/989fabebe06e36a6b69e982f409ae3af.jpg) +
-通过方差分析,我们想要检验在平均值之间没有差异的无效假设下,模型所解释的方差是否大于我们所期望的偶然值。而对于 t 分布,零假设下的期望值是零,这里不是这样,因为平方和总是正数。幸运的是,还有另一个标准分布描述了在零假设下平方和的比率是如何分布的:f 分布(见图[15.7](#fig:FDist))。这个分布有两个自由度,分别对应分子的自由度(在本例中是模型)和分母(在本例中是误差)。 +## 15.8 附录 -![F distributions under the null hypothesis, for different values of degrees of freedom.](img/file95.png) +
-图 15.7 零假设下,自由度不同值的 F 分布。 +### 15.8.1 作为线性模型的成对t检验 -为了创建一个方差分析模型,我们扩展了您在上一章中遇到的 _ 伪编码 _ 的思想。记住,对于比较两个平均值的 t 检验,我们创建了一个虚拟变量,其中一个条件的值为 1,另一个条件的值为零。在这里,我们通过创建两个虚拟变量来扩展这一想法,一个是为药物 1 状态编码,另一个是为药物 2 状态编码。正如在 t 检验中一样,我们将有一个条件(在本例中是安慰剂)没有一个虚拟变量,因此代表了与其他变量进行比较的基线;其平均值定义了模型的截距。让我们创建药物 1 和 2 的虚拟编码。 +我们也可以根据一般的线性模型来定义配对t检验。为此,我们将每个受试者的所有测量结果作为数据点包含在内(在一个整洁的数据框内)。然后,我们在模型中包含一个变量,该变量对每个人的身份进行编码(在本例中,ID变量包含每个人的主题ID)。这被称为*混合模型*,因为它包括独立变量的影响以及个人的影响。标准的模型拟合过程`lm()`无法做到这一点,但我们可以使用一个流行的R包 *lme4* 中的`lmer()`函数来做到这一点,该包专门用于估计混合模型。公式中的`(1|ID)`告诉`lmer()`为`ID`变量的每个值(即数据集中的每个个体)估计一个单独的截距(这就是`1`所指的截距),然后估计一个与BP时间点相关的公共斜率。 -```r -# create dummy variables for drug1 and drug2 -df <- - df %>% - mutate( - d1 = as.integer(group == "drug1"), # 1s for drug1, 0s for all other drugs - d2 = as.integer(group == "drug2") # 1s for drug2, 0s for all other drugs - ) ``` +# compute mixed model for paired test -现在,我们可以使用上一章中使用的相同方法来拟合模型: - -```r -# fit ANOVA model -lmResultANOVA <- lm(sysBP ~ d1 + d2, data = df) -summary(lmResultANOVA) +lmrResult <- lmer(BPsys ~ timepoint + (1 | ID), + data = NHANES_sample_tidy) +summary(lmrResult) ``` -```r +``` +## Linear mixed model fit by REML. t-tests use Satterthwaite's method [ +## lmerModLmerTest] +## Formula: BPsys ~ timepoint + (1 | ID) +## Data: NHANES_sample_tidy ## -## Call: -## lm(formula = sysBP ~ d1 + d2, data = df) +## REML criterion at convergence: 2895 ## -## Residuals: +## Scaled residuals: ## Min 1Q Median 3Q Max -## -29.084 -7.745 -0.098 7.687 23.431 +## -2.3843 -0.4808 0.0076 0.4221 2.1718 ## -## Coefficients: -## Estimate Std. Error t value Pr(>|t|) -## (Intercept) 141.60 1.66 85.50 < 2e-16 *** -## d1 -10.24 2.34 -4.37 2.9e-05 *** -## d2 -2.03 2.34 -0.87 0.39 +## Random effects: +## Groups Name Variance Std.Dev. +## ID (Intercept) 236.1 15.37 +## Residual 13.9 3.73 +## Number of obs: 400, groups: ID, 200 +## +## Fixed effects: +## Estimate Std. Error df t value Pr(>|t|) +## (Intercept) 121.370 1.118 210.361 108.55 <2e-16 *** +## timepointBPSys2 -1.020 0.373 199.000 -2.74 0.0068 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## Residual standard error: 9.9 on 105 degrees of freedom -## Multiple R-squared: 0.169, Adjusted R-squared: 0.154 -## F-statistic: 10.7 on 2 and 105 DF, p-value: 5.83e-05 +## Correlation of Fixed Effects: +## (Intr) +## tmpntBPSys2 -0.167 ``` -这个命令的输出为我们提供了两件事。首先,它向我们展示了每一个虚拟变量的 t 检验结果,这基本上告诉我们每一个条件是否与安慰剂不同;药物 1 似乎不同,而药物 2 则不同。但是,请记住,如果我们想要解释这些测试,我们需要更正 p 值,以说明我们已经进行了多个假设测试;我们将在下一章中看到如何进行此操作的示例。 +您可以看到,这向我们显示了一个p值,它非常接近使用`t.test()`函数计算的配对t检验的结果。 + +
+ +
-记住,我们开始想要测试的假设是,任何条件之间是否存在任何差异;我们将其称为 _ 综合假设测试,这是由 F 统计量提供的测试。F 统计量基本上告诉我们,我们的模型是否比只包含截距的简单模型更好。在这种情况下,我们看到 f 检验是非常显著的,这与我们的印象一致,即两组之间确实存在差异(事实上,我们知道存在差异,因为我们创建了数据)。_ \ No newline at end of file +
\ No newline at end of file diff --git a/docs/16.md b/docs/16.md index 536c52622cd4d4ee2067b34e2de9399be17900da..f0fb067407f00c917ee96aa02abcb8793517ea8f 100644 --- a/docs/16.md +++ b/docs/16.md @@ -1,335 +1,323 @@ -# 十六、统计建模过程:一个实例 - -在这一章中,我们将汇集我们所学的一切,将我们的知识应用到一个实际的例子中。 - -## 16.1 统计建模过程 - -当我们想要使用我们的统计模型来检验一个科学假设时,我们通常要经历一系列的步骤: - -1. 指定您感兴趣的问题 -2. 识别或收集适当的数据 -3. 准备数据进行分析 -4. 确定合适的模型 -5. 使模型适合数据 -6. 批评模型以确保它适合 -7. 检验假设和量化效应大小 - -让我们来看一个真正的例子。2007 年,斯坦福大学的克里斯托弗·加德纳和他的同事在美国医学协会(HTG1)的杂志上发表了一项研究,题为“比较阿特金斯、Zone、Ornish 和学习饮食对超重绝经前妇女体重变化和相关危险因素的影响,A-toZ 减肥研究:一项随机试验”(Gardner 等人 2007 年)。 - -# - -## 16.1.1 1:指定您感兴趣的问题 - -据作者介绍,他们的研究目标是: - -> 比较 4 种代表低到高碳水化合物摄入谱的减肥饮食对减肥和相关代谢变量的影响。 - -# - -## 16.1.2 2:识别或收集适当的数据 - -为了回答他们的问题,研究人员随机将 311 名超重/肥胖女性中的每一位分为四种不同的饮食(阿特金斯、Zone、Ornish 或 Learn),并随着时间的推移跟踪她们的体重和其他健康指标。 - -作者记录了大量的变量,但对于主要的问题,让我们关注一个变量:体重指数(bmi)。此外,由于我们的目标是测量体重指数的持续变化,我们将只观察饮食开始后 12 个月的测量结果。 - -# - -## 16.1.3 3:准备分析数据 - -A 到 Z 研究的实际数据并不公开,因此我们将使用他们论文中报告的摘要数据生成一些与他们研究中获得的数据大致匹配的合成数据。 - -```r -# generate a dataset based on the results of Gardner et al. Table 3 - -set.seed(123456) -dietDf <- - data.frame(diet=c(rep('Atkins',77), - rep('Zone',79), - rep('LEARN',79), - rep('Ornish',76))) %>% - mutate( - BMIChange12Months=ifelse(diet=='Atkins', - rnorm(n=77,mean=-1.65,sd=2.54), - ifelse(diet=='Zone', - rnorm(n=79,mean=-0.53,sd=2.0), - ifelse(diet=='LEARN', - rnorm(n=79,mean=-0.92,sd=2.0), - rnorm(n=76,mean=-0.77,sd=2.14)))), - physicalActivity=ifelse(diet=='Atkins', - rnorm(n=77,mean=34,sd=6), - ifelse(diet=='Zone', - rnorm(n=79,mean=34,sd=6.0), - ifelse(diet=='LEARN', - rnorm(n=79,mean=34,sd=5.0), - rnorm(n=76,mean=35,sd=7) ))) - ) - -summaryDf <- - dietDf %>% - group_by(diet) %>% - summarize( - n=n(), - meanBMIChange12Months=mean(BMIChange12Months), - varBMIChange12Months=var(BMIChange12Months) - ) %>% - mutate( - crit_val_lower = qt(.05, n - 1), - crit_val_upper = qt(.95, n - 1), - ci.lower=meanBMIChange12Months+(sqrt(varBMIChange12Months)*crit_val_lower)/sqrt(n), - ci.upper=meanBMIChange12Months+(sqrt(varBMIChange12Months)*crit_val_upper)/sqrt(n) - ) - -summaryDf %>% - dplyr::select(-crit_val_lower,-crit_val_upper) %>% - pander() -``` +
- | 饮食 | N 号 | 平均质量变化 12 个月 | varbmichange12 个月 | CI.下 | CI.上部 | -| --- | --- | --- | --- | --- | --- | -| 阿特金斯 | 77 | -1.62 条 | 6.52 条 | -第 2.11 条 | -1.14 条 | -| 学习 | 79 | -0.85 分 | 3.77 条 | -1.21 条 | -0.49 分 | -| 尼什 | 76 | -0.69 分 | 5.36 条 | -1.13 条 | -0.25 分 | -| 区域 | 79 | -0.57 分 | 3.76 条 | -0.93 分 | -0.21 分 | +# 16 多元统计 -![Violin plots for each condition, with the 50th percentile (i.e the median) shown as a black line for each group.](img/file96.png) +术语*多元*指的是涉及一个以上随机变量的分析。虽然我们已经看到了之前的例子,其中模型包括多个变量(如线性回归),但在那些情况下,我们特别感兴趣的是如何用一个或多个通常由实验者指定而不是测量的*自变量*来解释*因变量*的变化。在多变量分析中,我们通常平等地对待所有变量,并试图理解它们作为一个整体是如何相互关联的。 -图 16.1 每种情况下的小提琴图,第 50 百分位(即中位数)显示为每组的黑线。 +多变量分析有许多不同的种类,但在这一章中我们将集中讨论两种主要的方法。首先,我们可能只是想理解和可视化数据中存在的结构,我们通常指的是哪些变量或观察值与其他变量或观察值相关。我们通常将“相关”定义为一些度量,这些度量表示变量之间的距离。属于这一类别的一个重要方法被称为*聚类*,其目的是找到变量或变量间相似的观察值的聚类。 -现在我们有了数据,让我们可视化它们,以确保没有异常值。小提琴图有助于观察分布的形状,如图[16.1](#fig:AtoZBMIChangeDensity)所示。这些数据看起来相当合理——特别是,似乎没有任何严重的异常值。然而,我们可以看到,分布似乎在方差上有点变化,阿特金斯和欧尼斯比其他分布显示出更大的变异性。这意味着任何假设组间方差相等的分析都可能是不适当的。 +第二,我们可能希望获取大量变量,并以尽可能保留更多信息的方式将它们减少到更少的变量。这被称为*维度缩减*,其中“维度”是指数据集中变量的数量。我们将讨论两种常用的降维技术,称为*主成分分析*和*因子分析*。 -# +聚类和降维通常被归类为*无监督学习*的形式;这与*监督学习*形成了对比,监督学习描述了你目前所学的线性回归等模型的特征。我们认为线性回归是“受监督的”原因是,我们知道我们试图预测的事物(即因变量)的值,并且我们试图找到最佳预测这些值的模型。在非服务学习中,我们没有试图预测的特定值;相反,我们试图在数据中发现可能对理解正在发生的事情有用的结构,这通常需要一些关于我们想要找到哪种结构的假设。 -## 16.1.4 4.确定合适的模型 +在这一章中,你会发现,虽然在监督学习中通常有一个“正确”的答案(一旦我们就如何确定“最佳”模型达成一致,如误差平方和),但在无监督学习中通常没有一致同意的“正确”答案。不同的无监督学习方法可以对相同的数据给出非常不同的答案,并且通常在原则上没有办法确定其中哪个是“正确的”,因为它取决于分析的目标和人们愿意对产生数据的机制做出的假设。一些人觉得这令人沮丧,而另一些人觉得这令人振奋;这将由你来决定你属于哪一个阵营。 -为了确定适合我们分析的统计模型,我们需要问几个问题。 +
-* 什么样的因变量? -* bmi:连续,大致正态分布 -* 我们在比较什么? -* 四个饮食组的平均体重指数 -* 方差分析是合适的 -* 观察是否独立? -* 随机分配和使用差分应确保独立和相同分布(IID)误差的假设是适当的。 +## 16.1 多元数据:一个例子 -# +作为多变量分析的一个例子,我们将看一个由我的小组收集并由艾森伯格等人发表的数据集 ( [**艾森伯格:2019um?**](#ref-Eisenberg:2019um) ) 。这个数据集是有用的,因为它有大量有趣的变量,这些变量是从相对大量的个人身上收集的,也因为它可以在网上免费获得,所以你可以自己探索它。 -## 16.1.5 5.使模型适合数据 +进行这项研究是因为我们有兴趣了解心理功能的几个不同方面是如何相互联系的,特别关注自我控制的心理测量和相关概念。参与者在一周的时间里进行了长达十小时的认知测试和调查;在第一个例子中,我们将关注与自我控制的两个具体方面相关的变量。*反应抑制*被定义为快速停止一个动作的能力,在这项研究中,使用一组被称为*停止信号任务*的任务进行测量。这些任务感兴趣的变量是对一个人停止自己需要多长时间的估计,称为*停止信号反应时间* ( *SSRT* ),在数据集中有四种不同的测量方法。*冲动性*定义为凭冲动做出决定的倾向,不考虑潜在后果和长期目标。这项研究包括许多测量冲动性的不同调查,但我们将重点关注UPPS-P调查,该调查评估了冲动性的五个不同方面。 -让我们做一个关于体重指数变化的方差分析来比较这四种饮食。事实证明,我们实际上不需要自己生成伪编码变量;如果我们给`lm()`一个分类变量,它将自动为我们生成它们。 +在艾森伯格的研究中,计算了522名参与者的分数后,我们得出了每个人的9个数字。虽然多元数据有时可能有数千甚至数百万个变量,但先看看这些方法如何处理少量变量是很有用的。 -```r -# perform ANOVA and print result +
-lmResult <- lm(BMIChange12Months ~ diet, data = dietDf) -lmResult -``` +
-```r -## -## Call: -## lm(formula = BMIChange12Months ~ diet, data = dietDf) -## -## Coefficients: -## (Intercept) dietLEARN dietOrnish dietZone -## -1.622 0.772 0.932 1.050 -``` +## 16.2 可视化多元数据 -请注意,lm 会自动生成与四种饮食中的三种相对应的虚拟变量,使 atkins 饮食没有虚拟变量。这意味着拦截模型阿特金斯饮食,其他三个变量模型的差异,这些饮食和阿特金斯饮食。 +多元数据的一个基本挑战是,人类的眼睛和大脑根本不具备可视化三维以上数据的能力。我们可以使用各种工具来尝试可视化多元数据,但随着变量数量的增加,所有这些工具都会失效。一旦变量的数量变得太大而不能直接可视化,一种方法是首先减少维度的数量(如下面进一步讨论的),然后可视化减少的数据集。 -# +
-## 16.1.6 6.批评模型以确保它适合 +### 16.2.1 矩阵分布图 -![Residuals from model plotted for each group separately.](img/file97.png) +将少量变量可视化的一个有用方法是将每一对变量相对于另一个绘制成图,有时称为“矩阵散点图”;示例如图 [16.1](#fig:pairpanel) 所示。面板中的每一行/每一列指的是一个变量——在这个例子中,是我们在前面例子中的一个心理变量。图上的对角线元素以直方图的形式显示了每个变量的分布。对角线下方的元素显示了每对矩阵的散点图,上面覆盖了描述变量之间关系的回归线。对角线上方的元素显示每对变量的相关系数。当变量数量相对较少(约10或更少)时,这可能是深入了解多变量数据集的有效方法。 -图 16.2 分别绘制各组模型的残差。 +![Scatterplot of matrices for the nine variables in the self-control dataset. The diagonal elements in the matrix show the histogram for each of the individual variables. The lower left panels show scatterplots of the relationship between each pair of variables, and the upper right panel shows the correlation coefficient for each pair of variables.](../media/file85.png) -我们要做的第一件事就是批评这个模型,以确保它是适当的。我们可以做的一件事是从模型中观察残差。在图[16.2](#fig:residPlot)中,我们将绘制按饮食分组的每个个体的残差。我们已经把这些要点抖了抖,以便能看到所有的要点。不同条件下的残差没有明显差异,这表明我们可以向前推进并解释模型输出。 +图16.1:自身对照数据集中九个变量的矩阵散点图。矩阵中的对角线元素显示了每个变量的直方图。左下面板显示每对变量之间关系的散点图,右上面板显示每对变量的相关系数。 -# +
-## 16.1.7 7.检验假设和量化效应大小 +
-首先,让我们看一下方差分析的结果总结: +### 16 . 2 . 2热图 -```r -# print summary of ANOVA statistics +在某些情况下,我们希望一次可视化大量变量之间的关系,通常侧重于相关系数。一种有用的方法是将相关值绘制成*热图*,其中热图的颜色与相关值相关。图 [16.2](#fig:hmap) 显示了一个变量相对较少的例子,使用了我们上面的心理学例子。在这种情况下,热图有助于数据的结构向我们“突出”;我们看到SSRT变量和UPPS变量之间有很强的相关性,而两组变量之间的相关性相对较小。 -summary(lmResult) -``` +![Heatmap of the correlation matrix for the nine self-control variables. The brighter yellow areas in the top left and bottom right highlight the higher correlations within the two subsets of variables.](../media/file86.png) -```r -## -## Call: -## lm(formula = BMIChange12Months ~ diet, data = dietDf) -## -## Residuals: -## Min 1Q Median 3Q Max -## -8.14 -1.37 0.07 1.50 6.33 -## -## Coefficients: -## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.622 0.251 -6.47 3.8e-10 *** -## dietLEARN 0.772 0.352 2.19 0.0292 * -## dietOrnish 0.932 0.356 2.62 0.0092 ** -## dietZone 1.050 0.352 2.98 0.0031 ** -## --- -## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -## -## Residual standard error: 2.2 on 307 degrees of freedom -## Multiple R-squared: 0.0338, Adjusted R-squared: 0.0243 -## F-statistic: 3.58 on 3 and 307 DF, p-value: 0.0143 -``` +图16.2:九个自控变量的相关矩阵热图。左上方和右下方较亮的黄色区域突出显示了这两个变量子集内较高的相关性。 -有意义的 F 检验表明,饮食之间有显著的差异,但我们也应该注意,模型实际上并不能解释数据的很大差异;R 平方值仅为 0.03,表明模型只占体重差异的百分之几。t 损失。因此,我们不想曲解这个结果。 +热图对于可视化大量变量之间的相关性变得特别有用。我们可以用脑成像数据作为例子。神经科学研究人员通常使用功能性磁共振成像(fMRI)从大脑中的大量位置收集关于大脑功能的数据,然后评估这些位置之间的相关性,以测量这些区域之间的“功能连接性”。例如,图 [16.3](#fig:parcelheatmap) 显示了一个大型相关矩阵的热图,该热图基于单个个体(你的真实)大脑中300多个区域的活动。只需查看热图,数据中清晰结构的存在就会显现出来。具体来说,我们看到有大量大脑区域的活动彼此高度相关(在沿着相关矩阵对角线的大黄色块中可见),而这些块也与其他块强烈负相关(在对角线外的大蓝色块中可见)。热图是一个强大的工具,可以轻松地可视化大型数据矩阵。 -显著的结果也不能告诉我们哪些饮食与其他饮食不同。我们可以通过使用`emmeans()`(“估计边际平均值”)函数比较不同条件下的平均值来了解更多信息: +![A heatmap showing the correlation coefficient of brain activity between 316 regions in the left hemisphere of a single individiual. Cells in yellow reflect strong positive correlation, whereas cells in blue reflect strong negative correlation. The large blocks of positive correlation along the diagonal of the matrix correspond to the major connected networks in the brain](../media/file87.png) -```r -# compute the differences between each of the means -leastsquare <- emmeans(lmResult, - pairwise ~ diet, - adjust="tukey") +图16.3:显示一个人左半球316个区域之间大脑活动相关系数的热图。黄色单元反映了强正相关,而蓝色单元反映了强负相关。沿着矩阵对角线的大块正相关对应于大脑中的主要连接网络 -# display the results by grouping using letters +
-CLD(leastsquare$emmeans, - alpha=.05, - Letters=letters) -``` +
-```r -## diet emmean SE df lower.CL upper.CL .group -## Atkins -1.62 0.251 307 -2.11 -1.13 a -## LEARN -0.85 0.247 307 -1.34 -0.36 ab -## Ornish -0.69 0.252 307 -1.19 -0.19 b -## Zone -0.57 0.247 307 -1.06 -0.08 b -## -## Confidence level used: 0.95 -## P value adjustment: tukey method for comparing a family of 4 estimates -## significance level used: alpha = 0.05 -``` +
-最右边一列中的字母显示了哪些组之间存在差异,使用的方法是根据正在执行的比较数量进行调整。这表明 Atkins 和 Learn 饮食没有区别(因为它们共享字母 A),Learn、Ornish 和 Zone 饮食也没有区别(因为它们共享字母 B),但 Atkins 饮食不同于 Ornish 和 Zone 饮食(因为它们不共享字母)。 +## 16.3 聚类 -## +聚类是指基于观察值的相似性来识别数据集中相关观察值或变量组的一组方法。通常,这种相似性将根据多元值之间的*距离*的某种度量来量化。然后,聚类方法会找到成员间距离最小的组。 -## 16.1.7.1 贝叶斯系数 +一种常用的聚类距离度量是*欧几里德距离*,它基本上是连接两个数据点的线的长度。图 [16.4](#fig:eucdist) 显示了一个有两个数据点和两个维度(X和Y)的数据集的例子。这两点之间的欧几里得距离是连接空间中的点的虚线的长度。 -假设我们希望有更好的方法来描述数据提供的证据数量。我们可以这样做的一种方法是计算贝叶斯因子,我们可以通过拟合完整模型(包括饮食)和简化模型(不包括饮食),然后比较它们的拟合度来实现这一点。对于简化模型,我们只包含一个 1,它告诉拟合程序只适合一个截距。 +![A depiction of the Euclidean distance between two points, (1,2) and (4,3). The two points differ by 3 along the X axis and by 1 along the Y axis.](../media/file88.png) -```r -brmFullModel <- brm(BMIChange12Months ~ diet, data = dietDf, - save_all_pars = TRUE) +图16.4:两点(1,2)和(4,3)之间欧几里得距离的描述。这两个点沿X轴相差3 °,沿Y轴相差1°。 -brmReducedModel <- brm(BMIChange12Months ~ 1, data = dietDf, - save_all_pars = TRUE) -``` +欧几里德距离的计算方法是,对每个维度上的点的位置差求平方,将这些平方差相加,然后求平方根。当有两个维度xxyy时,这将被计算为: -```r -bayes_factor(brmFullModel,brmReducedModel) -``` +【d】( )= -```r -## Iteration: 1 -## Iteration: 2 -## Iteration: 3 -## Iteration: 4 -## Iteration: 1 -## Iteration: 2 -## Iteration: 3 -## Iteration: 4 -## Iteration: 5 -``` +插入我们示例数据中的值: -```r -## Estimated Bayes factor in favor of bridge1 over bridge2: 99.86593 -``` +【d】(【x】 + +如果欧几里得距离的公式看起来有点熟悉,这是因为它与我们大多数人在几何课上学到的*勾股定理*相同,勾股定理根据两条边的长度计算直角三角形斜边的长度。在这种情况下,三角形各边的长度对应于两个维度上各点之间的距离。虽然这个例子是二维的,但是我们经常会处理比二维多得多的数据,但是同样的想法可以扩展到任意数量的维度。 -这表明,对于饮食之间的差异,有非常有力的证据(Bayes 因子接近 100)。 +欧几里德距离的一个重要特征是,它对数据的总体平均值和可变性很敏感。从这个意义上说,它不同于相关系数,相关系数以一种对总体均值或变异性不敏感的方式来衡量变量之间的线性关系。出于这个原因,通常在计算欧几里德距离之前对数据进行缩放,这相当于将每个变量转换成其Z得分版本。 -# +
-## 16.1.8 可能的混淆怎么办? +### 16 . 3 . 1K-均值聚类 -如果我们更仔细地看加德的论文,我们会发现他们还报告了每组中有多少人被诊断为代谢综合征(htg0),这是一种以高血压、高血糖、腰部脂肪过多为特征的综合征。胆固醇水平异常与心血管疾病风险增加有关。让我们首先将这些数据添加到摘要数据框中: +一种常用的数据聚类方法是 *K-means聚类*。该技术识别一组聚类中心,然后将每个数据点分配给其中心离该数据点最近(即,具有最低欧几里得距离)的聚类。举个例子,我们以全球多个国家的经纬度作为我们的数据点,看看K-means聚类是否能有效识别世界各大洲。 -```r -summaryDf <- - summaryDf %>% - mutate( - nMetSym=c(22,20,29,27), - nNoMetSym=n-nMetSym, - pMetSym=nMetSym/(nMetSym+nNoMetSym) - ) +大多数统计软件包都有一个内置函数,可以使用一个命令来执行K-means聚类,但是一步一步地理解它是如何工作的是很有用的。我们必须首先确定一个特定的K值,即数据中的聚类数。需要指出的是,集群数量没有唯一的“正确”值;人们可以使用各种技术来尝试确定哪个解决方案是“最佳”的,但它们通常会给出不同的答案,因为它们包含不同的假设或权衡。尽管如此,聚类技术(如K-means)是理解数据结构的重要工具,尤其是当数据变得高维时。 -summaryDf %>% - dplyr::select(diet,n,pMetSym) %>% - pander() +在选择了我们希望找到的聚类数( *K* )之后,我们必须得出K个位置,这将是我们对聚类中心的开始猜测(因为我们最初不知道中心在哪里)。一种简单的开始方式是随机选择K个实际数据点,并使用它们作为我们的起点,它们被称为*质心*。然后,我们计算每个数据点到每个质心的欧几里德距离,并根据每个点最近的质心将其分配到一个聚类中。使用这些新的聚类分配,我们通过平均分配给该聚类的所有点的位置来重新计算每个聚类的质心。然后重复这一过程,直到找到稳定的解决方案;我们称之为*迭代*过程,因为它会迭代直到答案不变,或者直到达到某种其他限制,比如最大可能迭代次数。 + +![A two-dimensional depiction of clustering on the latitude and longitude of countries across the world. The square black symbols show the starting centroids for each cluster, and the lines show the movement of the centroid for that cluster across the iterations of the algorithm.](../media/file89.png) + +图16.5:世界各国纬度和经度聚类的二维描述。黑色方形符号显示每个聚类的起始质心,线条显示该聚类的质心在算法迭代过程中的移动。 + +将K-means聚类应用于纬度/经度数据(图 [16.5](#fig:kmeans) ),我们看到得到的聚类和大陆之间有合理的匹配,尽管没有一个大陆与任何聚类完全匹配。我们可以通过绘制一个表来进一步检验这一点,该表将每个聚类的成员与每个国家的实际大陆进行比较;这种表格通常被称为*混淆矩阵*。 + +``` +## +## labels AF AS EU NA OC SA +## 1 5 1 36 0 0 0 +## 2 3 24 0 0 0 0 +## 3 0 0 0 0 0 7 +## 4 0 0 0 15 0 4 +## 5 0 10 0 0 6 0 +## 6 35 0 0 0 0 0 ``` - -| diet | n | PMETSYM 公司 | -| --- | --- | --- | -| Atkins | 77 | 0.29 分 | -| LEARN | 79 | 0.25 分 | -| Ornish | 76 | 0.38 分 | -| Zone | 79 | 0.34 分 | +* 第一组包括所有欧洲国家,以及北非和亚洲国家。 +* 第二组包括亚洲国家和几个非洲国家。 +* 第三组包括南美洲南部的国家。 +* 聚类4包含所有北美国家以及南美北部国家。 +* 第5组包括大洋洲和几个亚洲国家 +* 第6组包括所有其余的非洲国家。 -从数据来看,似乎不同组之间的发病率略有不同,在华丽的饮食和区域性饮食中出现更多代谢综合征病例——这正是结果较差的饮食。假设我们有兴趣测试两组之间的代谢综合征发生率是否有显著差异,因为这可能使我们担心这些差异可能会影响饮食结果。 +虽然在这个例子中我们知道实际的聚类(即世界的大陆),但一般来说,我们实际上不知道无监督学习问题的基本事实,所以我们只能相信聚类方法已经在数据中找到了有用的结构。然而,关于K-means聚类和迭代过程的一个要点是,它们不能保证每次运行时都给出相同的答案。使用随机数来确定起点意味着起点每次都可能不同,并且根据数据,这有时会导致找到不同的解决方案。对于这个例子,K-means聚类有时会找到包含北美和南美的单个聚类,有时会找到两个聚类(就像这里使用的随机种子的特定选择一样)。每当使用涉及迭代解决方案的方法时,使用不同的随机种子多次重新运行该方法是很重要的,以确保运行之间的答案不会相差太大。如果是这样,那么我们应该避免根据不稳定的结果做出强有力的结论。事实上,在更普遍的聚类结果的基础上避免强有力的结论可能是一个好主意;它们主要用于直观地了解数据集中可能存在的结构。 -## +![A visualization of the clustering results from 10 runs of the K-means clustering algorithm with K=3\. Each row in the figure represents a different run of the clustering algorithm (with different random starting points), and variables sharing the same color are members of the same cluster.](../media/file90.png) -## 16.1.8.1 确定适当的模型 +图16.6:K = 3的K均值聚类算法的10次运行的聚类结果的可视化。图中的每一行代表聚类算法的不同运行(具有不同的随机起点),共享相同颜色的变量是同一聚类的成员。 -* 什么样的因变量? -* 比例 -* 我们在比较什么? -* 四个饮食组与代谢综合征的比例 -* 拟合优度的卡方检验适用于零差假设。 +我们可以将K-means聚类应用于自控变量,以确定哪些变量彼此关系最密切。对于K=2,K-means算法始终挑选出一个包含SSRT变量的聚类和一个包含冲动性变量的聚类。K值越高,结果越不一致;例如,当K=3时,该算法有时会识别出仅包含UPPS感觉寻求变量的第三个聚类,而在其他情况下,它会将SSRT变量分成两个独立的聚类(如图 [16.6](#fig:kmeansSro) 所示)。K=2的聚类的稳定性表明,这可能是这些数据的最稳健的聚类,但这些结果也突出了多次运行算法以确定任何特定聚类结果是否稳定的重要性。 -让我们使用`chisq.test()`函数计算该统计: +
-```r -chisq.test(summaryDf$nMetSym,summaryDf$nNoMetSym) -``` +
+ +### 16.3.2 层次聚类 + +检查多变量数据集结构的另一种有用方法称为*层次聚类*。这种技术也使用数据点之间的距离来确定聚类,但它也提供了一种以树状结构(称为*树状图*)来可视化数据点之间关系的方法。 + +最常用的层次聚类过程被称为*凝聚聚类*。该过程首先将每个数据点视为其自己的聚类,然后通过组合两个聚类之间距离最小的两个聚类来逐步创建新的聚类。它继续这样做,直到只剩下一个集群。这需要计算集群之间的距离,有许多方法可以做到这一点;在本例中,我们将使用*平均关联*方法,该方法简单地取两个聚类中每个数据点之间所有距离的平均值。例如,我们将检查上述自控变量之间的关系。 + +![A dendrogram depicting the relative similarity of the nine self-control variables. The three colored vertical lines represent three different cutoffs, resulting in either two (blue line), three (green line), or four (red line) clusters.](../media/file91.png) + +图16.7:描述九个自控变量相对相似性的树状图。三条彩色垂直线代表三个不同的截止点,产生两个(蓝线)、三个(绿线)或四个(红线)聚类。 + +图 [16.7](#fig:dendro) 显示了自调节数据集生成的树状图。这里我们看到,变量之间的关系是有结构的,可以通过“切割”树来创建不同数量的集群,从而在不同的级别上理解:如果我们以25°切割树,我们会得到两个集群;如果我们在20度切割它,我们得到三个集群,在19度我们得到四个集群。 + +有趣的是,通过自身对照数据的分层聚类分析发现的解决方案与在大多数K-means聚类运行中发现的解决方案是相同的,这是令人欣慰的。 + +我们对此分析的解释是,与变量集之间相比,每个变量集(SSRT和UPPS)内部都有高度的相似性。在UPPS变量中,感觉寻求变量似乎独立于其他变量,而其他变量彼此更加相似。在SSRT变量中,刺激选择性SSRT变量似乎不同于其他三个更相似的变量。这些是可以从聚类分析中得出的结论。再次重要的是指出不存在单一的“正确的”集群数量;不同的方法依赖于不同的假设或启发,可以给出不同的结果和解释。一般来说,最好在几个不同的级别上呈现数据集群,并确保这不会显著改变数据的解释。 + +
+ +
+ +
+ +## 16.4 降维 + +多变量数据的情况通常是,许多变量彼此高度相似,因此它们在很大程度上测量的是同一事物。思考这个问题的一种方式是,虽然数据有特定数量的变量,我们称之为其*维度*,但实际上,潜在的信息来源并没有变量那么多。*降维*背后的想法是减少变量的数量,以创建反映数据中潜在信号的复合变量。 + +
+ +### 16.4.1 主成分分析 + +主成分分析背后的思想是找到一组变量的低维描述,该描述说明了完整数据集中最大可能的信息量。深入理解主成分分析需要对线性代数有所了解,这不在本书范围内;请参阅本章末尾的参考资料,获取有关该主题的有用指南。在这一节中,我将概述这个概念,希望能激起你学习更多的兴趣。 + +我们将从一个只有两个变量的简单例子开始,以便直观地了解它是如何工作的。首先,我们为变量X和Y生成一些合成数据,这两个变量之间的相关性为0.7。主成分分析的目标是找到数据集中观察变量的线性组合,它将解释最大的方差;这里的想法是,数据中的方差是信号和噪声的组合,我们希望找到变量之间最强的共同信号。第一个主成分是解释最大方差的组合。第二个分量解释了最大剩余方差,同时也与第一个分量无关。有了更多的变量,我们可以继续这个过程,以获得与变量一样多的分量(假设观测值多于变量),尽管在实践中,我们通常希望找到少量的分量来解释大部分的方差。 + +在我们的二维例子中,我们可以计算主成分,并将它们绘制在数据上(图 [16.8](#fig:pcaPlot) )。我们看到的是,第一个主成分(显示为绿色)遵循最大方差的方向。这条线与线性回归线相似,但不完全相同;当线性回归解决方案最小化在相同X值的每个数据点和回归线之间的距离(即垂直距离)时,主成分最小化数据点和表示该成分的线之间的欧几里德距离(即垂直于该成分的距离)。第二个分量指向与第一个分量垂直的方向(相当于不相关)。 + +![A plot of synthetic data, with the first principal component plotted in green and the second in red.](../media/file92.png) + +图16.8:合成数据图,第一个主成分标为绿色,第二个标为红色。 + +通常使用主成分分析来降低更复杂数据集的维数。例如,假设我们想知道早期数据集中所有四个停止信号任务变量的表现是否与五个冲动性调查变量相关。我们可以分别对这些数据集执行PCA,并检查数据中有多少方差是由第一主成分解释的,这将作为我们对数据的总结。 + +![A plot of the variance accounted for (or *scree plot*) for PCA applied separately to the response inhibition and impulsivity variables from the Eisenberg dataset.](../media/file93.png) + +图16.9:五氯苯甲醚的方差图(或 *scree图*)分别应用于艾森伯格数据集的反应抑制和冲动性变量。 + +我们在图 [16.9](#fig:VAF) 中看到,对于停止信号变量,第一主成分约占数据方差的60%,而对于UPPS,它约占方差的55%。然后,我们可以计算使用第一个主成分从每组变量获得的分数之间的相关性,以确定两组变量之间是否存在关系。两个汇总变量之间的相关性为-0.014,表明在该数据集中,反应抑制和冲动性之间没有总体关系。 -```r +``` ## -## Pearson's Chi-squared test +## Pearson's product-moment correlation ## -## data: summaryDf$nMetSym and summaryDf$nNoMetSym -## X-squared = 10, df = 9, p-value = 0.2 +## data: pca_df$SSRT and pca_df$UPPS +## t = -0.3, df = 327, p-value = 0.8 +## alternative hypothesis: true correlation is not equal to 0 +## 95 percent confidence interval: +## -0.123 0.093 +## sample estimates: +## cor +## -0.015 ``` -这项测试表明,平均值之间没有显著差异。然而,它并没有告诉我们有多确定我们是没有区别的;记住,在 NHST 下,我们总是在假设无效为真的前提下工作,除非数据向我们展示足够的证据,使我们拒绝这个无效假设。 +我们也可以一次对所有这些变量进行主成分分析。查看图 [16.7](#fig:dendro) 中的方差图(也称为*scree图),我们可以看到前两个分量占数据中方差的很大一部分。然后,我们可以查看这两个组件上每个单独变量的负载,以了解每个特定变量如何与不同的组件相关联。 -如果我们想要量化支持或反对空值的证据呢?我们可以使用贝叶斯因子来实现这一点。 +![Plot of variance accounted for by PCA components computed on the full set of self-control variables.](../media/file94.png) -```r -bf <- contingencyTableBF(as.matrix(summaryDf[,9:10]), - sampleType = "indepMulti", - fixedMargin = "cols") -bf -``` +(#fig:imp_pc_scree)根据全套自控变量计算的PCA成分的方差图。 + +![Plot of variable loadings in PCA solution including all self-control variables. Each variable is shown in terms of its loadings on each of the two components; reflected in the two rows respectively.](../media/file95.png) + +图16.10:包含所有自控变量的PCA溶液中的可变负荷图。每个变量都以其在两个分量上的载荷来表示;分别反映在两排。 + +对冲动性数据集(图 [16.10](#fig:pcaVarPlot) )这样做,我们看到第一个分量(在图的第一行)对大多数UPPS变量具有非零载荷,对每个SSRT变量几乎为零载荷,而第二个主分量则相反,它主要加载SSRT变量。这告诉我们,第一主成分主要捕获与冲动性测量相关的方差,而第二主成分主要捕获与反应抑制测量相关的方差。你可能会注意到,对于这些变量中的大多数,载荷实际上是负的;载荷的符号是任意的,所以我们应该确保看到大的正负载荷。 + +
+ +
+ +### 16.4.2 因素分析 + +虽然主成分分析可用于将数据集减少到较少数量的复合变量,但PCA的标准方法有一些局限性。最重要的是,它确保组件是不相关的;虽然这有时很有用,但在很多情况下,我们希望提取可能相互关联的维度。第二个限制是PCA不考虑被分析变量的测量误差,这会导致难以解释部件上的最终载荷。虽然PCA的修改可以解决这些问题,但在一些领域(如心理学)更常见的是使用一种称为*探索性因子分析*(或EFA)的技术来降低数据集的维度。 [1](#fn1) + +全民教育背后的想法是,每个观察到的变量都是通过一组潜在变量(即无法直接观察到的变量)的贡献组合而成的,同时每个变量都有一定的测量误差。出于这个原因,全民教育模型通常被称为属于一类被称为*潜在变量模型*的统计模型。 + +例如,假设我们想要了解几个不同变量的度量与产生这些度量的潜在因素之间的关系。我们将首先生成一个合成数据集来展示这可能是如何工作的。我们将产生一组个体,我们将对他们假装我们知道几个潜在的心理变量的值:冲动性、工作记忆能力和流畅的推理。我们将假设工作记忆能力和流畅的推理是相互关联的,但两者都不与冲动性相关。然后,我们将从这些潜在变量中为每个个体生成一组八个观察变量,这些变量是潜在变量与随机噪声的简单线性组合,随机噪声用于模拟测量误差。 + +我们可以通过显示与所有这些变量相关的关联矩阵的热图来进一步检查数据(图 [16.7](#fig:dendro) )。我们由此看到,有三组变量对应我们的三个潜变量,这是理所应当的。 + +![A heatmap showing the correlations between the variables generated from the three underlying latent variables.](../media/file96.png) -```r -## Bayes factor analysis -## -------------- -## [1] Non-indep. (a=1) : 0.058 ±0% +(#fig:efa_cor_hmap)热图显示了从三个潜在变量生成的变量之间的相关性。 + +我们可以认为EFA是一次性估计一组线性模型的参数,其中每个模型将每个观察变量与潜在变量相关联。对于我们的例子,这些方程看起来如下。在这些等式中,\ beta字符有两个下标,一个表示任务,另一个表示潜在变量,还有一个变量【ϵ】表示误差。这里我们将假设一切都有一个零均值,所以我们不需要为每个方程包括一个额外的截距项。 + +nback=beta[1,1]*WM+β[1,2]*FR+β[1,3]*IMP+ϵdspan=beta[2,1]*WM+β[2,2]*FR+β[2,3]*IMP+ϵospan=beta[3,1]*WM+β[3,2]*FR+β[3,3]*IMP+ϵravens=beta[4,1]*WM+β[4,2]*FR+β[4,3]*IMP+ϵcrt=beta[5,1]*WM+β[5,2]*FR+β[5,3]*IMP+ϵUPPS=beta[6,1]*WM+β[6,2]*FR+β[6,3]*IMP+ϵBIS11=beta[7,1]*WM+β[7,2]*FR+β[7,3]*IMP+ϵdickman=beta[8,1]*WM+β[8,2]*FR+β[8,3]*IMP+ϵ \begin{array}{lcl} nback & = &beta_{[1, 1]} * WM + \beta_{[1, 2]} * FR + \beta_{[1, 3]} * IMP + \epsilon \\ dspan & = &beta_{[2, 1]} * WM + \beta_{[2, 2]} * FR + \beta_{[2, 3]} * IMP + \epsilon \\ ospan & = &beta_{[3, 1]} * WM + \beta_{[3, 2]} * FR + \beta_{[3, 3]} * IMP + \epsilon \\ ravens & = &beta_{[4, 1]} * WM + \beta_{[4, 2]} * FR + \beta_{[4, 3]} * IMP + \epsilon \\ crt & = &beta_{[5, 1]} * WM + \beta_{[5, 2]} * FR + \beta_{[5, 3]} * IMP + \epsilon \\ UPPS & = &beta_{[6, 1]} * WM + \beta_{[6, 2]} * FR + \beta_{[6, 3]} * IMP + \epsilon \\ BIS11 & = &beta_{[7, 1]} * WM + \beta_{[7, 2]} * FR + \beta_{[7, 3]} * IMP + \epsilon \\ dickman & = &beta_{[8, 1]} * WM + \beta_{[8, 2]} * FR + \beta_{[8, 3]} * IMP + \epsilon \\ \end{array} + +实际上,我们使用EFA想要做的是估计系数(betas)的*矩阵*,该矩阵将潜在变量映射到观察变量。对于我们正在生成的数据,我们知道这个矩阵中的大多数贝塔系数为零,因为我们是这样创建它们的;对于每个任务,只有一个权重设置为1,这意味着每个任务是单个潜在变量的有噪声的测量。 + +我们可以将EFA应用于我们的合成数据集来估计这些参数。除了提到重要的一点之外,我们不会详细讨论全民教育实际上是如何实施的。本书中之前的大多数分析都依赖于试图最小化观测数据值和模型预测值之间差异的方法。用于估计EFA参数的方法试图最小化观察变量间的观察到的*协方差*和模型参数隐含的协方差之间的差异。为此,这些方法通常被称为*协方差结构模型*。 + +让我们对我们的综合数据进行探索性因素分析。与聚类方法一样,我们需要首先确定我们想要在模型中包含多少潜在因素。在这种情况下,我们知道有三个因素,所以让我们从这一点开始;稍后,我们将研究直接从数据中估计因子数量的方法。这是我们的统计软件对此模型的输出: + +``` +## +## Factor analysis with Call: fa(r = observed_df, nfactors = 3) +## +## Test of the hypothesis that 3 factors are sufficient. +## The degrees of freedom for the model is 7 and the objective function was 0.04 +## The number of observations was 200 with Chi Square = 8 with prob < 0.34 ## -## Against denominator: -## Null, independence, a = 1 -## --- -## Bayes factor type: BFcontingencyTable, independent multinomial +## The root mean square of the residuals (RMSA) is 0.01 +## The df corrected root mean square of the residuals is 0.03 +## +## Tucker Lewis Index of factoring reliability = 0.99 +## RMSEA index = 0.026 and the 10 % confidence intervals are 0 0.094 +## BIC = -29 +## With factor correlations of +## MR1 MR2 MR3 +## MR1 1.00 0.03 0.47 +## MR2 0.03 1.00 0.03 +## MR3 0.47 0.03 1.00 ``` -这表明,假设的概率比假设的概率高 0.058 倍,这意味着假设的概率比假设的概率高 1/0.058~17 倍。这是相当有力的证据,即使不是完全压倒性的证据。 +我们想问的一个问题是,我们的模型实际上有多符合数据。这个问题没有单一的答案;相反,研究人员开发了许多不同的方法,为模型与数据的拟合程度提供了一些见解。例如,一个常用的标准是基于近似的 (RMSEA)统计的*均方根误差,其量化了预测的协方差与实际协方差有多远;小于0.08的RMSEA值通常被认为反映了充分适合的模型。在这里的例子中,RMSEA值是0.026,这表明模型非常适合。* + +我们还可以检查参数估计,以查看模型是否恰当地识别了数据中的结构。通常将其绘制成图表,从潜在变量(表示为椭圆)指向观察变量(表示为矩形),其中箭头表示潜在变量上观察变量的实际负载;这种图形通常被称为*路径图*,因为它反映了与变量相关的路径。如图 [16.11](#fig:faDiagram) 所示。在这种情况下,EFA程序正确地识别了数据中存在的结构,既识别了哪些观察变量与每个潜在变量相关,又识别了潜在变量之间的相关性。 + +![Path diagram for the exploratory factor analysis model.](../media/file97.png) + +图16.11:探索性因素分析模型的路径图。 + +
+ +
+ +### 16.4.3 确定因素的数量 + +应用全民教育的主要挑战之一是确定因素的数量。一种常见的方法是在改变因素数量的同时检查模型的拟合度,然后选择给出最佳拟合度的模型。这不是万无一失的,有多种方法可以量化模型的拟合度,有时会给出不同的答案。 + +有人可能会认为,我们可以简单地看看模型的拟合程度,然后挑选出最拟合的因素数量,但这是行不通的,因为更复杂的模型总是会更好地拟合数据(正如我们在前面关于过度拟合的讨论中看到的)。出于这个原因,我们需要使用一个模型拟合的度量标准,它对模型中的参数数量进行惩罚。出于这个例子的目的,我们将选择一种用于量化模型拟合的常用方法,它被称为*样本大小调整贝叶斯信息标准*(或 *SABIC* )。这种方法量化了模型与数据的拟合程度,同时还考虑了模型中的参数数量(在这种情况下与因子数量相关)以及样本大小。虽然SABIC的绝对值是不可解释的,但当使用相同的数据和相同类型的模型时,我们可以使用SABIC来比较模型,以确定哪个模型最适合该数据。关于SABIC和类似的其他指标(被称为*信息标准*)需要知道的一件重要事情是,较低的值代表模型更好的拟合,因此在这种情况下,我们希望找到具有最低SABIC的因子的数量。在图 [16.12](#fig:sabicPlot) 中,我们看到具有最低SABIC的模型有三个因子,这表明这种方法能够准确地确定用于生成数据的因子的数量。 + +![Plot of SABIC for varying numbers of factors.](../media/file98.png) + +图16.12:不同因素的SABIC图。 + +现在,让我们看看当我们将该模型应用于来自Eisenberg等人的数据集的真实数据时会发生什么,该数据集包含在上述示例中模拟的所有八个变量的测量值。对于这些真实数据,具有三个因素的模型也具有最低的SABIC。 + +![Path diagram for the three-factor model on the Eisenberg et al. data.](../media/file99.png) + +图16.13:艾森伯格等人数据的三因素模型的路径图。 + +绘制路径图(图 [16.13](#fig:faDiagramSro) )我们看到,真实数据展示了一个与模拟数据非常相似的因素结构。这并不奇怪,因为模拟数据是基于对这些不同任务的了解而生成的,但令人欣慰的是,人类行为足够系统化,我们可以可靠地识别这些类型的关系。主要区别在于工作记忆因子(MR3)和流畅推理因子(MR1)之间的相关性甚至比模拟数据中的更高。这一结果在科学上是有用的,因为它向我们表明,虽然工作记忆和流畅推理密切相关,但将它们分开建模是有用的。 + +
+ +
+ +
+ +## 16.5 学习目标 + +阅读完本章后,您应该能够: + +* 描述监督学习和非监督学习的区别。 +* 采用包括热图在内的可视化技术来可视化多元数据的结构。 +* 理解聚类的概念以及如何用它来识别数据中的结构。 +* 理解降维的概念。 +* 描述如何使用主成分分析和因子分析进行降维。 + +
+ +
+ +## 16.6 建议读数 + +* 托马斯·威肯斯的《多元统计的几何学》 +* 伊凡·萨沃夫所著的《线性代数指南》 + +
+ +
-## +
-## 16.1.8.2 解决模型中的混淆问题 +* * * -我们通常使用随机分配治疗(如 Gardner 等人是的),因为我们认为,平均而言,它将阻止其他变量(我们称之为 _ 混淆 _)对结果的影响。然而,正如我们在本例中看到的,在任何特定的研究中,可能会出现随机发生的混淆。重要的是要确保条件之间的差异不是由于存在代谢综合征的组之间的差异造成的,为此,我们可以在我们的统计模型中包括代谢综合征变量。通过这样做,任何与代谢综合征相关的变异都将从饮食的影响中消除,这样我们就可以更清楚地测量饮食的影响。 +1. 因子分析的另一个应用被称为*验证性因子分析*(或CFA),我们在此不做讨论;在实践中,它的应用可能会有问题,最近的工作已经开始转向修改全民教育,可以回答经常使用综合行动框架解决的问题。 ( [**马什:2014?**](#ref-Marsh:2014th) ) [↩︎](#fnref1) -在这种情况下,我们没有原始数据,因此无法直接测试它。如果我们有原始数据,我们可以在我们的模型中包括代谢综合征变量,看看饮食和体重减轻之间的关系是否仍然有效;如果确实如此,那么我们可以更加确信,这种关系不是由代谢综合征的任何差异所驱动的。 \ No newline at end of file +
\ No newline at end of file diff --git a/docs/17.md b/docs/17.md index 532cb4afd054bc580c09679ffd8ff04ec1c1222d..3376bb65648de846630328e64fdda9b1d41df3ba 100644 --- a/docs/17.md +++ b/docs/17.md @@ -1,176 +1,221 @@ -# 十七、做重复性研究 +
-大多数人认为科学是回答世界问题的可靠方法。当我们的医生开出治疗处方时,我们相信通过研究已经证明它是有效的,我们也有类似的信念,即我们乘坐的飞机不会从天上掉下来。然而,自 2005 年以来,人们越来越担心科学可能不会一直像我们长久以来认为的那样有效。在本章中,我们将讨论这些关于科学研究再现性的问题,并概述可以采取的步骤,以确保我们的统计结果尽可能具有再现性。 +# 17 实用统计建模 -## 17.1 我们认为科学应该如何运作 +在这一章中,我们将把我们所学的知识运用到一个实际的例子中。2007年,Christopher Gardner和来自Stanford的同事在美国医学协会杂志上发表了一项名为“Atkins,Zone,Ornish和LEARN饮食对绝经前超重妇女体重变化和相关风险因素的比较——A到Z减肥研究:随机试验”的研究 ( [Gardner等人,2007年](ch020.xhtml#ref-gard:kiaz:alha:2007) ) 。我们将通过这项研究来展示如何从头到尾分析一个实验数据集。 -假设我们对一个关于孩子如何选择吃什么的研究项目感兴趣。这是著名的饮食研究者布莱恩·万辛克和他的同事在 2012 年的一项研究中提出的一个问题。标准(正如我们将看到的,有些幼稚)的观点是这样的: +
-* 你从一个假设开始 -* 用流行人物做品牌应该能让孩子们更频繁地选择“健康”食品。 -* 你收集了一些数据 -* 让孩子们在饼干和苹果之间做出选择,要么贴上 Elmo 品牌的标签,要么贴上控制标签,并记录下他们的选择。 -* 你做统计来检验无效假设 -* “预先计划的比较显示,Elmo 品牌的苹果与儿童选择苹果的比例从 20.7%增加到 33.8%(htg0=5.158;p=0.02)”(Wansink、Just 和 Payne 2012) -* 你根据这些数据得出结论*“这项研究表明,使用品牌或吸引人的品牌特征可能比使用放纵的、经过高度加工的食品更有益于健康的食品。正如吸引人的名字已经被证明可以增加学校午餐室对健康食品的选择一样,品牌和卡通人物对幼儿也有同样的作用。”(Wansink,Just 和 Payne 2012) +## 17.1 统计建模的过程 -## 17.2 科学(有时)是如何工作的 +当我们想要使用我们的统计模型来检验一个科学假设时,我们通常会经历一系列步骤: -布莱恩·万辛克以他的《无意识饮食》一书而闻名,他参加公司演讲会的费用是几万美元。2017 年,一组研究人员开始仔细研究他发表的一些研究,从一组关于人们在自助餐厅吃多少比萨饼的论文开始。研究人员要求 Wansink 分享这些研究的数据,但他拒绝了,所以他们仔细研究了他的论文,发现论文中存在大量的不一致和统计问题。围绕这一分析的宣传导致了其他一些人深入研究了 Wansink 的过去,包括在 Wansink 和他的合作者之间获取电子邮件。正如 Stephanie Lee 在 BuzzFeed 上报道的那样,这些电子邮件显示了 Wansink 的实际研究实践与幼稚模型的差距: +1. 请具体说明您感兴趣的问题 +2. 识别或收集适当的数据 +3. 为分析准备数据 +4. 确定合适的型号 +5. 使模型符合数据 +6. 批评模型以确保它合适 +7. 测试假设并量化影响大小 -> …早在 2008 年 9 月,佩恩在收集数据后不久就开始查看数据,但他没有发现任何强大的苹果和埃尔莫链接——至少目前还没有。……佩恩在给他的合作者的信中说:“我已经把孩子研究的一些初步结果附在这封信上,以供你的报告。”“不要绝望。看起来水果上的贴纸可能会起作用(用更多的魔法)。Wansink 也承认这篇论文很差,因为他正准备将其提交给期刊。P 值为 0.06,略低于黄金标准 0.05 的临界值。正如他在 2012 年 1 月 7 日的一封电子邮件中所说,这是一个“症结”。……“在我看来应该更低,”他写道,并附上了一份草案。“你想看看它,看看你的想法吗?如果你能得到数据,它需要一些镊子,最好是得到低于 0.05 的一个值。2012 年晚些时候,这项研究出现在久负盛名的牙买加儿科,0.06 p 值完好无损。但在 2017 年 9 月,它被收回并替换为一个版本,该版本的 p 值为 0.02。一个月后,它又被收回了,原因完全不同:Wansink 承认,这项实验并没有像他最初声称的那样在 8 到 11 岁的孩子身上进行,而是在学龄前儿童身上进行。 +
-这种行为最终赶上了 Wansink;[他的 15 项研究被撤回](https://www.vox.com/science-and-health/2018/9/19/17879102/brian-wansink-cornell-food-brand-lab-retractions-jama),2018 年他辞去了康奈尔大学的教职。 +### 17.1.1 1:说明您感兴趣的问题 -## 17.3 科学中的再现性危机 +根据作者的说法,他们研究的目标是: -人们可能希望布莱恩·万辛克是一个罕见的异类,但越来越清楚的是,在科学中,再现性问题比以前想象的要普遍得多。这一点在 2015 年变得清晰起来,当时一大群研究人员在名为“评估心理科学的再现性”的杂志 _Science_ 上发表了一项研究(开放科学合作 2015)。在这项研究中,研究者们选取了 100 项已发表的心理学研究成果,并试图复制论文最初报道的结果。他们的发现令人震惊:尽管 97%的原始论文报告了具有统计学意义的发现,但在复制研究中只有 37%的这些影响具有统计学意义。尽管心理学中的这些问题受到了广泛关注,但它们似乎存在于几乎所有科学领域,从癌症生物学(Errington 等人 2014 年)和化学(Baker 2017 年)到经济学(Christensen 和 Miguel 2016 年)和社会科学(Camerer 等人 2018 年)。 +> 比较代表从低到高碳水化合物摄入范围的4种减肥食谱对减肥和相关代谢变量的影响。 -2010 年之后出现的再现性危机实际上是由斯坦福大学的一位医生约翰·伊奥尼迪斯预测的,他在 2005 年写了一篇题为“为什么大多数发表的研究结果都是错误的”(伊奥尼迪斯,2005 年)的论文。在本文中,伊奥尼迪斯认为,在现代科学的背景下使用零假设统计检验必然会导致高水平的错误结果。 +
-# +
-## 17.3.1 阳性预测值及统计意义 +### 17.1.2 2:识别或收集适当的数据 -ioannidis 的分析侧重于一个被称为 _ 阳性预测值 _ 的概念,定义为阳性结果(通常翻译为“统计显著结果”)的比例,这是正确的: +为了回答他们的问题,研究人员将311名超重/肥胖女性随机分配到四种不同饮食中的一种(阿特金斯、Zone、Ornish或LEARN),并随着时间的推移测量她们的体重和许多其他健康指标。作者记录了大量的变量,但对于感兴趣的主要问题,让我们专注于一个变量:身体质量指数(身体质量指数)。此外,由于我们的目标是测量身体质量指数的持久变化,我们将只关注饮食开始后12个月的测量。 -![](img/0df713adef653ad0c4cdfe16ae1b35b4.jpg) +
-假设我们知道我们的假设是正确的概率(![](img/49a70b558c8f0b5046d140d7520f8780.jpg)),那么一个真正的正结果的概率就是![](img/49a70b558c8f0b5046d140d7520f8780.jpg)乘以研究的统计能力: +
-![](img/dde51223a9c7d44ac8a744da6fbb7538.jpg) +### 17.1.3 3:准备用于分析的数据 -were![](img/50705df736e9a7919e768cf8c4e4f794.jpg)为假阴性率。假阳性结果的概率由![](img/49a70b558c8f0b5046d140d7520f8780.jpg)和假阳性率![](img/82005cc2e0087e2a52c7e43df4a19a00.jpg)决定: +![Box plots for each condition, with the 50th percentile (i.e the median) shown as a black line for each group.](../media/file100.png) -![](img/885abff2d188d055f0e3777842da63c2.jpg) +图17.1:每种情况下的箱线图,第50个百分位数(即中位数)显示为每组的黑线。 -PPV 的定义如下: +从A到Z研究的实际数据是不公开的,所以我们将使用他们论文中报告的汇总数据来生成一些合成数据,这些数据大致与他们研究中获得的数据相匹配,每组的均值和标准差都相同。一旦我们有了数据,我们可以将它们可视化,以确保没有异常值。箱线图有助于观察分布的形状,如图 [17.1](#fig:AtoZBMIChangeDensity) 所示。这些数据看起来相当合理——在单个组中有几个异常值(由方框图外的点表示),但对于其他组来说,它们似乎并不极端。我们还可以看到,这些分布的方差似乎有点不同,阿特金斯比其他人显示出更大的可变性。这意味着任何假设组间方差相等的分析都可能是不合适的。幸运的是,我们计划使用的方差分析模型对此相当稳健。 -![](img/335982a922e0209345ab864a3b75f57e.jpg) +
-我们先举一个例子,假设为真的概率很高,比如说 0.8——但是请注意,一般来说,我们不能真正知道这个概率。假设我们使用标准值![](img/ce71e9ccc9f7b0f4bdf7302eed1c0dc1.jpg)和![](img/5224faaa8f34ea50bb8db3d4c2e6c0a4.jpg)进行研究。我们可以将 ppv 计算为: +
-![](img/333f6e97e318323e406e54f8e474bbbe.jpg) +### 17.1.4 4。确定合适的型号 -这意味着,如果我们在一项假设很可能是真实的、权力很高的研究中发现一个积极的结果,那么它成为真实的可能性很高。然而,请注意,假设具有如此高的真实可能性的研究领域可能不是一个非常有趣的研究领域;当研究告诉我们一些新的东西时,它是最重要的! +为了给我们的分析确定合适的统计模型,我们需要问几个问题。 -让我们对一个字段进行相同的分析,其中![](img/7ed9ba8f5547ac3985821966cba7d82d.jpg)——也就是说,测试的大多数假设都是错误的。在这种情况下,PPV 是: +* 什么样的因变量? + * 身体质量指数:连续,大致正态分布 +* 我们在比较什么? + * 四个饮食组的平均身体质量指数 + * 方差分析是合适的 +* 观察是独立的吗? + * 随机分配应确保独立性假设是适当的 + * 差异分数的使用(在这种情况下是开始体重和12个月后体重之间的差异)有些争议,特别是当各组之间的起点不同时。在这种情况下,各组之间的起始权重非常相似,因此我们将使用差异分数,但一般来说,在将这种模型应用于实际数据之前,人们会希望咨询统计学家。 -![](img/a92bd32242abe2fb70d4035c8cbae9b3.jpg) +
-这意味着,在一个大多数假设都可能是错误的领域(也就是说,一个有趣的科学领域,研究人员正在测试风险假设),即使我们发现了一个积极的结果,也更可能是错误的,而不是真的!事实上,这只是我们在假设检验中讨论的基础利率效应的另一个例子——当结果不太可能出现时,几乎可以肯定的是,大多数积极的结果将是假阳性。 +
-我们可以模拟这一点,以显示 ppv 与统计功率的关系,作为假设为真的先验概率的函数(参见图[17.1](#fig:PPVsim)) +### 17.1.5 5。使模型符合数据 -![A simulation of posterior predictive value as a function of statistical power (plotted on the x axis) and prior probability of the hypothesis being true (plotted as separate lines).](img/file98.png) +让我们对身体质量指数变化进行方差分析,以比较这四种饮食。大多数统计软件会自动将一个名义变量转换成一组虚拟变量。指定统计模型的一种常见方式是使用*公式符号*,其中使用以下形式的公式指定模型: -图 17.1 后验预测值作为统计功率函数(绘制在 x 轴上)的模拟,假设的前验概率为真(绘制为单独的线)。 +因变量自变量\ text {因变量} \ sim \ text {自变量} -不幸的是,许多科学领域的统计能力仍然很低(Smaldino 和 McElreath,2016 年),这表明许多已发表的研究结果都是错误的。 +在这种情况下,我们希望将身体质量指数的变化(存储在名为 *BMIChange12Months* 的变量中)视为饮食(存储在名为*diet的变量中)的函数,因此我们使用公式: -# +【B3】【b】【m】【I】【c】【a】 -## 17.3.2 胜利者的诅咒 +大多数统计软件(包括R)会在模型包含一个名义变量时自动创建一组哑变量(比如 *diet* 变量,包含每个人接受的饮食名称)。以下是该模型与我们的数据相吻合的结果: -另一种错误也可能发生在统计能力较低的时候:我们对影响大小的估计将被夸大。这种现象经常被称为“赢家的诅咒”,它来自经济学,它指的是,对于某些类型的拍卖(每个人的价值都是一样的,就像一罐 25 美分的硬币,而竞拍是私人的),赢家几乎总是支付比好的东西更高的价格。.在科学中,赢家的诅咒是指根据重大结果(即赢家)估计的效果大小几乎总是高估真实效果大小的事实。 +``` +## +## Call: +## lm(formula = BMIChange12Months ~ diet, data = dietDf) +## +## Residuals: +## Min 1Q Median 3Q Max +## -8.14 -1.37 0.07 1.50 6.33 +## +## Coefficients: +## Estimate Std. Error t value Pr(>|t|) +## (Intercept) -1.622 0.251 -6.47 3.8e-10 *** +## dietLEARN 0.772 0.352 2.19 0.0292 * +## dietOrnish 0.932 0.356 2.62 0.0092 ** +## dietZone 1.050 0.352 2.98 0.0031 ** +## --- +## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +## +## Residual standard error: 2.2 on 307 degrees of freedom +## Multiple R-squared: 0.0338, Adjusted R-squared: 0.0243 +## F-statistic: 3.58 on 3 and 307 DF, p-value: 0.0143 +``` -我们可以对此进行模拟,以了解重要结果的估计效果大小与实际潜在效果大小之间的关系。让我们生成真实效果大小为 0.2 的数据,并在检测到显著效果的情况下估计这些结果的效果大小。图[17.2](#fig:CurseSim)显示,当功率较低时,与实际效果大小相比,显著结果的估计效果大小可能会大大膨胀。 +请注意,软件自动生成了与四种饮食中的三种相对应的虚拟变量,使得阿特金斯饮食没有虚拟变量。这意味着截距代表阿特金斯饮食组的平均值,其他三个变量模拟了每种饮食的平均值与阿特金斯饮食的平均值之间的差异。选择Atkins作为未建模的基线变量仅仅是因为它在字母顺序中是第一个。 -![A simulation of the winner's curse as a function of statistical power (x axis). The black line shows the estimated effect size, and the red dashed line shows the actual effect size. ](img/file99.png) +
-图 17.2 胜利者诅咒作为统计幂函数(x 轴)的模拟。黑线显示估计的效果大小,红色虚线显示实际的效果大小。 +
-![A histogram showing sample sizes for a number of samples from a dataset, with significant results shown in blue and non-significant results in red.](img/file100.png) +### 17.1.6 6。批评模型以确保它合适 -图 17.3 一个柱状图,显示数据集中若干样本的样本大小,显著结果以蓝色显示,非显著结果以红色显示。 +我们要做的第一件事是评论这个模型,以确保它是合适的。我们可以做的一件事是查看模型的残差。在图 [17.2](#fig:residualPlot) 中,我们绘制了按饮食分组的每个人的残差。不同条件下的残差分布没有明显的差异,我们可以继续分析。 -我们可以通过一个模拟来了解为什么会出现这种情况。在图[17.3](#fig:curseSimSingle)中,您可以看到 1000 个样本的估计效果大小的柱状图,通过测试是否具有统计意义来分隔。从图中可以清楚地看到,如果我们仅仅根据显著的结果来估计效果大小,那么我们的估计就会膨胀;只有当大多数结果都是显著的(即功率高,效果相对较大)时,我们的估计才会接近实际的效果大小。 +![Distribution of residuals for for each condition](../media/file101.png) -## 17.4 有问题的研究实践 +图17.2:每种条件下的残差分布 -美国心理协会(Darley,Zanna,and Roediger 2004)出版了一本名为《完整的学术:职业指南》的畅销书,旨在为有抱负的研究人员提供如何建立职业生涯的指导。在著名社会心理学家 DarylBem 撰写的题为“撰写实证期刊文章”的一章中,Bem 就如何撰写研究论文提出了一些建议。不幸的是,他所建议的实践存在严重的问题,并被称为 _ 有问题的研究实践 _(QRPS)。 +我们应用于线性模型的统计检验的另一个重要假设是模型的残差是正态分布的。线性模型要求*数据*呈正态分布,这是一种常见的误解,但事实并非如此;正确统计的唯一要求是残差呈正态分布。图 [17.3](#fig:diagnosticQQPlot) 的右侧面板显示了Q-Q(分位数-分位数)图,该图根据残差在正态分布中的分位数,绘制了残差与其期望值的关系。如果残差呈正态分布,那么数据点应该沿着虚线分布,在这种情况下,它看起来很好,除了在底部很明显的几个异常值,因为该模型对违反正态分布的情况也相对稳健,这些异常值相当小,我们将继续使用结果。 -> **你应该写哪篇文章?**你可以写两篇文章:(1)你计划在设计你的研究时写的文章,或(2)你已经看到结果后最有意义的文章。它们很少相同,正确答案是(2)。 +![Q-Q plot of actual residual values against theoretical residual values](../media/file102.png) -BEM 在这里提出的建议被称为 _Harking_(在结果已知后进行假设)(Kerr 1998)。这可能看起来无害,但有问题,因为它允许研究重新构建一个事后结论(我们应该用一点盐)作为先验预测(我们会有更强的信心)。从本质上讲,它允许研究人员根据事实重写他们的理论,而不是使用该理论进行预测,然后测试它们——类似于移动球门柱,以便球在任何地方移动。因此,很难推翻错误的想法,因为始终可以移动门柱来匹配数据。 +图17.3:实际残差值与理论残差值的Q-Q图 -> **分析数据**从各个角度检查数据。分别分析性别。组成新的综合指数。如果一个数据表明了一个新的假设,试着在数据的其他地方找到进一步的证据。如果您看到有趣模式的模糊痕迹,请尝试重新组织数据,使其变得更大胆。如果有你不喜欢的参与者,或是试验、观察者或是面试官给了你不正常的结果,暂时放弃他们。去钓鱼探险,寻找一些有趣的东西。不,这不是不道德的。 +
-BEM 在这里建议的是 _p-hacking_,它指的是尝试许多不同的分析,直到找到显著的结果。BEM 是正确的,如果一个人报告对数据所做的每一个分析,那么这种方法就不会是“不道德的”。然而,很少有论文讨论对数据集执行的所有分析;相反,论文通常只提供 _ 起作用的分析 _——这通常意味着他们发现了一个具有统计意义的结果。有许多不同的方法,一个人可以 p-hack: +
-* 分析每个主题后的数据,一旦 p<;.05 停止收集数据。 -* 分析许多不同的变量,但只报告具有 P<;.05 的变量。 -* 收集许多不同的实验条件,但只报告那些与 P<;.05 -* 排除参与者以获取 P<;.05 -* 转换数据以获取 P<;.05 +### 17.1.7 7。测试假设并量化影响大小 -Simmons、Nelson 和 Simonsohn(2011)的一篇著名论文表明,使用这些 P-hacking 策略可以大大提高实际的假阳性率,从而导致大量的假阳性结果。 +首先,让我们回顾一下方差分析的结果汇总,如上面的步骤5所示。显著性f检验表明饮食之间存在显著差异,但我们也应该注意到该模型实际上并没有解释数据中的太多差异;R平方值仅为0.03,表明该模型仅解释了体重减轻差异的百分之几。因此,我们不想过度解读这个结果。 -# +综合F检验的显著结果也没有告诉我们哪种饮食不同于其他饮食。通过比较不同条件下的平均值,我们可以发现更多信息。因为我们要进行几次比较,所以需要对这些比较进行校正,这需要使用一种称为Tukey方法的程序来完成,该方法由我们的统计软件实现: -## 17.4.1 ESP 或 QRP? +``` +## diet emmean SE df lower.CL upper.CL .group +## Atkins -1.62 0.251 307 -2.11 -1.13 a +## LEARN -0.85 0.247 307 -1.34 -0.36 ab +## Ornish -0.69 0.252 307 -1.19 -0.19 b +## Zone -0.57 0.247 307 -1.06 -0.08 b +## +## Confidence level used: 0.95 +## P value adjustment: tukey method for comparing a family of 4 estimates +## significance level used: alpha = 0.05 +## NOTE: Compact letter displays can be misleading +## because they show NON-findings rather than findings. +## Consider using 'pairs()', 'pwpp()', or 'pwpm()' instead. +``` -2011 年,DarylBem 发表了一篇文章(Bem2011),声称发现了超感官知觉的科学证据。文章指出: +最右边一栏中的字母显示了哪些组彼此不同,使用的方法是根据正在进行的比较次数进行调整;共享一个字母的条件彼此之间没有显著差异。这表明阿特金斯饮食法和学习饮食法彼此没有区别(因为它们共享字母a),学习饮食法、欧尼斯饮食法和区域饮食法彼此没有区别(因为它们共享字母b),但是阿特金斯饮食法不同于欧尼斯饮食法和区域饮食法(因为它们没有共享字母)。 -> 本文报告了 9 个实验,涉及 1000 多名参与者,通过“时间倒转”确定的心理效应来测试追溯影响,以便在假定的因果刺激事件发生之前获得个体的反应。…在所有 9 个实验中,psi 性能的平均效应大小(d)为 0.22,除一个实验外,所有实验都产生了统计上显著的结果。 +
-当研究人员开始研究 bem 的文章时,很明显他参与了他在上面讨论的章节中推荐的所有 qrps。正如 TalYarkoni 在[一篇博客文章中指出的那样,文章](http://www.talyarkoni.org/blog/2011/01/10/the-psychology-of-parapsychology-or-why-good-researchers-publishing-good-articles-in-good-journals-can-still-get-it-totally-wrong/): +
-* 不同研究的样本量不同 -* 不同的研究似乎被集中在一起或分开。 -* 这些研究允许许多不同的假设,还不清楚提前计划了哪些假设。 -* BEM 使用了单尾测试,即使还不清楚是否有方向性预测(因此 alpha 实际上是 0.1) -* 大多数 p 值非常接近 0.05。 -* 目前还不清楚还有多少其他的研究在进行,但没有报道。 +### 17.1.8 可能的混杂因素是什么? -## 17.5 进行重复性研究 +如果我们更仔细地看看加德纳的论文,我们会发现他们还报告了每组中有多少人被诊断患有*代谢综合征*的统计数据,这是一种以高血压、高血糖、腰部脂肪过多和胆固醇水平异常为特征的综合征,与心血管问题的风险增加有关。加德纳论文的数据在表 [17.1](#tab:metsymData) 中列出。 -在再现性危机爆发的几年里,有一个强有力的运动来开发工具来帮助保护科学研究的再现性。 +Table 17.1: Presence of metabolic syndrome in each group in the AtoZ study. +| 规定饮食 | 普通 | 代谢综合征 | +| --- | --- | --- | +| 任何组织的基层人员 | Seventy-seven | Zero point two nine | +| 学习 | Seventy-nine | Zero point two five | +| 奥尼什语 | Seventy-six | Zero point three eight | +| 地区 | Seventy-nine | Zero point three four | -# +从数据来看,似乎各组之间的比率略有不同,在Ornish和Zone饮食中有更多的代谢综合征病例——这正是结果较差的饮食。假设我们对测试各组之间代谢综合征的发生率是否有显著差异感兴趣,因为这可能会使我们担心这些差异可能会影响饮食结果的结果。 -## 17.5.1 预注册 +
-获得最大吸引力的想法之一是 _ 预注册 _,其中一个将研究的详细描述(包括所有数据分析)提交给受信任的存储库(如[开放科学框架](http://osf.io)或[aspredected.org](http://aspredicted.org))。通过在分析数据之前详细说明一个人的计划,预注册提供了更大的信心,即分析不会受到 P-Hacking 或其他可疑的研究实践的影响。 +#### 17.1.8.1确定合适的型号 -预注册的效果已经在医学临床试验中看到。2000 年,国家心脏、肺和血液研究所(NHLBI)开始要求使用[clinical trials.gov](http://clinicaltrials.gov)上的系统对所有临床试验进行预注册。这为观察研究预注册的效果提供了一个自然的实验。当 Kaplan 和 Irvin(2015)研究了随着时间推移的临床试验结果时,他们发现 2000 年后临床试验的阳性结果数量比以前减少了。虽然有许多可能的原因,但似乎在研究注册之前,研究人员能够改变他们的方法,以找到一个积极的结果,这在注册后变得更加困难。 +* 什么样的因变量? + * 比例 +* 我们在比较什么? + * 四个饮食组中患代谢综合征的比例 + * 拟合优度的卡方检验适用于无差异的零假设 -# +让我们首先使用统计软件中卡方检验函数来计算统计数据: -## 17.5.2 可复制实践 +``` +## +## Pearson's Chi-squared test +## +## data: contTable +## X-squared = 4, df = 3, p-value = 0.3 +``` -Simmons、Nelson 和 Simonsohn(2011)的论文提出了一套建议做法,以使研究更具可重复性,所有这些做法都应成为研究人员的标准: +该测试表明,平均值之间没有显著差异。然而,它并没有告诉我们有多确定没有差别;请记住,在NHST理论下,我们总是在假设零为真的情况下工作,除非数据向我们展示了足够的证据,使我们拒绝零假设。 -> * 作者必须在数据收集开始之前决定终止数据收集的规则,并在文章中报告此规则。 -> * 操作者必须为每个单元收集至少 20 个观察结果,否则将产生命令人信任服务的数据收集成成本。 -> * 作者必须列出研究中收集的所有变量。 -> * 操作者必须报告所有实验条件,包括失败的操作。 -> * 如果消除了观察结果,则操作者还必须报告统计结果(如果包括这些观察结果)。 -> * 如果分析包含协变量,则操作者必须报告分析的统计结果而不包含协变量。【htg12】【htg13】 +如果我们想量化支持或反对零的证据呢?我们可以用贝叶斯因子来做这件事。 -# +``` +## Bayes factor analysis +## -------------- +## [1] Non-indep. (a=1) : 0.058 ±0% +## +## Against denominator: +## Null, independence, a = 1 +## --- +## Bayes factor type: BFcontingencyTable, independent multinomial +``` -## 17.5.3 复制 +这向我们表明,替代假设比零假设的可能性高0.058倍,这意味着在给定这些数据的情况下,零假设比替代假设的可能性高1/0.058 ~ 17倍。这是相当有力的,如果不是完全压倒性的,支持零假设的证据。 -科学的一个标志就是复制(htg0)的思想,也就是说,其他研究人员应该能够进行相同的研究并获得相同的结果。不幸的是,正如我们在前面讨论的复制项目的结果中看到的,许多发现是不可复制的。确保研究的可复制性的最好方法是首先自己复制它;对于某些研究来说,这是不可能的,但只要有可能,就应该确保在新的样本中可以找到它。新的样本应该有足够的能量来找到感兴趣的效果大小;在许多情况下,这实际上需要比原始样本更大的样本。 +
-在复制方面记住一些事情是很重要的。首先,复制尝试失败并不一定意味着原始发现是错误的;请记住,在 80%功率的标准水平下,仍然有五分之一的机会结果是无意义的,即使有真正的效果。出于这个原因,在我们开始相信任何重要发现之前,我们通常希望看到它的多重复制。不幸的是,包括心理学在内的许多领域在过去都未能遵循这一建议,导致“教科书”的发现很可能是错误的。关于 Daryl Bem 的 ESP 研究,涉及 7 项研究的大规模复制尝试未能复制他的发现(Galak 等人 2012 年)。 +
-第二,记住,p 值并不能为我们提供一个发现复制可能性的度量。正如我们之前讨论过的,p 值是一个关于在特定的空假设下一个人的数据的可能性的陈述;它没有告诉我们关于发现实际上是真的概率的任何事情(正如我们在贝叶斯分析一章中所了解的)。为了知道复制的可能性,我们需要知道发现是真的概率,而我们通常不知道。 +
-## 17.6 进行重复性数据分析 +
-到目前为止,我们专注于在新的实验中复制其他研究人员的发现的能力,但再现性的另一个重要方面是能够根据某人自己的数据复制分析,我们称之为 _ 计算再现性。_ 这要求研究人员共享他们的数据和分析代码,这样其他研究人员就可以尝试复制结果,也可以对相同的数据测试不同的分析方法。心理学朝着开放共享代码和数据的方向发展的趋势越来越多;例如,《心理科学》杂志(HTG2)现在为共享研究材料、数据和代码以及预注册的论文提供了“徽章”。 +## 17.2 求助 -重现分析的能力是我们强烈提倡使用脚本化分析(例如那些使用 R 的分析)而不是使用“点击式”软件包的一个原因。这也是我们提倡使用免费和开源软件(如 R)而不是商业软件包的原因,商业软件包将要求其他人购买软件以复制任何分析。 +每当分析真实数据时,与训练有素的统计学家一起检查你的分析计划是有用的,因为真实数据中可能出现许多潜在的问题。事实上,在你开始这个项目之前,最好和统计学家谈谈,因为他们关于研究的设计或实施的建议可以让你在今后省去很多麻烦。大多数大学都有统计咨询办公室,为大学社团成员提供免费帮助。理解这本书的内容不会阻止你在某些时候需要他们的帮助,但它会帮助你与他们进行更明智的对话,并更好地理解他们提供的建议。 -有很多方法可以共享代码和数据。共享代码的一种常见方式是通过支持 _ 版本控制 _ 软件的网站,如[github](http://github.com)。小数据集也可以通过这些相同的站点共享;大数据集可以通过数据共享门户(如[Zenodo](https://zenodo.org/))共享,或者通过专门的门户(如[OpenNeuro](http://openneuro.org)用于神经成像数据)共享。 +
-## 17.7 结论:提高科学水平 - -每一位科学家都有责任改进他们的研究实践,以提高他们研究的再现性。重要的是要记住,研究的目的不是找到一个重要的结果;相反,它是以最真实的方式询问和回答关于自然的问题。我们的大多数假设都是错误的,我们应该对此感到欣慰,这样当我们找到一个正确的假设时,我们会对它的真实性更加自信。 - -## 17.8 阅读建议 - -* [理查德哈里斯(Richard Harris)的《僵尸:草率的科学如何创造毫无价值的治疗、粉碎希望和浪费数十亿美元》(Rigor Mortis:How Sloppy Science Creates Worless Cures,Crushes Hope,and Wasters Billiums)](https://www.amazon.com/dp/B01K3WN72C) -* [改进统计推断](https://www.coursera.org/learn/statistical-inferences)——关于如何更好地进行统计分析的在线课程,包括本章提出的许多观点。 \ No newline at end of file +
\ No newline at end of file diff --git a/docs/18.md b/docs/18.md index c204f26fc5144ce19ce89ab34ed096ca4548cf7a..81c82c7c550f58c5e3979740c53b5b6bc8963272 100644 --- a/docs/18.md +++ b/docs/18.md @@ -1,57 +1,222 @@ -# 十八、参考文献 +
-Baker, Monya. 2017\. “Reproducibility: Check Your Chemistry.” _Nature_ 548 (7668): 485–88\. doi:[10.1038/548485a](https://doi.org/10.1038/548485a). +# 18 做可重复的研究 -Bem, Daryl J. 2011\. “Feeling the Future: Experimental Evidence for Anomalous Retroactive Influences on Cognition and Affect.” _J Pers Soc Psychol_ 100 (3): 407–25\. doi:[10.1037/a0021524](https://doi.org/10.1037/a0021524). +大多数人认为科学是回答世界问题的可靠方法。当我们的医生开出一种疗法时,我们相信它已经被研究证明是有效的,我们也同样相信我们乘坐的飞机不会从天上掉下来。然而,自2005年以来,越来越多的人担心,科学可能并不总是像我们长期以来认为的那样有效。在这一章中,我们将讨论这些关于科学研究可再现性的问题,并概述确保我们的统计结果尽可能可再现的步骤。 -Breiman, Leo. 2001\. “Statistical Modeling: The Two Cultures (with Comments and a Rejoinder by the Author).” _Statist. Sci._ 16 (3). The Institute of Mathematical Statistics: 199–231\. doi:[10.1214/ss/1009213726](https://doi.org/10.1214/ss/1009213726). +
-Camerer, Colin F., Anna Dreber, Felix Holzmeister, Teck-Hua Ho, Jürgen Huber, Magnus Johannesson, Michael Kirchler, et al. 2018\. “Evaluating the Replicability of Social Science Experiments in Nature and Science Between 2010 and 2015.” _Nature Human Behaviour_ 2: 637–44. +## 我们认为科学应该如何运作 -Christensen, Garret S, and Edward Miguel. 2016\. “Transparency, Reproducibility, and the Credibility of Economics Research.” Working Paper 22989\. Working Paper Series. National Bureau of Economic Research. doi:[10.3386/w22989](https://doi.org/10.3386/w22989). +假设我们对一个关于儿童如何选择吃什么的研究项目感兴趣。这是知名饮食研究者布莱恩·万辛克及其同事在2012年的一项研究中提出的问题。标准的(我们将看到,有些天真的)观点是这样的: -Copas, J. B. 1983\. “Regression, Prediction and Shrinkage (with Discussion).” _Journal of the Royal Statistical Society, Series B: Methodological_ 45: 311–54. +* 你从一个假设开始 + * 用受欢迎的人物做品牌应该会让孩子们更经常地选择“健康”食品 +* 你收集一些数据 + * 让孩子们在贴有Elmo品牌标签或对照标签的饼干和苹果之间进行选择,并记录他们的选择 +* 你做统计来检验零假设 + * “预先计划的比较显示,Elmo品牌的苹果与儿童选择苹果而不是饼干的比例增加有关,从20.7%增加到33.8%(χ2\chi^2= 5.158;p = . 02)([Wansink,Just,and Payne 2012](ch020.xhtml#ref-wans:just:payn:2012) ) +* 你根据数据做出结论 + * “这项研究表明,使用品牌或吸引人的品牌人物对健康食品的益处可能大于对放纵的、高度加工的食品的益处。就像有吸引力的名字可以增加学校餐厅健康食品的选择一样,品牌和卡通人物也可以对幼儿产生同样的效果。 ( [万辛克刚和佩恩2012](ch020.xhtml#ref-wans:just:payn:2012) ) -Darley, John M, Mark P Zanna, and Henry L Roediger. 2004\. _The Compleat Academic: A Career Guide_. 2nd ed. Washington, DC: American Psychological Association. [http://www.loc.gov/catdir/toc/fy037/2003041830.html](http://www.loc.gov/catdir/toc/fy037/2003041830.html). +
-Dehghan, Mahshid, Andrew Mente, Xiaohe Zhang, Sumathi Swaminathan, Wei Li, Viswanathan Mohan, Romaina Iqbal, et al. 2017\. “Associations of Fats and Carbohydrate Intake with Cardiovascular Disease and Mortality in 18 Countries from Five Continents (Pure): A Prospective Cohort Study.” _Lancet_ 390 (10107): 2050–62\. doi:[10.1016/S0140-6736(17)32252-3](https://doi.org/10.1016/S0140-6736(17)32252-3). +
-Efron, Bradley. 1998\. “R. a. Fisher in the 21st Century (Invited Paper Presented at the 1996 R. a. Fisher Lecture).” _Statist. Sci._ 13 (2). The Institute of Mathematical Statistics: 95–122\. doi:[10.1214/ss/1028905930](https://doi.org/10.1214/ss/1028905930). +## 科学(有时)实际上是如何运作的 -Errington, Timothy M, Elizabeth Iorns, William Gunn, Fraser Elisabeth Tan, Joelle Lomax, and Brian A Nosek. 2014\. “An Open Investigation of the Reproducibility of Cancer Biology Research.” _Elife_ 3 (December). doi:[10.7554/eLife.04333](https://doi.org/10.7554/eLife.04333). +布莱恩·万辛克因他的《无意识饮食》一书而闻名,他在公司演讲的费用一度高达数万美元。2017年,一组研究人员开始仔细审查他发表的一些研究,从一组关于人们在自助餐吃了多少披萨的论文开始。研究人员要求Wansink分享研究数据,但他拒绝了,因此他们深入研究了他发表的论文,并在论文中发现了大量的不一致和统计问题。围绕这一分析的公开报道导致许多其他人挖掘Wansink的过去,包括获得Wansink和他的合作者之间的电子邮件。正如斯蒂芬妮·李在Buzzfeed 上报道的那样,这些电子邮件显示了Wansink的实际研究实践离天真的模型有多远: -Fisher, R.A. 1925\. _Statistical Methods for Research Workers_. Edinburgh Oliver & Boyd. +> …早在2008年9月,当佩恩在数据收集后不久查看数据时,他没有发现苹果和埃尔默之间有强有力的联系——至少目前没有。…“我已经将儿童研究的一些初步结果附在你的报告中,”佩恩给他的合作者写道。“不要绝望。看起来水果上的贴纸可能会有用(更神奇一点)。”… Wansink也承认这篇论文很薄弱,因为他正准备向期刊投稿。p值为0.06,略低于0.05的黄金标准临界值。正如他在2012年1月7日的电子邮件中所说,这是一个“症结”。…“在我看来应该更低,”他写道,并附上了一份草稿。“你要不要看一看,看看你有什么想法。如果你能得到数据,而且它需要一些调整,那么最好能得到一个低于0.05的值。”…2012年晚些时候,这项研究发表在著名的JAMA Pediatrics杂志上,p值为0.06。但在2017年9月,它被收回,并被一个列出p值为0.02的版本所取代。一个月后,它又因为一个完全不同的原因被收回:万辛克承认,该实验并没有像他最初声称的那样在8至11岁的儿童身上进行,而是在学龄前儿童身上进行。 -Galak, Jeff, Robyn A LeBoeuf, Leif D Nelson, and Joseph P Simmons. 2012\. “Correcting the Past: Failures to Replicate Psi.” _J Pers Soc Psychol_ 103 (6): 933–48\. doi:[10.1037/a0029709](https://doi.org/10.1037/a0029709). +这种行为终于赶上了万辛克;他的15项研究被撤回,2018年,他辞去了康奈尔大学的教职。 -Gardner, Christopher D, Alexandre Kiazand, Sofiya Alhassan, Soowon Kim, Randall S Stafford, Raymond R Balise, Helena C Kraemer, and Abby C King. 2007\. “Comparison of the Atkins, Zone, Ornish, and Learn Diets for Change in Weight and Related Risk Factors Among Overweight Premenopausal Women: The a to Z Weight Loss Study: A Randomized Trial.” _JAMA_ 297 (9): 969–77\. doi:[10.1001/jama.297.9.969](https://doi.org/10.1001/jama.297.9.969). +
-Ioannidis, John P A. 2005\. “Why Most Published Research Findings Are False.” _PLoS Med_ 2 (8): e124\. doi:[10.1371/journal.pmed.0020124](https://doi.org/10.1371/journal.pmed.0020124). +
-Kaplan, Robert M, and Veronica L Irvin. 2015\. “Likelihood of Null Effects of Large Nhlbi Clinical Trials Has Increased over Time.” _PLoS One_ 10 (8): e0132382\. doi:[10.1371/journal.pone.0132382](https://doi.org/10.1371/journal.pone.0132382). +## 18.3 科学中的再现性危机 -Kass, Robert E., and Adrian E. Raftery. 1995\. “Bayes Factors.” _Journal of the American Statistical Association_ 90 (430). Taylor & Francis: 773–95\. doi:[10.1080/01621459.1995.10476572](https://doi.org/10.1080/01621459.1995.10476572). +虽然我们认为Wansink案例中的欺诈行为相对罕见,但越来越清楚的是,重复性问题在科学界比以前想象的要普遍得多。这在2015年变得尤为明显,当时一大群研究人员在杂志 *Science* 上发表了一项研究,题为“估计心理科学的可重复性” ( [开放科学合作2015](ch020.xhtml#ref-open:2015) ) 。在这篇论文中,研究人员选取了100项已发表的心理学研究,并试图重现论文中最初报道的结果。他们的发现令人震惊:尽管97%的原始论文报告了具有统计学意义的发现,但在重复研究中,只有37%的效果具有统计学意义。尽管心理学中的这些问题受到了极大的关注,但它们似乎存在于几乎每个科学领域,从癌症生物学 ( [Errington等人2014](ch020.xhtml#ref-erri:iorn:gunn:2014) ) 和化学 ( [Baker 2017](ch020.xhtml#ref-bake:2017) ) 到经济学 ( [Christensen和Miguel 2016](19.html#ref-NBERw22989) ) 和社会科学 ( [Camerer等人2017)](19.html#ref-Camerer2018EvaluatingTR) -Kerr, N L. 1998\. “HARKing: Hypothesizing After the Results Are Known.” _Pers Soc Psychol Rev_ 2 (3): 196–217\. doi:[10.1207/s15327957pspr0203_4](https://doi.org/10.1207/s15327957pspr0203_4). +2010年后出现的再现性危机实际上是由约翰·约安尼迪斯预测的,他是一位来自斯坦福的医生,在2005年写了一篇题为“为什么大多数发表的研究结果都是假的”的论文。在这篇文章中,约安尼迪斯认为,在现代科学的背景下使用零假设统计测试必然会导致高水平的错误结果。 -Neyman, J. 1937\. “Outline of a Theory of Statistical Estimation Based on the Classical Theory of Probability.” _Philosophical Transactions of the Royal Society of London A: Mathematical, Physical and Engineering Sciences_ 236 (767). The Royal Society: 333–80\. doi:[10.1098/rsta.1937.0005](https://doi.org/10.1098/rsta.1937.0005). +
-Neyman, J., and K. Pearson. 1933\. “On the Problem of the Most Efficient Tests of Statistical Hypotheses.” _Philosophical Transactions of the Royal Society of London A: Mathematical, Physical and Engineering Sciences_ 231 (694-706). The Royal Society: 289–337\. doi:[10.1098/rsta.1933.0009](https://doi.org/10.1098/rsta.1933.0009). +### 18.3.1 阳性预测值和统计显著性 -Open Science Collaboration. 2015\. “PSYCHOLOGY. Estimating the Reproducibility of Psychological Science.” _Science_ 349 (6251): aac4716\. doi:[10.1126/science.aac4716](https://doi.org/10.1126/science.aac4716). +Ioannidis的分析侧重于一个被称为*阳性预测值*的概念,它被定义为真实的阳性结果(通常被翻译为“具有统计显著性的发现”)的比例: -Pesch, Beate, Benjamin Kendzia, Per Gustavsson, Karl-Heinz Jöckel, Georg Johnen, Hermann Pohlabeln, Ann Olsson, et al. 2012\. “Cigarette Smoking and Lung Cancer–relative Risk Estimates for the Major Histological Types from a Pooled Analysis of Case-Control Studies.” _Int J Cancer_ 131 (5): 1210–9\. doi:[10.1002/ijc.27339](https://doi.org/10.1002/ijc.27339). +PPV=P(truePsI )p(trepoIt+p(falseposPPV = \ frac { p(true \ positive \ result)} { p(true \ positive \ result)+p(false \ positive \ result)}假设我们知道我们的假设为真的概率(p( 那么一个真阳性结果的概率简单来说就是p(hIsTrue -Schenker, Nathaniel, and Jane F. Gentleman. 2001\. “On Judging the Significance of Differences by Examining the Overlap Between Confidence Intervals.” _The American Statistician_ 55 (3). [American Statistical Association, Taylor & Francis, Ltd.]: 182–86\. [http://www.jstor.org/stable/2685796](http://www.jstor.org/stable/2685796). +p(trueposItT27】Iver =p(hIsTre* 假阳性结果的概率由p(hIsTrue) -Simmons, Joseph P, Leif D Nelson, and Uri Simonsohn. 2011\. “False-Positive Psychology: Undisclosed Flexibility in Data Collection and Analysis Allows Presenting Anything as Significant.” _Psychol Sci_ 22 (11): 1359–66\. doi:[10.1177/0956797611417632](https://doi.org/10.1177/0956797611417632). +【p】(【f】【l13】= -Smaldino, Paul E, and Richard McElreath. 2016\. “The Natural Selection of Bad Science.” _R Soc Open Sci_ 3 (9): 160384\. doi:[10.1098/rsos.160384](https://doi.org/10.1098/rsos.160384). +PPV的定义是: -Stigler, Stephen M. 2016\. _The Seven Pillars of Statistical Wisdom_. Harvard University Press. +【p】【p】【v】=p 【I】+ -Teicholz, Nina. 2014\. _The Big Fat Surprise_. Simon & Schuster. +让我们首先举一个例子,假设为真的概率很高,比如说0.8——尽管注意,一般来说我们实际上无法知道这个概率。假设我们用α=0.05\ alpha = 0.05β=\ beta = 0.2的标准值进行一项研究。我们可以将PPV计算为: -Wakefield, A J. 1999\. “MMR Vaccination and Autism.” _Lancet_ 354 (9182): 949–50\. doi:[10.1016/S0140-6736(05)75696-8](https://doi.org/10.1016/S0140-6736(05)75696-8). +PPV=0.8*(10.20.8*+(1—T56】0.8)*0.05=0.98 然而,请注意,假设为真的可能性如此之高的研究领域可能不是一个非常有趣的研究领域;当研究告诉我们意想不到的事情时,它是最重要的! -Wansink, Brian, David R Just, and Collin R Payne. 2012\. “Can Branding Improve School Lunches?” _Arch Pediatr Adolesc Med_ 166 (10): 1–2\. doi:[10.1001/archpediatrics.2012.999](https://doi.org/10.1001/archpediatrics.2012.999). \ No newline at end of file +让我们对一个字段做同样的分析,其中p(hIsTrue【T22)=0.1p(hIsTrue)在这种情况下,PPV是: + +【p】【p】【v】=【0.1】 +(【0.1】)】 + +这意味着在一个大多数假设都可能是错误的领域(也就是说,一个有趣的科学领域,研究人员正在测试有风险的假设),即使我们发现一个积极的结果,它也更有可能是假的而不是真的!事实上,这只是我们在假设检验的背景下讨论的基础利率效应的另一个例子——当一个结果不太可能发生时,那么几乎可以肯定的是,大多数积极的结果都将是假阳性。 + +我们可以对此进行模拟,以显示PPV如何与统计功效相关,作为假设为真的先验概率的函数(见图 [18.1](#fig:PPVsim) ) + +![A simulation of posterior predictive value as a function of statistical power (plotted on the x axis) and prior probability of the hypothesis being true (plotted as separate lines).](../media/file103.png) + +图18.1:后验预测值作为统计功效(绘制在x轴上)和假设为真的先验概率(绘制为单独的线条)的函数的模拟。 + +不幸的是,在许多科学领域,统计能力仍然很低 ( [Smaldino和McElreath 2016](ch020.xhtml#ref-smal:mcel:2016) ) ,这表明许多已发表的研究结果是虚假的。 + +Jonathan Schoenfeld和John Ioannidis在一篇题为“我们吃的所有东西都与癌症有关吗?一份系统的食谱评论" ( [舍恩菲尔德和约安尼迪斯2013](ch020.xhtml#ref-scho:ioan:2013) ) 。他们检查了大量评估不同食物和癌症风险之间关系的论文,发现80%的成分与增加或降低癌症风险有关。在大多数情况下,统计证据是薄弱的,当跨研究的结果相结合,结果是无效的。 + +
+ +
+ +### 18.3.2 胜利者的诅咒 + +当统计能力较低时,还会出现另一种错误:我们对效应大小的估计会被夸大。这种现象通常被称为“赢家的诅咒”,它来自经济学,指的是这样一个事实,即对于某些类型的拍卖(价值对每个人来说都是一样的,就像一罐25美分的硬币,出价是私人的),赢家肯定会支付高于商品价值的价格。在科学中,赢家的诅咒指的是这样一个事实,即从重大结果(即赢家)估计的效应大小几乎总是对真实效应大小的高估。 + +我们可以对此进行模拟,以了解显著结果的估计效应大小与实际潜在效应大小之间的关系。让我们生成真实效应大小为d = 0.2的数据,并估计那些检测到显著效应的结果的效应大小。图 [18.2](#fig:CurseSim) 的左图显示,当功率较低时,与实际效果大小相比,显著结果的估计效果大小可能被大大夸大。 + +![Left: A simulation of the winner's curse as a function of statistical power (x axis). The solid line shows the estimated effect size, and the dotted line shows the actual effect size. Right: A histogram showing effect size estimates for a number of samples from a dataset, with significant results shown in blue and non-significant results in red. ](../media/file104.png) + +图18.2:左图:作为统计能力(x轴)函数的赢家诅咒的模拟。实线表示估计的效果大小,虚线表示实际的效果大小。右图:一个直方图,显示了数据集内多个样本的效应大小估计值,显著结果显示为蓝色,不显著结果显示为红色。 + +我们可以通过单个模拟来了解为什么会出现这种情况。在图 [18.2](#fig:CurseSim) 的右侧面板中,您可以看到1000个样本的估计效应大小的直方图,根据测试是否具有统计显著性来区分。从图中可以清楚地看出,如果我们只根据显著的结果来估计效果的大小,那么我们的估计就会被夸大;只有当大多数结果是显著的(即功率高,效应相对大)时,我们的估计才会接近实际的效应大小。 + +
+ +
+ +
+ +## 18.4 可疑的研究实践 + +一本由美国心理学协会 ( [Darley、Zanna和Roediger 2004](ch020.xhtml#ref-darl:zann:roed:2004) ) 出版的名为《完整的学术:职业指南》的畅销书,旨在为有抱负的研究人员提供如何建立职业生涯的指导。在著名社会心理学家Daryl Bem题为“撰写实证期刊文章”的一章中,Bem提供了一些关于如何撰写研究论文的建议。不幸的是,他建议的实践存在很大问题,并被称为*有问题的研究实践* (QRPs)。 + +> 你应该写哪篇文章?您可以写两篇文章:(1)您在设计研究时计划写的文章,或者(2)您看到结果后最有意义的文章。它们很少相同,正确答案是(2)。 + +贝姆在这里建议的被称为*倾听*(在结果已知后的假设) ( [克尔1998](ch020.xhtml#ref-kerr:1998) ) 。这可能看起来无伤大雅,但有问题,因为它允许研究人员将事后结论(我们应该持保留态度)重新框定为先验预测(我们会对此更有信心)。从本质上讲,它允许研究人员根据事实改写他们的理论,而不是使用理论做出预测,然后进行测试——类似于移动球门柱,使球到达任何地方。因此,消除不正确的想法变得非常困难,因为目标总是可以移动以匹配数据。贝姆继续说道: + +> **分析数据**从各个角度检查数据。分别分析性别。组成新的综合指数。如果一个数据提出了一个新的假设,试着在数据的其他地方找到进一步的证据。如果你看到有趣模式的模糊痕迹,尝试重新组织数据,使它们更加清晰。如果有你不喜欢的参与者,或者试验,观察者,或者给你异常结果的面试官,放弃他们(暂时)。为一些有趣的事情——任何事情——进行一次钓鱼探险。不,这不是不道德的。 + +Bem在这里建议的被称为 *p-hacking* ,指的是尝试许多不同的分析,直到发现一个重要的结果。贝姆是正确的,如果一个人要报告对数据进行的每一次分析,那么这种方法就不是“不道德的”。然而,很少看到论文讨论对数据集进行的所有分析;更确切地说,论文经常只呈现*起作用*的分析——这通常意味着他们发现了一个具有统计学意义的结果。有许多不同的方法可以用来破解: + +* 每次受试后分析数据,一旦p < .05,停止收集数据 +* 分析许多不同的变量,但只报告那些p < .05的变量 +* 收集许多不同的实验条件,但只报告那些p<.05/> +* 排除参与者以获得p<.05/> +* 转换数据以获得p<.05/> + +由 Simmons、Nelson和Simonsohn ( [2011](ch020.xhtml#ref-simm:nels:simo:2011) ) 撰写的一篇著名论文显示,使用这类p-hacking策略会大大增加实际的假阳性率,导致大量的假阳性结果。 + +
+ +### 18.4.1 ESP还是QRP? + +2011年,同样是达里尔·贝姆发表了一篇文章 ( [贝姆2011](ch020.xhtml#ref-bem:2011) ) ,声称发现了超感知觉的科学证据。该文章指出: + +> 这篇文章报道了9个实验,涉及1,000多名参与者,通过“时间反转”公认的心理效应来测试追溯影响,以便在假定的因果刺激事件发生之前获得个体的反应。…在所有9个实验中,psi性能的平均效应大小(d)为0.22,除一个实验外,所有实验都产生了具有统计学意义的结果。 + +随着研究人员开始检查Bem的文章,很明显他已经参与了他在上面讨论的章节中推荐的所有快速反应程序。正如Tal Yarkoni在一篇研究文章的博客文章中指出的: + +* 不同研究的样本量不同 +* 不同的研究似乎被混为一谈或割裂开来 +* 这些研究允许许多不同的假设,不清楚哪些是事先计划好的 +* 即使不清楚是否有方向预测,Bem也使用了单尾检验(所以alpha实际上是0.1) +* 大多数p值非常接近0.05 +* 目前还不清楚有多少其他研究已经进行但没有报道 + +
+ +
+ +
+ +## 18.5 进行可重复研究 + +在再现性危机出现后的几年里,出现了一个强大的运动来开发工具,以帮助保护科学研究的再现性。 + +
+ +### 18.5.1 预注册 + +获得最大牵引力的一个想法是*预注册*,其中一个人将一项研究的详细描述(包括所有数据分析)提交给一个可信的存储库(如[开放科学框架](http://osf.io)或【AsPredicted.org】T4)。通过在分析数据之前详细说明自己的计划,预注册提供了更大的信心,即分析不会受到p-hacking或其他有问题的研究实践的影响。 + +预注册在医学临床试验中的作用是惊人的。2000年,美国国家心肺血液研究所(NHLBI)开始要求所有的临床试验在ClinicalTrials.gov使用该系统进行预注册。这为观察研究预注册的效果提供了一个自然的实验。当卡普兰和欧文( [2015](ch020.xhtml#ref-kapl:irvi:2015) ) 随着时间的推移检查临床试验结果时,他们发现2000年后临床试验的阳性结果数量与之前相比大大减少。虽然有许多可能的原因,但似乎有可能在研究注册之前,研究人员能够改变他们的方法或假设,以便找到阳性结果,这在要求注册后变得更加困难。 + +
+ +
+ +### 18.5.2 可重复的实践 + +由 Simmons、Nelson和Simonsohn ( [2011](ch020.xhtml#ref-simm:nels:simo:2011) ) 撰写的论文列出了一套使研究更具可重复性的建议实践,所有这些都应该成为研究人员的标准: + +> 作者必须在数据收集开始前决定终止数据收集的规则,并在文章中报告该规则。* The author must collect at least 20 observations per cell, otherwise provide a convincing proof of data collection cost.* The author must list all variables collected in the study. The author must report all the experimental conditions, including the failed operation.* If the observations are deleted, the author must also report the statistical results if they are included.* If the analysis contains covariates, the author must report the statistical results of the analysis without covariates.T13】 + +
+ +
+ +### 18.5.3 复制 + +科学的标志之一是*复制*的理念——也就是说,其他研究人员应该能够进行相同的研究并获得相同的结果。不幸的是,正如我们在前面讨论的复制项目的结果中看到的,许多发现是不可复制的。确保一个人的研究的可复制性的最好方法是首先自己复制它;对于一些研究来说,这是不可能的,但只要有可能,就应该确保自己的发现在新的样本中成立。该新样本应该有足够的能量来找到感兴趣的效应大小;在许多情况下,这实际上需要比原来更大的样本。 + +关于复制,记住几件事很重要。首先,复制尝试失败的事实并不一定意味着最初的发现是错误的;请记住,在80%能量的标准水平下,即使真的有影响,结果仍有五分之一的可能不显著。出于这个原因,在我们决定是否相信之前,我们通常希望看到任何重要发现的多次重复。不幸的是,包括心理学在内的许多领域过去都没有遵循这个建议,导致“教科书”上的发现很可能是错误的。关于Daryl Bem对ESP的研究,一项涉及7项研究的大型复制尝试未能复制他的发现 ( [Galak et al. 2012](ch020.xhtml#ref-gala:lebo:nels:2012) ) 。 + +第二,请记住,p值并没有为我们提供一个发现复制可能性的度量。正如我们之前所讨论的,p值是在特定的零假设下关于一个人的数据的可能性的陈述;它没有告诉我们任何关于该发现实际上为真的概率(正如我们在贝叶斯分析一章中所学的)。为了知道复制的可能性,我们需要知道发现为真的概率,而我们通常不知道。 + +
+ +
+ +
+ +## 18.6 进行可再现的数据分析 + +到目前为止,我们一直专注于在新实验中复制其他研究人员发现的能力,但可重复性的另一个重要方面是能够复制某人对自己数据的分析,我们称之为*计算可重复性。*这要求研究人员共享他们的数据和分析代码,以便其他研究人员既可以尝试重现结果,也可以对相同的数据测试不同的分析方法。心理学越来越倾向于开放代码和数据共享;例如,期刊*心理科学*现在为共享研究材料、数据和代码的论文提供“徽章”,以及预注册。 + +重现分析的能力是我们强烈提倡使用脚本化分析(例如使用R的分析)而不是使用“点击式”软件包的一个原因。这也是我们提倡使用自由和开源软件(如R)而不是商业软件包的原因,商业软件包需要其他人购买软件才能复制任何分析。 + +有许多方法可以共享代码和数据。共享代码的一种常见方式是通过支持软件版本控制的网站,如T2 Github T3。小型数据集也可以通过这些相同的网站共享;更大的数据集可以通过数据共享门户共享,如[芝诺多](https://zenodo.org/),或通过特定类型数据的专门门户共享(如[神经影像数据的OpenNeuro](http://openneuro.org) )。 + +
+ +
+ +## 结论:做更好的科学 + +每个科学家都有责任改进他们的研究实践,以增加他们研究的可重复性。重要的是要记住,研究的目标不是找到一个有意义的结果;相反,它是以最真实的方式询问和回答关于自然的问题。我们的大多数假设都是错误的,我们应该坦然接受这一点,这样当我们找到一个正确的假设时,我们会对它的真实性更有信心。 + +
+ +
+ +## 18.8 学习目标 + +* 描述P-hacking的概念及其对科学实践的影响 +* 描述阳性预测值的概念及其与统计功效的关系 +* 描述预注册的概念以及它如何有助于防范可疑的研究实践 + +
+ +
+ +## 18.9 建议读数 + +* 《尸僵:草率的科学如何创造无用的疗法,粉碎希望,浪费数十亿》,作者理查德·哈里斯 +* [提高你的统计推断](https://www.coursera.org/learn/statistical-inferences) -一个关于如何做更好的统计分析的在线课程,包括本章提出的许多观点。 + +
+ +
\ No newline at end of file diff --git a/docs/2.md b/docs/2.md deleted file mode 100644 index a2cc452dcd138948c719388dd4f8f7b0c7698907..0000000000000000000000000000000000000000 --- a/docs/2.md +++ /dev/null @@ -1,185 +0,0 @@ -# 二、处理数据 - -## 2.1 什么是数据? - -关于数据的第一个重要点是数据 _ 是 _——意思是“数据”这个词是复数(尽管有些人在这一点上不同意我的观点)。你也可能想知道如何发音“data”——我说“day-tah”,但我认识许多说“dah-tah”的人,尽管如此,我仍然可以和他们保持朋友关系。现在如果我听到他们说“数据是”,那将是更大的问题… - -# - -## 2.1.1 定性数据 - -数据由 _ 变量 _ 组成,其中变量反映唯一的度量或数量。有些变量是 _ 定性的 _,这意味着它们描述的是质量而不是数字量。例如,在我的统计课程中,我通常会做一个介绍性的调查,既可以获取课堂上使用的数据,也可以了解更多关于学生的信息。我问的问题之一是“你最喜欢吃什么?”其中一些答案是:蓝莓、巧克力、玉米粉蒸肉、意大利面、披萨和芒果。这些数据本质上不是数字;我们可以为每个数据分配数字(1=蓝莓,2=巧克力等),但我们只会将数字用作标签,而不是实数;例如,在这种情况下,将数字相加是没有意义的。但是,我们通常会使用数字对定性数据进行编码,以使它们更易于使用,稍后您将看到。 - -# - -## 2.1.2 定量数据 - -在统计学中,我们更常用于 _ 定量 _ 数据,这意味着数据是数字的。例如,这里的表[2.1](#tab:WhyTakingClass)显示了我在入门课上问的另一个问题的结果,即“你为什么要上这门课?” - -Table 2.1 Counts of the prevalence of different responses to the question "Why are you taking this class?" -| 你为什么要上这门课? | 学生人数 | -| --- | --- | -| 满足学位计划要求 | 105 | -| 满足通识教育广度要求 | 32 | -| 不需要,但我对这个话题感兴趣 | 11 个 | -| 其他 | 4 | - -请注意,学生的回答是定性的,但我们通过计算每个回答的学生数得出了他们的定量总结。 - -## - -## 2.1.2.1 数字类型 - -我们在统计中处理的数字有几种不同的类型。理解这些差异很重要,部分原因是像 R 这样的编程语言经常区分它们。 - -**二进制数**。最简单的是二进制数——也就是零或一。我们经常使用二进制数字来表示某个事物是真是假,是存在还是不存在。例如,我可能会问 10 个人他们是否经历过偏头痛。如果他们的答案是: - -```r -# create variable containing responses to migraine question - -everHadMigraine <- c('Yes','No','Yes','No','No','No','Yes','No','No','No') -everHadMigraine -``` - -```r -## [1] "Yes" "No" "Yes" "No" "No" "No" "Yes" "No" "No" "No" -``` - -相反,我们可以使用==符号将这些值重新编码为真值,该符号是对相等性的测试,如果这两个值相等,则返回逻辑值“真”,否则返回“假”。 - -```r -# create truth values from everHadMigraine variable - -everHadMigraineTF <- everHadMigraine == 'Yes' -everHadMigraineTF -``` - -```r -## [1] TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE -``` - -r 同等对待真值和二进制数: - -```r -# evaluate truth of a set of assertions - -# 1 is equal to TRUE - should return TRUE -TRUE == 1 -``` - -```r -## [1] TRUE -``` - -```r -# 0 is equal to FALSE - should return TRUE -FALSE == 0 -``` - -```r -## [1] TRUE -``` - -```r -# 0 is equal to true - should return FALSE -TRUE == 0 -``` - -```r -## [1] FALSE -``` - -我们还可以将真值列表显式地转换为整数: - -```r -# create integer values from truth values using as.integer() - -everHadMigraineBinary <- as.integer(everHadMigraineTF) -everHadMigraineBinary -``` - -```r -## [1] 1 0 1 0 0 0 1 0 0 0 -``` - -当我们谈到概率论时,我们会看到一种方法,在这种方法中,这种表示是非常有用的。 - -**整数**。整数是不含小数部分或小数部分的整数。我们在计算事物时最常遇到整数,但在心理测量中也经常遇到整数。例如,在我的介绍性调查中,我处理了一组关于统计学态度的问题(例如“统计学对我来说似乎很神秘”),在这些问题上,学生的回答是 1(“强烈反对”)到 7(“强烈同意”)。 - -**实数**。在统计学中,我们通常使用实数,实数有小数/十进制部分。例如,我们可以测量某人的体重,从整磅到微克,精确到任意水平。 - -## 2.2 测量尺度 - -所有变量必须至少具有两个不同的可能值(否则它们将是一个 _ 常量 _ 而不是一个变量),但变量的不同值可以以不同的方式相互关联,我们称之为 _ 测量尺度 _。变量的不同值有四种不同的方式。 - -* _identity_:变量的每个值都有唯一的含义。 - -* 【htg0】震级【htg1】:该变量的值反映了不同的震级,并且相互之间具有有序的关系,即有些值较大,有些值较小。 -* _ 等间隔 _:沿测量尺度的单位是相等的。例如,这意味着 1 和 2 之间的差值在大小上等于 19 和 20 之间的差值。 -* _ 绝对零点 _:刻度有一个真正有意义的零点。例如,对于许多物理量的测量,例如高度或重量,这是完全没有被测量的东西。 - -有四种不同的测量尺度,随着这些不同的方式,变量的值可能会有所不同。 - -_ 标称刻度 _。一个名义变量满足同一性的标准,这样每个变量的值代表不同的东西,但数字只是作为定性标签,如上所述。例如,我们可能会要求人们加入他们的政党,然后将其编码为数字:1=“共和党”、2=“民主党”、3=“自由主义者”等等。但是,不同的数字之间没有任何有序的关系。 - -_ 序数刻度 _。一个序数变量满足同一性和数量级的标准,这样就可以按数量级对值进行排序。例如,我们可能会要求患有慢性疼痛的人每天填写一份表格,用 1-7 个数字量表来评估他们的疼痛有多严重。请注意,虽然患者在报告 6 天时可能会感觉到更多的疼痛,而在报告 3 天时则感觉到更多的疼痛,但是说他们的疼痛是前者的两倍,后者的两倍,这是没有意义的;排序给了我们有关相对大小的信息,但不同的是数值之间的 CES 在量级上不一定相等。 - -_ 间隔刻度 _。区间标度具有序数标度的所有特征,但除此之外,测量标度上各单位之间的间隔可以视为相等。一个标准的例子是以摄氏度或法伦海特为单位测量的物理温度;10 度和 20 度之间的物理差异与 90 度和 100 度之间的物理差异相同,但每个刻度也可以取负值。 - -_ 比例标度 _。比例尺度变量具有上述四个特征:同一性、量值、等间隔和绝对零。比率比例变量和区间比例变量的区别在于比率比例变量具有真正的零点。比例尺度变量的例子包括物理高度和重量,以及以开尔文测量的温度。 - -# - -## 2.2.1 为什么测量尺度很重要? - -有两个重要的原因,我们必须注意一个变量的测量尺度。首先,尺度决定了我们可以应用于数据的数学运算类型(见表[2.2](#tab:MeasurementTypes))。只能比较名义变量是否相等;也就是说,对该变量的两个观测值是否具有相同的数值?将其他数学运算应用于一个名义变量是没有意义的,因为它们在名义变量中不是真正的数字,而是作为标签。对于序数变量,我们也可以测试一个值是否大于或小于另一个值,但我们不能做任何算术。区间变量和比率变量允许我们执行算术;对于区间变量,我们只能加或减数值,而对于比率变量,我们也可以乘和除数值。 - -Table 2.2 Different scales of measurement admit different types of numeric operations -| | 等于/不等于 | 大于/小于 | 加/减 | 乘/除 | -| --- | --- | --- | --- | --- | -| 名义 | 好啊 | | | | -| 依次的 | OK | OK | | | -| 间隔 | OK | OK | OK | | -| 比率 | OK | OK | OK | OK | - -这些约束也意味着我们可以对每种类型的变量计算某些类型的统计信息。只需计算不同值(例如最常见的值,即 _ 模式 _)的统计信息,就可以对任何变量类型进行计算。其他统计数据是基于值的排序或排序(如 _ 中位数 _,当所有值都按其大小排序时,中位数是中间值),这些统计数据要求值至少按顺序排列。最后,涉及到值相加的统计(如平均值或 _ 平均值 _)要求变量至少在区间尺度上。尽管如此,我们应该注意到,对于研究人员来说,计算只有序数的变量的平均值是很常见的(比如人格测试的反应),但这有时会有问题。 - -## 2.3 什么是良好的测量? - -在心理学等许多领域,我们所测量的不是物理特征,而是一个不可观测的理论概念,我们通常称之为 _ 结构 _。例如,假设我想测试一下您对上述四种不同测量尺度之间的区别有多了解。我可以给你一个弹出测试,问你几个关于这些概念的问题,并计算你有多少是正确的。这个测试可能是或者可能不是对你实际知识结构的一个很好的度量——例如,如果我用一种令人困惑的方式编写测试或者使用你不理解的语言,那么这个测试可能会建议你在真正的时候不理解这些概念。另一方面,如果我给你一个有着非常明显错误答案的多选测试,那么你可能在测试中表现得很好,即使你并不真正理解材料。 - -在没有一定误差的情况下,通常不可能测量结构。在上面的例子中,您可能知道答案,但您可能误读了问题并弄错了。在其他情况下,被测物本身存在误差,例如,当我们测量一个人在一个简单的反应时间测试中需要多长时间做出反应时,由于许多原因,从一个试验到另一个试验都会有所不同。我们通常希望我们的测量误差尽可能低。 - -有时有一个标准可以用来测试其他的测量,我们可以称之为“黄金标准”——例如,睡眠的测量可以用许多不同的设备(例如测量床上运动的设备)来完成,但它们通常被认为不如多导睡眠图的黄金标准(使用脑电波测量来量化一个人在睡眠的每个阶段所花费的时间)。通常金本位制的执行难度更大或成本更高,即使可能存在更大的误差,也会使用更便宜的方法。 - -当我们思考什么是一个好的度量时,我们通常会区分一个好度量的两个不同方面。 - -# - -## 2.3.1_ 可靠性 _ - -可靠性量化了我们测量结果的一致性。一种常见的可靠性形式被称为“测试-再测试可靠性”,它测量如果相同的测量进行两次,测量结果的一致性。例如,我可能会给你一份关于你今天对统计的态度的调查问卷,明天重复同样的调查问卷,并在两天内比较你的答案;我们希望它们彼此非常相似,除非在两次测试之间发生了一些应该改变了你对统计的看法(比如读这本书!). - -另一种评估可靠性的方法是在数据包括主观判断的情况下。例如,假设一个研究人员想确定一种治疗是否会改变自闭症儿童与其他儿童的互动程度,这是通过让专家观察儿童并对他们与其他儿童的互动进行评级来衡量的。在这种情况下,我们希望确保答案不依赖于评级机构——也就是说,我们希望有高 _ 的评级机构间可靠性 _。这可以通过让多个评级者执行评级来评估,然后比较他们的评级,以确保他们之间的一致性。 - -如果我们想将一个测量值与另一个测量值进行比较,可靠性是很重要的。两个不同测量值之间的关系不能比两个测量值之间的关系强(即其可靠性)。这意味着一个不可靠的度量永远不会与任何其他度量有很强的统计关系。因此,研究人员开发一种新的测量方法(如一项新的调查),通常会花很大的时间来测试它的可靠性。 - -![A figure demonstrating the distinction between reliability and validity, using shots at a bullseye. Reliability refers to the consistency of location of shots, and validity refers to the accuracy of the shots with respect to the center of the bullseye. ](img/file1.png) - -图 2.1 使用靶心射击,显示可靠性和有效性之间的区别的图。可靠性是指射击位置的一致性,有效性是指射击相对于靶心的准确性。 - -# - -## 2.3.2_ 有效性 _ - -可靠性很重要,但就其本身而言还不够:毕竟,我可以用一个数字对每个答案进行编码,从而在人格测试中创建一个高度可靠的衡量标准,不管这个人如何回答。我们希望我们的测量结果也是 _ 有效的 _——也就是说,我们希望确保我们实际测量的是我们认为我们正在测量的构造(图[2.1](#fig:ReliabilityValidity))。有许多不同类型的有效性被普遍讨论;我们将集中讨论其中的三种。 - -_ 人脸有效性 _。测量值在表面上有意义吗?如果我告诉你我要通过观察一个人的舌头的颜色来测量他的血压,你可能会认为这不是一个有效的测量方法。另一方面,使用血压袖带将具有面部有效性。这通常是我们深入到更复杂的有效性方面之前的第一个现实检查。 - -_ 构造有效性 _。测量是否以适当的方式与其他测量相关?这通常被细分为两个方面。_ 收敛有效性 _ 意味着度量应该与其他被认为反映相同构造的度量密切相关。假设我有兴趣通过问卷调查或面试来衡量一个人的外向程度。如果这两个不同的度量值彼此密切相关,则可以证明收敛有效性。另一方面,被认为反映不同结构的度量应该是不相关的,即 _ 发散效度 _。如果我的人格理论认为外向性和责任感是两个不同的结构,那么我也应该看到我对外向性的测量与责任感的测量是无关的。 - -_ 预测有效性 _。如果我们的测量结果确实有效,那么它们也应该是对其他结果的预测。例如,假设我们认为,情感寻求的心理特征(对新体验的渴望)与现实世界中的冒险有关。为了检验感觉寻求测量的预测有效性,我们将在一项不同的测量现实风险的调查中,测试测试分数对预测分数的影响。 - -## 2.4 阅读建议 - -* 【htg0】【htg1】心理测量理论导论及其在 R【htg2】【htg3】中的应用——免费在线心理测量教科书 \ No newline at end of file diff --git a/docs/3.md b/docs/3.md deleted file mode 100644 index b8dfd3bac7688f0e45e8d853d4e362b18ff5d975..0000000000000000000000000000000000000000 --- a/docs/3.md +++ /dev/null @@ -1,460 +0,0 @@ -# 三、概率 - -概率论是处理机会和不确定性的数学分支。它是统计基础的重要组成部分,因为它为我们提供了描述不确定事件的数学工具。概率的研究部分是由于人们对机会游戏的理解感兴趣,如纸牌或骰子。这些游戏提供了许多统计概念的有用例子,因为当我们重复这些游戏时,不同结果的可能性(大部分)保持不变。然而,关于概率的含义有一些深层次的问题,我们在这里不讨论;如果您有兴趣进一步了解这个迷人的主题及其历史,请参阅结尾处的建议阅读资料。 - -## 3.1 什么是概率? - -非正式地,我们通常认为概率是一个描述某些事件发生可能性的数字,范围从零(不可能)到一(确定)。有时概率会用百分比表示,从 0 到 100 不等,正如天气预报预测今天有 20%的可能下雨一样。在每种情况下,这些数字表示特定事件的可能性。 - -为了将概率论形式化,我们首先需要定义一些术语: - -* 实验是产生或观察结果的任何活动。例如,掷硬币、掷 6 面骰子,或者尝试新的工作路线,看它是否比旧路线快。 -* **样本空间**是一个实验的可能结果集。对于硬币翻转,样本空间为 h,t,其中括号代表样本空间,h/t 代表头部/尾部。对于模具,样本空间为 1,2,3,4,5,6。对于工作所需的时间量,样本空间都是可能大于零的实数(因为它不能用负的时间到达某个地方,至少目前还不能)。 -* **事件**是示例空间的子集。在这里,我们将主要关注 _ 基本事件 _,这些事件恰好包含一个可能的结果,例如掷硬币时的头部、掷骰子时的 4 个骰子,或通过新路线回家的 21 分钟。 - -既然我们有了这些定义,我们就可以概括概率的形式特征,这是俄罗斯数学家安德烈·科尔莫戈罗夫首先定义的。如果![](img/c19b3077c17fe200131a79fb6c4ac2c2.jpg)是事件概率![](img/5143e6254d17445e6820bbb6e8b7da18.jpg): - -* 概率不能为负:![](img/555cbea505c8a6b43c304d5f2d4e645c.jpg) -![](img/4f98f32d21a04ea5213082846c7461bc.jpg) -* 样本空间中所有结果的总概率为 1。我们可以使用求和符号![](img/7b42d2833406d2db1d97024211e71755.jpg)来表示它: - -这被解释为“把所有的 n 个基本事件,我们从 1 到 n,加起来它们的概率。这些必须加为 1。“这意味着任何单个事件的概率不能大于 1:![](img/d08df198a58a4f2eebfd16844b3d0987.jpg) - -## 3.10 概率是什么意思? - -你可能会觉得,根据测试结果谈论一个人患癌症的几率有点奇怪;毕竟,这个人要么患了癌症,要么没有。历史上,概率有两种不同的解释方式。第一种解释(被称为 _ 频率主义者 _ 解释)用长期频率解释概率。例如,在硬币翻转的情况下,它将反映出大量翻转之后,头部在长期内的相对频率。虽然这种解释可能对像掷硬币一样可以重复多次的事件有意义,但对于只会发生一次的事件,如个人的生活或特定的总统选举,则没有意义;正如经济学家约翰·梅纳德·凯恩斯(John Maynard Keynes)著名地说的,“在从长远来看,我们都死定了。” - -可能性的另一种解释(称为 _ 贝叶斯 _ 解释)是对特定命题的一种信仰程度。如果我问你“到 2026 年美国重返月球的可能性有多大”,你可以根据你的知识和信仰来回答这个问题,即使没有相关的频率来计算频率概率。我们经常用一种方法来界定主观概率,那就是根据一个人愿意接受一个特定的赌博。例如,如果你认为美国在 2026 年登陆月球的概率是 0.1(即几率为 9:1),那么这意味着你应该愿意接受一场赌博,如果这一事件发生的话,它将以超过 9:1 的几率获得回报。 - -正如我们将看到的,概率的这两个不同定义与统计学家考虑检验统计假设的两种不同方式非常相关,我们将在后面的章节中遇到这两种方式。 - -## 3.11 阅读建议 - -* 酒鬼之行:随机性如何支配我们的生活 - -## 3.2 我们如何确定概率? - -既然我们知道了概率是什么,那么我们如何才能真正知道任何特定事件的概率是什么呢? - -# - -## 3.2.1 个人意见 - -假设我问你,如果伯尼·桑德斯获得民主党提名而不是希拉里·克林顿的话,他在 2016 年赢得美国总统大选的可能性有多大。这里的样本空间是桑德斯赢了,桑德斯输了,但我们实际上不能做实验来找到结果。然而,大多数了解选举的人都愿意对这一事件的可能性进行猜测。在许多情况下,个人知识和/或意见是我们确定事件发生概率的唯一指南,但这在科学上并不令人满意。 - -# - -## 3.2.2 经验频率 - -另一种确定事件发生概率的方法是多次进行实验,并计算每个事件发生的频率。根据不同结果的相对频率,我们可以计算出每个结果的概率。比如说,我们有兴趣知道旧金山下雨的可能性。首先,我们必须定义实验---假设我们将在 2017 的每一天查看国家气象服务数据(可以从 [HTTPS://www. NCDC.NOAAGOV/](https://www.ncdc.noaa.gov/)下载),并确定在旧金山市中心的气象站是否有雨。 - -```r -# load data on rain in San Francisco and compute probability -SFrain <- read_csv("data/SanFranciscoRain/1329219.csv") - -# create a new variable indicating whether it rained on each day -SFrain <- - SFrain %>% - mutate(rainToday = as.integer(PRCP > 0)) - -SFrain_summary <- - SFrain %>% - summarize( - nRainyDays = sum(rainToday), - nDaysMeasured = n(), - pRainInSF = nRainyDays / nDaysMeasured - ) - -pander(SFrain_summary) -``` - - -| 每天 | 标准测量值 | 普拉宁斯 | -| --- | --- | --- | -| 73 | 365 个 | 0.2 条 | - -根据这些数据,2017 年有 73 个雨天。为了计算旧金山的降雨概率,我们简单地将雨天数除以(365),给出 P(SF 的雨在 2017)=0.2。 - -我们怎么知道经验概率给了我们正确的数字?这个问题的答案来自于 _ 大数定律 _,它表明随着样本量的增加,经验概率将接近真实概率。我们可以通过模拟大量的硬币翻转来看到这一点,并查看我们对每次翻转后头部概率的估计。在后面的章节中,我们将花费更多的时间讨论模拟;现在,假设我们有一种计算方法来为每个硬币翻转生成随机结果。 - -![A demonstration of the law of large numbers. A coin was flipped 30,000 times, and after each flip the probability of heads was computed based on the number of heads and tail collected up to that point. It takes about 15,000 flips for the probability to settle at the true probability of 0.5.](img/file2.png) - -图 3.1 大数定律的演示。一枚硬币被翻转了 30000 次,每次翻转后,头部的概率是根据收集到的头部和尾部的数量来计算的。以 0.5 的真实概率结算的概率大约需要 15000 次翻转。 - -图[3.1](#fig:FlipSim)显示,随着样本数量(即硬币翻转试验)的增加,头部的估计概率收敛到 0.5 的真实值。但是,请注意,当样本量较小时,估计值可能与真实值相差甚远。在 2017 年佐治亚州美国参议院特别选举中,看到了一个现实世界的例子,这场选举让共和党人罗伊·摩尔与民主党人道格·琼斯相提并论。图[3.2](#fig:ElectionResults)显示了随着越来越多的选票被计算在内,当晚每个候选人所报告的选票的相对数量。晚上早些时候,投票数特别不稳定,从琼斯最初的领先优势到摩尔领先的很长一段时间,直到琼斯最终领先赢得比赛。 - -![Relative proportion of the vote in the Dec 12, 2017 special election for the US Senate seat in Georgia, as a function of the percentage of precincts reporting. These data were transcribed from https://www.ajc.com/news/national/alabama-senate-race-live-updates-roy-moore-doug-jones/KPRfkdaweoiXICW3FHjXqI/](img/file3.png) - -图 3.2 2017 年 12 月 12 日美国佐治亚州参议院席位特别选举的投票相对比例,与选区报告百分比的函数关系。这些数据摘自[https://www.ajc.com/news/national/alabama-senate-race-live-updates-roy-moore-doug-jones/kpfkdaweixicw3fhjxqi/](https://www.ajc.com/news/national/alabama-senate-race-live-updates-roy-moore-doug-jones/KPRfkdaweoiXICW3FHjXqI/) - -这两个例子表明,虽然大样本最终会收敛于真实概率,但小样本的结果可能会相差很远。不幸的是,许多人忘记了这一点,并曲解了小样本的结果。心理学家丹尼·卡尼曼和阿莫斯·特沃斯基(Danny Kahneman and Amos Tversky)称之为“小数字定律”(HTG0),他们发现人们(甚至是受过训练的研究人员)的行为通常就好像大数字定律甚至适用于小样本一样,对小数据集的结果给予了过多的信任。.在整个过程中,我们将看到一些例子,说明在小样本的基础上生成统计结果会有多不稳定。 - -# - -## 3.2.3 经典概率 - -我们中的任何一个人都不太可能投过几万次硬币,但我们仍然愿意相信,倒头的概率是 0.5。这反映了另一种计算概率的方法的使用,我们称之为 _ 经典概率 _。在这种方法中,我们直接根据我们对形势的了解来计算概率。 - -经典概率源于对骰子和纸牌等机会游戏的研究。一个著名的例子来自一个法国赌徒遇到的一个问题,这个赌徒的名字是“chevalier de m_r_”。德玛 _r_ 玩了两种不同的骰子游戏:第一种是在六面骰子的四个骰子上赌至少一个六的机会,第二种是在两个骰子的 24 个骰子上赌至少一个六的机会。他希望在这两次赌博中都能赢,但他发现,尽管他在第一次赌博中平均赢了钱,但在第二次赌博中却多次输了钱。为了理解这一点,他求助于他的朋友,数学家布莱斯·帕斯卡,他现在被公认为概率论的创始人之一。 - -我们如何用概率论来理解这个问题?在经典概率论中,我们首先假设样本空间中的所有基本事件都同样可能发生;也就是说,当您滚动一个骰子时,所有可能的结果(1,2,3,4,5,6)都同样可能发生。(不允许加载骰子!)考虑到这一点,我们可以将任何单个结果的概率计算为: - -![](img/95e409ff1b376cb029cc2ea487c0de77.jpg) - -对于六面模具,每个单独结果的概率为 1/6。 - -这很好,但是 de m_r_ 对更复杂的事件感兴趣,比如多个骰子掷骰子时发生的事情。我们如何计算复杂事件(单个事件的联合)的概率,比如在第一个 _ 或 _ 中滚动一个事件或第二个事件?De M_r_ 认为(错误地,我们将在下面看到),他可以简单地将单个事件的概率相加,以计算组合事件的概率,这意味着在第一卷或第二卷上滚动一个事件的概率将计算如下: - -![](img/bcbc006e5ad8ea01c9cd991151fc6685.jpg) - -De M_r_ 基于此推断,四卷中至少六卷的概率是每个单卷的概率之和:![](img/da71c981c0c2a2d3826a404b5c3d26e2.jpg)。同样地,他推断,因为掷骰子时两个 6 的概率是 1/36,那么两个骰子的 24 卷骰子中至少一个 6 的概率是![](img/a6c683fede93757044be9205d9827e9d.jpg)。然而,尽管他总是在第一次下注中赢了钱,但在第二次下注中却输了钱。什么给予? - -为了理解 de m_r_ 的误差,我们需要引入概率论的一些规则。第一个是减法规则(htg0),即: - -![](img/7c5ff5ec992fd140f40694ffe951c49b.jpg) - -其中![](img/d8ac0924e8f1d43d7c6f957fb99f16f1.jpg)表示“非 a”。这个规则直接从我们上面讨论的公理中推导出来;因为 a 和![](img/d8ac0924e8f1d43d7c6f957fb99f16f1.jpg)是唯一可能的结果,所以它们的总概率必须加为 1。例如,如果在一次投掷中滚动一个物体的概率是![](img/2a4ca4061c264ca4697c0f4dc502a667.jpg),那么滚动除一个物体以外的任何物体的概率是![](img/74fd2a08ed4fd074168468efb99ab03a.jpg)。 - -第二条规则告诉我们如何计算联合事件的概率——也就是说,两个事件同时发生的概率。这个版本的规则告诉我们,在特殊情况下,当两个事件彼此独立时,如何计算这个量;我们稍后将确切地了解 _ 独立性 _ 的概念意味着什么,但现在我们可以想当然地认为这两个掷模是不独立的。ndent 事件。 - -![](img/bc104146831670ea28c529ac67c64009.jpg) - -因此,向两个辊中的每一辊投掷六个辊的概率是![](img/781e1bff976b78c3695802c1faa6f8ad.jpg)。 - -第三条规则告诉我们如何将概率相加——这里我们看到了 de m_r_ 错误的来源。加法规则告诉我们: - -![](img/1f2e4d778effc506dc13daace0ce132a.jpg) - -也就是说,A 或 B 发生的概率是通过将单个概率相加,然后减去两者同时发生的可能性来确定的。在某种意义上,这会阻止我们将这些实例计数两次。假设我们想找出在两个投掷中的任何一个上滚动 6 的概率。根据我们的规则: - -![](img/892769b632eb5c613f1169dfe81a565a.jpg)![](img/8746db7c69c50dd130ae037340d94252.jpg)![Each cell in this matrix represents one outcome of two throws of a die, with the columns representing the first throw and the rows representing the second throw. Cells shown in light blue represent the cells with a one in either the first or second throw; the rest are shown in dark blue.](img/file4.png) - -图 3.3 这个矩阵中的每个单元格表示一个 die 的两次 throw 的一个结果,其中列表示第一次 throw,行表示第二次 throw。浅蓝色显示的单元格表示第一次或第二次投掷中有一个单元格的单元格;其余的单元格显示为深蓝色。 - -让我们使用一个图形化的描述来获得这个规则的不同视图。图[3.3](#fig:ThrowMatrix)显示了一个表示所有可能抛出的矩阵,并突出显示了在第一次或第二次抛出中涉及一个抛出的单元格。如果你用浅蓝色数数这些细胞,你会发现有 11 个这样的细胞。这说明了为什么加法规则给出了与 de m_r_ 不同的答案;如果我们像他那样简单地把两次掷骰的概率相加,那么我们将对两次掷骰都计算(1,1),而实际上只计算一次。 - -# - -## 3.2.4 解决 de m_r_ 的问题 - -布莱斯·帕斯卡利用概率法则提出了一个解决德玛·R·_ 问题的方法。首先,他意识到,从一个组合中计算出至少一个事件的概率是很困难的,而计算出某个事件在多个事件中不发生的概率相对来说比较容易——这只是单个事件概率的乘积。因此,他不是计算四卷中至少六卷的概率,而是计算所有卷中没有混乱的概率: - -![](img/4275552aeb5f9f21d1301d414adb1fb3.jpg) - -然后,他利用四卷纸中无六个的概率是四卷纸中至少六个六个的补数(因此必须求和为一),并使用减法规则计算利息概率: - -![](img/a3678e8ff457f54d80e648c09ae0371d.jpg) - -德玛 __ 赌他会投至少六分之一的骰子的概率大于 0.5,这解释了德玛 ____ 为什么在这个赌注上平均赚钱。 - -但是,德姆雷尔的第二个赌注呢?帕斯卡使用了同样的技巧: - -![](img/d936c28e10e1a1bc69e4c816ec96bc11.jpg)![](img/b6ebca7c62fba5e97cab41a2627210b2.jpg) - -这一结果的概率略低于 0.5,这说明了为什么在这场赌博中,de m_r_ 平均赔钱。 - -## 3.3 概率分布 - -我们通常希望能够量化实验中任何可能值的概率。例如,在 2018 年 1 月 20 日,篮球运动员斯蒂芬·科里在与休斯顿火箭队的比赛中 4 次罚球中只有 2 次命中。我们知道库里在整个赛季的罚球命中率是 0.91,所以他在一场比赛中只命中 50%的罚球似乎是不太可能的,但这到底有多不可能呢?我们可以使用理论概率分布来确定这一点;在本课程中,我们将遇到许多这样的概率分布,每个概率分布都适合描述不同类型的数据。在这种情况下,我们使用 _ 二项式 _ 分布,它提供了一种方法来计算在给定一些已知的成功概率的情况下,许多“伯努利试验”(即,成功或失败的试验,两者之间没有任何结果)中一些成功的概率。每次审判。此分布定义为: - -![](img/6683d37792dc1e56e56c6099b321ad83.jpg) - -这是指成功概率为 p 时 n 次试验中 k 次成功的概率。您可能不熟悉![](img/9ed5422e7bd57da013ac5ba0daaa03a3.jpg),这被称为 _ 二项式系数 _。二项式系数也被称为“n-choose-k”,因为它描述了从 n 个项目中选择 k 个项目的不同方法的数量。二项式系数计算如下: - -![](img/bb538274ffbc9778bd28b556e9b8aff6.jpg) - -解释点在哪里!!)指数字的 _ 阶乘 _: - -![](img/f51d0fc8f546942bd6c2d7367b14cab1.jpg) - -以斯蒂芬·库里的罚球为例: - -![](img/38dc510f295ceb4a1b3e67f0f4c0d387.jpg) - -这表明,考虑到库里的总罚球率,他不太可能在 4 次罚球中只命中 2 次。这只是为了表明不太可能的事情实际上发生在现实世界中。 - -# - -## 3.3.1 累积概率分布 - -通常我们不仅想知道某个特定值的可能性有多大,而且想知道找到一个和某个特定值一样极端或更极端的值的可能性有多大。为了回答这个问题,我们可以使用 _ 累积 _ 概率分布;而标准概率分布告诉我们某个特定值的概率,而累积分布告诉我们一个值比它大或大(或小或小)的概率。Me 特定值。 - -在罚球的例子中,我们可能想知道:如果斯蒂芬·库里的罚球概率为 0.91,那么他在四个罚球中命中 2 个(htg0)或更少(htg1)的概率是多少。为了确定这一点,我们可以简单地使用二项式概率方程并插入 k 的所有可能值: - -![](img/f90534da8e5ce69cefbbd9ea90158a03.jpg) - -在许多情况下,可能的结果数量对于我们来说太大,无法通过列举所有可能的值来计算累积概率;幸运的是,它可以直接计算。对于二项式,我们可以使用`pbinom()`函数在 r 中执行此操作: - -```r -# compute cumulative probability distribution for Curry's free throws - -tibble( - numSuccesses = seq(0, 4) -) %>% - mutate( - probability = pbinom(numSuccesses, size = 4, prob = 0.91) - ) %>% - pander() -``` - - -| 无数次成功 | 可能性 | -| --- | --- | -| 0 | 0 | -| 1 个 | 0.003 个 | -| 二 | 0.043 个 | -| 三 | 0.314 个 | -| 4 | 1 | - -由此我们可以看出咖喱在 4 次尝试中 2 次或更少的罚球机会是 0.043。 - -## 3.4 条件概率 - -到目前为止,我们只局限于简单的概率——即单个事件或事件组合的概率。然而,我们通常希望确定某些事件发生的概率,因为已经发生了一些其他事件,这些事件被称为 _ 条件概率 _。 - -让我们以 2016 年美国总统大选为例。我们可以用两个简单的概率来描述选民。首先,我们知道美国选民与共和党有关联的可能性:![](img/d6680eda24388114adc889ffab670301.jpg)。我们也知道选民投票支持唐纳德·特朗普的可能性。但是,假设我们想知道以下情况:一个人投给唐纳德·特朗普(Donald Trump)的票的概率是多少,因为他们是共和党人? - -要计算给定 b 的条件概率(我们写为![](img/24f22119f3e28693fc84dea1ef25fb4f.jpg),“a 的概率,给定 b”),我们需要知道 _ 联合概率 _(即概率 a 和 b)以及 b 的总体概率: - -![](img/69e666309337d791dcdc76d4ad4752b1.jpg) - -也就是说,我们想知道两件事都是真的概率,前提是被制约的一件事是真的。 - -![A graphical depiction of conditional probability, showing how the conditional probability limits our analysis to a subset of the data.](img/file5.png) - -图 3.4 条件概率的图形描述,显示了条件概率如何限制我们对数据子集的分析。 - -从图形的角度考虑这一点很有用。图[3.4](#fig:conditionalProbability)显示了一个流程图,描绘了全体选民如何分解为共和党和民主党,以及条件概率(对政党的条件)如何根据他们的投票进一步分解每一个政党的成员。 - -## 3.5 根据数据计算条件概率 - -对于本课程中的许多例子,我们将使用从国家健康和营养检查调查(NHANES)获得的数据。NHANES 是美国疾病控制中心组织的一项正在进行的大型研究,旨在全面了解美国成人和儿童的健康和营养状况。每年,这项调查都会通过访谈和身体和医学测试,对美国大约 5000 人的样本进行调查。nhanes 数据作为一个包包含在 r 中,使其易于访问和使用。它还为我们提供了一个大型的、现实的数据集,作为许多不同统计工具的示例。 - -假设我们对以下问题很感兴趣:考虑到某人身体不活跃,他们患糖尿病的可能性有多大?--这就是![](img/49b313eeffd936da193774795c88ae98.jpg)。nhanes 记录了两个变量,解决了这个问题的两个部分。第一个(`Diabetes`)询问患者是否被告知患有糖尿病,第二个(`PhysActive`)记录患者是否从事至少中等强度的运动、健身或娱乐活动。我们先计算一下简单的概率。 - -```r -# Summarize NHANES data for diabetes and physical activity - -# drop duplicated IDs within the NHANES dataset -NHANES_diabetes_activity <- - NHANES %>% - distinct(ID, .keep_all = TRUE) %>% - drop_na(PhysActive, Diabetes) - -pander('Summary data for diabetes') -``` - -糖尿病汇总数据 - -```r -NHANES_diabetes_activity %>% - count(Diabetes) %>% - mutate( - prob = n / sum(n) - ) %>% - pander() -``` - - -| 糖尿病 | N 号 | 问题 | -| --- | --- | --- | -| 不 | 4893 个 | 0.899 个 | -| 是的 | 550 个 | 0.101 个 | - -```r -pander('Summary data for physical activity') -``` - -体育活动汇总数据 - -```r -NHANES_diabetes_activity %>% - count(PhysActive) %>% - mutate( - prob = n / sum(n) - ) %>% - pander() -``` - - -| 物理激活 | n | prob | -| --- | --- | --- | -| No | 2472 个 | 0.454 个 | -| Yes | 2971 年 | 0.546 个 | - -这表明 nhanes 数据集中的某个人患糖尿病的概率是 0.101,而某个人不活跃的概率是 0.454。 - -为了计算![](img/49b313eeffd936da193774795c88ae98.jpg),我们还需要知道糖尿病 _ 和 _ 不活动的联合概率,除了以下两种情况的简单概率: - -```r -# compute joint probabilities for diabetes and physical activity - -NHANES_diabetes_stats_by_activity <- - NHANES_diabetes_activity %>% - count(Diabetes, PhysActive) %>% - mutate( - prob = n / sum(n) - ) - -pander(NHANES_diabetes_stats_by_activity) -``` - -| Diabetes | PhysActive | n | prob | -| --- | --- | --- | --- | -| No | No | 2123 个 | 0.39 分 | -| No | Yes | 2770 个 | 0.509 个 | -| Yes | No | 349 个 | 0.064 个 | -| Yes | Yes | 201 年 | 0.037 个 | - -基于这些联合概率,我们可以计算![](img/49b313eeffd936da193774795c88ae98.jpg): - -```r -# compute conditional probability p(diabetes|inactive) - -P_inactive <- - NHANES_diabetes_activity %>% - summarise( - mean(PhysActive == "No") - ) %>% - pull() - -P_diabetes_and_inactive <- - NHANES_diabetes_stats_by_activity %>% - dplyr::filter(Diabetes == "Yes", PhysActive == "No") %>% - pull(prob) - -P_diabetes_given_inactive <- - P_diabetes_and_inactive / P_inactive - -P_diabetes_given_inactive -``` - -```r -## [1] 0.1411812 -``` - -该块中的第一行代码通过测试每个独立的 physactive 变量是否等于“no”来计算![](img/1f17fd694a3be72e2afad017324c7c69.jpg)。这个技巧是有效的,因为 r 将真/假值分别视为 1/0;因此,如果我们想知道某个事件的可能性,我们可以生成一个布尔变量来测试该事件,然后简单地取该变量的平均值。然后我们用这个值来计算条件概率,我们发现一个人患糖尿病的概率是 0.141。 - -## 3.6 独立性 - -“独立”一词在统计学中有着非常具体的含义,这与该词的常用用法有些不同。两个变量之间的统计独立性意味着知道一个变量的值并不能告诉我们关于另一个变量的值。这可以表示为: - -![](img/78da5e67dcc3011e38046fcdbc4b98ad.jpg) - -也就是说,给定某个 b 值的概率与 a 的总体概率相同。这样看,我们看到世界上许多我们称之为“独立”的情况实际上并不是统计上独立的。例如,目前有一个由加利福尼亚州公民组成的小组宣布成立一个新的独立州杰斐逊,该州将包括加利福尼亚州北部和俄勒冈州的一些县。如果发生这种情况,那么当前加利福尼亚州居民现在居住在杰斐逊州的概率将是![](img/a580a173e7dba283e0e77c3b3b96bbaa.jpg),而他们仍然是加利福尼亚州居民的概率将是![](img/dd69f4593c37ae11cc30bc339330123b.jpg)。新的国家在政治上可能是独立的,但他们在统计上不会是独立的,因为(HTG4)!也就是说,虽然公共语言中的独立性通常指的是排他的集合,但是统计独立性指的是这样一种情况,即人们不能从另一个变量的值中预测关于一个变量的任何东西。例如,知道一个人的头发颜色不太可能告诉你他们喜欢巧克力还是草莓冰淇淋。 - -让我们来看另一个例子,使用 nhanes 数据:身体健康和心理健康是相互独立的吗?NHANES 包括两个相关问题:【htg0】physactive【htg1】,询问个人是否有体力活动;以及【htg2】daysmenthlthbad【htg3】,询问个人在过去 30 天中有多少天的精神健康状况不佳。我们将定义一个新的变量,称为“不良心理健康”,即在上个月有超过 7 天的不良心理健康,然后通过询问简单的不良心理健康概率是否与不良心理健康的条件概率不同来确定它们是否独立。即使身体很活跃。 - -```r -# compute probabilities for mental health and physical activity -NHANES_adult <- - NHANES %>% - dplyr::filter( - Age >= 18, - !is.na(PhysActive), - !is.na(DaysMentHlthBad) - ) %>% - mutate(badMentalHealth = DaysMentHlthBad > 7) - -NHANES_MentalHealth_summary <- - NHANES_adult %>% - summarize(badMentalHealth = mean(badMentalHealth)) - -pander(NHANES_MentalHealth_summary) -``` - - -| 心理健康 | -| --- | -| 0.164 个 | - -```r -NHANES_MentalHealth_by_PhysActive <- - NHANES_adult %>% - group_by(PhysActive) %>% - summarize(badMentalHealth = mean(badMentalHealth)) - -pander(NHANES_MentalHealth_by_PhysActive) -``` - - -| 物理激活 | badMentalHealth | -| --- | --- | -| 不 | 0.2 条 | -| 是的 | 0.132 个 | - -由此我们可以看出![](img/d59d2396e8e39871603921abbcf5e286.jpg)是 0.1640567,而![](img/6809316d601f4f790ba83cb237878ecb.jpg)是 0.1320808。因此,条件概率似乎比总概率小一些,这表明它们不是独立的,尽管我们不能通过观察数字来确定。在课程的后面,我们将遇到一些工具,这些工具将使我们更直接地量化两个变量是否独立。 - -## 3.7 逆转条件概率:贝叶斯规则 - -在许多情况下,我们知道![](img/24f22119f3e28693fc84dea1ef25fb4f.jpg),但我们真的想知道![](img/04e4300663edc1c8ba9ee7619d492ff0.jpg)。这通常发生在医学筛查中,我们知道(htg2),但我们想知道的是(htg3)。例如,一些医生建议 50 岁以上的男性接受前列腺特异性抗原(PSA)检测,以筛查可能的前列腺癌。在试验被批准用于医疗实践之前,制造商需要测试试验性能的两个方面。首先,他们需要展示(htg4)是如何敏感的(htg5),也就是说,当疾病出现时,它有多大可能找到它。他们还需要展示 _ 的特异性 _ 是如何的:也就是说,当没有疾病存在时,它有多可能产生阴性结果![](img/11a24376d41fe831e2b1a75ac35a795c.jpg)。对于变压吸附试验,我们知道敏感性约为 80%,特异性约为 70%。然而,这些并不能回答医生想要回答的问题:如果检测结果呈阳性,他们患癌症的可能性有多大?这要求我们颠倒定义灵敏度的条件概率:而不是我们想要知道的![](img/335536b8369d59f82cbf5856cbfa3fad.jpg)。 - -为了逆转条件概率,我们可以使用 _ 贝叶斯规则 _: - -![](img/a108a589f3ef6bc25721628a8017fda6.jpg) - -根据本章前面所学的概率规则,贝叶斯规则相当容易推导。首先,记住计算条件概率的规则: - -![](img/69e666309337d791dcdc76d4ad4752b1.jpg) - -我们可以重新排列,得到用条件计算联合概率的公式: - -![](img/c279a95d3c89df0b5ec444ff437571c3.jpg) - -利用这一点,我们可以计算反概率: - -![](img/86e5a13c055b54d6a6910677470b88b4.jpg) - -如果我们只有两个结果,我们可以用更清晰的方式表达,使用和规则重新定义![](img/b029cb77c2d095be990d28206f5331fb.jpg): - -![](img/8f21133de288eed7ed24804b9b561686.jpg) - -利用这个,我们可以重新定义贝叶斯规则: - -![](img/b94584013098374a0ab47488f17113bf.jpg) - -我们可以将相关的数字插入到这个方程中,以确定一个 PSA 结果为阳性的个体确实患有癌症的可能性——但要注意,为了做到这一点,我们还需要知道这个人患癌症的总概率,我们通常将其称为 _ 基 r。吃了 _。让我们以一个 60 岁的男人为例,他在未来 10 年中患前列腺癌的概率是![](img/f3a4a8ba6e1ea77eb2e2ce3f632393f3.jpg)。利用我们上面概述的敏感性和特异性值,我们可以通过阳性测试来计算患者患癌症的可能性: - -![](img/e244f05680b0d348b92cfc43d72cebb3.jpg)![](img/b30dad3c92a0b9d823ada3ca716d2e8e.jpg) - -那太小了——你觉得奇怪吗?许多人这样做,事实上,有大量的心理学文献表明,人们在判断时系统地忽视了 _ 基本比率 _(即总体患病率)。 - -## 3.8 数据学习 - -另一种看待 Bayes 法则的方法是根据数据更新我们的信仰——也就是说,利用数据了解世界。让我们再看一下贝叶斯法则: - -![](img/643f8315b1aea5ac8d51b0398b8bdf01.jpg) - -Bayes 规则的不同部分有特定的名称,这与它们在使用 Bayes 规则更新我们信仰中的作用有关。我们首先对 b(![](img/df4fe93523fb241ffac9274788373abd.jpg))的概率进行初步猜测,我们称之为 _ 先验 _ 概率。在变压吸附的例子中,我们使用了之前的基本速率,因为在我们知道测试结果之前这是我们最好的猜测。然后我们收集一些数据,在我们的示例中是测试结果。数据 A 与结果 B 的一致程度由![](img/24f22119f3e28693fc84dea1ef25fb4f.jpg)给出,我们称之为 _ 可能性 _。你可以把这看作是数据的可能性,考虑到特定的假设正在被检验。在我们的例子中,被测试的假设是个体是否患有癌症,可能性是基于我们对测试特殊性的了解。分母(![](img/b029cb77c2d095be990d28206f5331fb.jpg))被称为 _ 边际似然 _,因为它表示数据的总体似然性,在 a 的所有可能值(在我们的示例中是正的和负的测试结果)中取平均值。左边的结果(![](img/04e4300663edc1c8ba9ee7619d492ff0.jpg))被称为 _ 后面的 _——因为它是计算的后端。 - -有另一种方法来编写贝叶斯规则,使这一点更加清晰: - -![](img/00898e5a9153344b32d0f92370330484.jpg) - -左边的部分(![](img/93531d7b720068120e0de15fe39bdc50.jpg))告诉我们,相对于数据的总体(边际)可能性,A 被赋予的可能性有多大,或者更少;右边的部分(![](img/df4fe93523fb241ffac9274788373abd.jpg))告诉我们,我们认为 B(在我们了解数据之前)的可能性有多大。这就更清楚了,贝叶斯定理的作用是根据数据比整体更可能被赋予 b 的程度来更新我们的先验知识。 - -## 3.9 优势比 - -![](img/f5e7f7ff9510714766c40c5104bc5095.jpg) - -最后一节的结果显示,基于阳性的 PSA 测试结果,个体患癌症的可能性仍然相当低,尽管它比我们知道测试结果之前大了两倍多。我们通常希望更直接地量化概率之间的关系,我们可以将它们转换为 _ 概率 _,它表示发生或不发生事件的相对可能性: - -在我们的 PSA 例子中,患癌症的几率(假设阳性测试)是: - -![](img/da27ec811744735eaaffd9becb99fe83.jpg) - -这告诉我们,即使测试呈阳性,患癌症的几率也相当低。相比之下,在一次掷骰子中掷 6 的几率是: - -![](img/6c620c7b5d0342b7549c747042757d2a.jpg) - -另一方面,这也是许多医学研究人员越来越担心在相对不常见的情况下使用广泛的筛查测试的原因;大多数阳性结果将被证明是假阳性。 - -我们也可以通过计算所谓的 _ 比值比 _ 来比较不同的概率,这正是它听起来的样子。例如,假设我们想知道阳性测试会增加患者患癌症的几率。我们可以首先计算 _ 先验概率 _——也就是说,在我们知道这个人做了阳性测试之前的概率。这些是使用基本利率计算的: - -![](img/98fbaf2155933cc390bab248593502c3.jpg) - -然后,我们可以将其与后验概率进行比较,后验概率通过后验概率计算得出: - -![](img/f89093fbc7b2769ca9937c41bff7e47b.jpg) - -这告诉我们,鉴于阳性测试结果,患癌症的几率增加了 2.62。 \ No newline at end of file diff --git a/docs/4.md b/docs/4.md deleted file mode 100644 index cee3fa088d0ce68a1a6a0ef6563aade64a99693e..0000000000000000000000000000000000000000 --- a/docs/4.md +++ /dev/null @@ -1,296 +0,0 @@ -# 四、汇总数据 - -在本章中,我们将讨论为什么以及如何总结数据。 - -## 4.1 为什么要总结数据? - -当我们总结数据时,我们必然会丢弃信息,对此有许多可以想象的反对意见。作为一个例子,让我们回到我们在第 1 章中讨论的纯研究。除了数据集中总结的那些细节之外,我们是否不应该相信每个单独的事物的所有细节?关于如何收集数据的具体细节,如一天中的时间或参与者的心情,如何?当我们总结数据时,所有这些细节都会丢失。 - -我们一般总结数据,因为它为我们提供了一种概括 _ 的方法,也就是说,使一般性陈述超出特定的观察范围。作家豪尔赫·路易斯·博尔赫斯(JorgeLuisBorges)在其短篇小说《取笑记忆》(funes the memorious)中强调了概括的重要性,该小说描述了一个失去遗忘能力的人。博尔赫斯专注于归纳(即扔掉数据)和思考之间的关系:“思考就是忘记差异,归纳,抽象。在富丽堂皇的 funes 世界里,只有细节。”_ - -心理学家长期以来研究了归纳法对思维的核心作用。一个例子是分类:我们能够很容易地识别“鸟类”类别的不同例子,即使个别例子在表面特征上可能非常不同(例如鸵鸟、知更鸟和鸡)。重要的是,泛化可以让我们对这些个体做出预测——就鸟类而言,我们可以预测它们会飞和吃蠕虫,它们可能不会开车或说英语。这些预测并不总是正确的,但它们往往足够好,能够在世界上发挥作用。 - -## 4.2 使用表格汇总数据 - -总结数据的一个简单方法是生成一个表,表示各种类型观测的计数。这种类型的表已经使用了数千年(见图[4.1](#fig:salesContract))。 - -![A Sumerian tablet from the Louvre, showing a sales contract for a house and field. Public domain, via Wikimedia Commons.](img/file6.jpg) - -图 4.1 卢浮宫的苏美尔平板电脑,显示房屋和田地的销售合同。公共领域,通过维基共享资源。 - -让我们来看一些使用表的例子,同样使用 nhanes 数据集。在 rstudio 控制台中键入命令`help(NHANES)`,然后滚动查看帮助页面,如果使用 rstudio,该页面将在帮助面板中打开。此页提供有关数据集的一些信息以及数据集中包含的所有变量的列表。让我们来看一个简单的变量,在数据集中称为“physactive”。此变量包含三个不同值中的一个:“是”或“否”(指示此人是否报告正在进行“中等强度或剧烈强度的运动、健身或娱乐活动”),如果该个人缺少数据,则为“不”。有不同的原因导致数据丢失;例如,这一问题不是针对 12 岁以下的儿童提出的,而在其他情况下,成人可能在采访期间拒绝回答这个问题。 - -# - -## 4.2.1 频率分布 - -让我们看看每个类别中有多少人。现在不要担心 R 到底是怎么做的,我们稍后再谈。 - -```r -# summarize physical activity data - -PhysActive_table <- NHANES %>% - dplyr::select(PhysActive) %>% - group_by(PhysActive) %>% - summarize(AbsoluteFrequency = n()) - -pander(PhysActive_table) -``` - - -| 物理激活 | 绝对频率 | -| --- | --- | -| 不 | 2473 个 | -| 是的 | 2972 年 | -| 不适用 | 1334 年 | - -此单元格中的 r 代码生成一个表格,显示每个不同值的频率;有 2473 名回答“否”的人,2972 名回答“是”,1334 名没有回答。我们称之为 _ 频率分布 _,因为它告诉我们每个值是如何分布在样本中的。 - -因为我们只想与回答问题的人一起工作,所以让我们过滤数据集,使其只包括回答此问题的个人。 - -```r -# summarize physical activity data after dropping NA values using drop_na() - -NHANES %>% - drop_na(PhysActive) %>% - dplyr::select(PhysActive) %>% - group_by(PhysActive) %>% - summarize(AbsoluteFrequency = n()) %>% - pander() -``` - - -| PhysActive | AbsoluteFrequency | -| --- | --- | -| No | 2473 | -| Yes | 2972 | - -这向我们展示了两个响应的绝对频率,对于每个实际给出响应的人。从这一点上我们可以看出,说“是”的人比说“不”的人多,但从绝对数上很难分辨出差别有多大。因此,我们通常希望使用 _ 相对频率 _ 来呈现数据,该相对频率是通过将每个频率除以所有频率的和得到的: - -![](img/e4cafb8e8a9e4428a56a958889be4a26.jpg) - -在 R 中我们可以这样做,如下所示: - -```r -# compute relative frequency of physical activity categories - -NHANES %>% - drop_na(PhysActive) %>% - dplyr::select(PhysActive) %>% - group_by(PhysActive) %>% - summarize(AbsoluteFrequency = n()) %>% - mutate(RelativeFrequency = AbsoluteFrequency / sum(AbsoluteFrequency)) %>% - pander() -``` - - -| PhysActive | AbsoluteFrequency | 相对频率 | -| --- | --- | --- | -| No | 2473 | 0.454 个 | -| Yes | 2972 | 0.546 个 | - -相对频率提供了一种更简单的方法来判断不平衡的程度。我们还可以通过将相对频率乘以 100 来将其解释为百分比: - -```r -# compute percentages for physical activity categories - -PhysActive_table_filtered <- NHANES %>% - drop_na(PhysActive) %>% - dplyr::select(PhysActive) %>% - group_by(PhysActive) %>% - summarize(AbsoluteFrequency = n()) %>% - mutate( - RelativeFrequency = AbsoluteFrequency / sum(AbsoluteFrequency), - Percentage = RelativeFrequency * 100 - ) - -pander(PhysActive_table_filtered) -``` - -| PhysActive | AbsoluteFrequency | RelativeFrequency | 百分比 | -| --- | --- | --- | --- | -| No | 2473 | 0.454 | 45.418 美元 | -| Yes | 2972 | 0.546 | 54.582 条 | - -这让我们看到,NHANES 样本中 45.42%的人说“不”,54.58%的人说“是”。 - -# - -## 4.2.2 累积分布 - -我们在上面研究的 physactive 变量只有两个可能的值,但我们通常希望总结出可以有更多可能值的数据。当这些值至少是序数时,总结它们的一个有用方法是通过我们所称的 _ 累积 _ 频率表示:我们不询问对特定值进行多少观察,而是询问有多少个值至少是 _ 某个特定值。_ - -让我们看一下 nhanes 数据集中的另一个变量,名为 sleephrsnight,它记录了参与者在正常工作日报告睡眠的时间。让我们像上面一样创建一个频率表,在删除了没有对问题作出响应的任何人之后。 - -```r -# create summary table for relative frequency of different -# values of SleepHrsNight - -NHANES %>% - drop_na(SleepHrsNight) %>% - dplyr::select(SleepHrsNight) %>% - group_by(SleepHrsNight) %>% - summarize(AbsoluteFrequency = n()) %>% - mutate( - RelativeFrequency = AbsoluteFrequency / sum(AbsoluteFrequency), - Percentage = RelativeFrequency * 100 - ) %>% - pander() -``` - -| 睡眠之光 | AbsoluteFrequency | RelativeFrequency | Percentage | -| --- | --- | --- | --- | -| 二 | 9 | 0.002 个 | 0.179 个 | -| 三 | 49 岁 | 0.01 分 | 0.973 个 | -| 4 | 200 个 | 0.04 分 | 3.972 年 | -| 5 个 | 406 个 | 0.081 个 | 8.064 年 | -| 6 | 1172 年 | 0.233 个 | 23.277 页 | -| 7 | 1394 年 | 0.277 个 | 27.686 年 | -| 8 个 | 1405 年 | 0.279 个 | 27.905 年 | -| 9 | 271 个 | 0.054 个 | 5.382 条 | -| 10 个 | 97 | 0.019 个 | 1.927 个 | -| 11 个 | 15 个 | 0.003 个 | 0.298 个 | -| 12 个 | 17 | 0.003 | 0.338 个 | - -我们可以通过查看表开始汇总数据集;例如,我们可以看到大多数人报告睡眠时间在 6 到 8 小时之间。让我们绘制数据以更清楚地看到这一点。要做到这一点,我们可以绘制一个 _ 柱状图 _,它显示具有每个不同值的事例数;请参见图[4.2](#fig:sleepHist)的左面板。ggplot2()库有一个内置的柱状图函数(`geom_histogram()`),我们经常使用它。我们还可以绘制相对频率,我们通常将其称为 _ 密度 _——参见图[4.2](#fig:sleepHist)的右面板。 - -![Left: Histogram showing the number (left) and proportion (right) of people reporting each possible value of the SleepHrsNight variable.](img/file7.png) - -图 4.2 左:显示报告 sleephrsnight 变量每个可能值的人数(左)和比例(右)的柱状图。 - -如果我们想知道有多少人报告睡眠 5 小时或更少怎么办?为了找到这个,我们可以计算一个 _ 累积分布 _: - -![](img/ff7ab633040472ac2bce1842214d5049.jpg) - -也就是说,为了计算某个值 j 的累积频率,我们将所有值(包括 j)的频率相加。让我们对睡眠变量进行计算,首先对绝对频率进行计算: - -```r -# create cumulative frequency distribution of SleepHrsNight data - -SleepHrsNight_cumulative <- - NHANES %>% - drop_na(SleepHrsNight) %>% - dplyr::select(SleepHrsNight) %>% - group_by(SleepHrsNight) %>% - summarize(AbsoluteFrequency = n()) %>% - mutate(CumulativeFrequency = cumsum(AbsoluteFrequency)) - -pander(SleepHrsNight_cumulative) -``` - - -| SleepHrsNight | AbsoluteFrequency | 累积频率 | -| --- | --- | --- | -| 2 | 9 | 9 | -| 3 | 49 | 58 | -| 4 | 200 | 258 个 | -| 5 | 406 | 664 个 | -| 6 | 1172 | 1836 年 | -| 7 | 1394 | 3230 个 | -| 8 | 1405 | 4635 个 | -| 9 | 271 | 4906 个 | -| 10 | 97 | 5003 个 | -| 11 | 15 | 5018 年 | -| 12 | 17 | 5035 个 | - -在图[4.3](#fig:sleepAbsCumulRelFreq)的左侧面板中,我们绘制了数据,以查看这些表示形式的外观;绝对频率值以红色绘制,累积频率以蓝色绘制。我们看到累积频率是单调递增的,也就是说,它只能上升或保持不变,但不能下降。同样,我们通常发现相对频率比绝对频率更有用;这些频率绘制在图[4.3](#fig:sleepAbsCumulRelFreq)的右面板中。 - -![A plot of the relative (red) and cumulative relative (blue) values for frequency (left) and proportion (right) for the possible values of SleepHrsNight.](img/file8.png) - -图 4.3 SleephrsNight 可能值的频率(左)和比例(右)的相对(红)和累积相对(蓝)值的图。 - -# - -## 4.2.3 绘制柱状图 - -![A histogram of the Age (left) and Height (right) variables in NHANES.](img/file9.png) - -图 4.4 nhanes 中年龄(左)和身高(右)变量的柱状图。 - -我们在上面研究的变量相当简单,只有几个可能的值。现在让我们来看一个更复杂的变量:年龄。首先,让我们绘制 nhanes 数据集中所有个体的年龄变量(参见图[4.4](#fig:ageHist)的左面板)。你看到了什么?首先,你应该注意到每个年龄组的个体数量随着时间的推移而减少。这是有道理的,因为人口是随机抽样的,因此随着时间的推移死亡导致老年人的数量减少。其次,你可能在 80 岁的时候注意到图表中有一个大的尖峰。你觉得这是怎么回事? - -如果您查看 nhanes 数据集的帮助功能,您将看到以下定义:“研究参与者筛选的年龄(年)。注:80 岁或 80 岁以上的受试者被记录为 80 岁。“原因在于,年龄很高的受试者数量相对较少,如果你知道他们的确切年龄,就可能更容易在数据集中识别出特定的人;研究人员通常承诺他们的参与蚂蚁要对自己的身份保密,这是他们能做的有助于保护研究对象的事情之一。这也突显了一个事实,即知道一个人的数据来自何处以及如何处理它们总是很重要的;否则,我们可能会不正确地解释它们。 - -让我们看看 nhanes 数据集中另一个更复杂的变量:高度。高度值的柱状图绘制在图[4.4](#fig:ageHist)的右面板中。关于这个分布你首先应该注意的是,它的大部分密度集中在 170 厘米左右,但是分布的左侧有一个“尾巴”;有少数个体的高度要小得多。你觉得这是怎么回事? - -您可能已经直觉到小高度来自数据集中的子级。检查这一点的一种方法是为儿童和成人绘制单独颜色的柱状图(图[4.5](#fig:heightHistSep)的左面板)。这表明,所有非常短的高度确实来自样本中的儿童。让我们创建一个新版本的 nhanes,它只包含成年人,然后为他们绘制柱状图(图[4.5](#fig:heightHistSep)的右面板)。在这个图中,分布看起来更加对称。正如我们稍后将看到的,这是一个 _ 正态 _(或 _ 高斯 _)分布的很好例子。 - -![Histogram of heights for NHANES. A: values plotted separately for children (blue) and adults (red). B: values for adults only. C: Same as B, but with bin width = 0.1](img/file10.png) - -图 4.5 nhanes 高度柱状图。A:分别为儿童(蓝色)和成人(红色)绘制的值。B:仅限成人使用。C:与 B 相同,但仓宽=0.1 - -# - -## 4.2.4 柱状图箱 - -在我们前面使用睡眠变量的例子中,数据是以整数报告的,我们只计算报告每个可能值的人数。但是,如果您查看 nhanes 中高度变量的一些值,您将看到它是以厘米为单位测量的,一直到小数点后一位: - -```r -# take a slice of a few values from the full data frame -NHANES_adult %>% - dplyr::select(Height) %>% - slice(45:50) %>% - pander() -``` - - -| 高度 | -| --- | -| 169.6 条 | -| 169.8 条 | -| 167.5 条 | -| 155.2 条 | -| 173.8 条 | -| 174.5 条 | - -图[4.5](#fig:heightHistSep)的面板 C 显示了统计每个可能值的密度的直方图。这个柱状图看起来真的参差不齐,这是因为特定的小数位值的可变性。例如,值 173.2 出现 32 次,而值 173.3 只出现 15 次。我们可能不认为这两个权重的流行率真的有如此大的差异;更可能的原因是我们的样本中的随机变异性。 - -一般来说,当我们创建一个连续的或可能有很多值的数据柱状图时,我们将 _bin_ 这些值,这样我们就不会计算和绘制每个特定值的频率,而是计算和绘制特定范围内的值的频率。e.这就是为什么上面[4.5](#fig:heightHistSep)的面板 B 中的图看起来不那么锯齿状的原因;如果您查看`geom_histogram`命令,您将看到我们设置了“b in width=1”,它告诉命令通过将 b in 中的值与宽度为 1 的值组合来计算柱状图;因此,值 1.3、1.5 和 1.6 would 所有数据都计算在同一个存储单元的频率上,从等于 1 的值到小于 2 的值。 - -![](img/df227f4f0633e237c734128d692274b0.jpg) - -请注意,一旦选择了箱大小,则箱的数量将由数据确定: - -如何选择最佳的仓宽没有硬性和快速性的规则。偶尔它会很明显(就像只有几个可能的值一样),但在许多情况下,它需要反复尝试。有一些方法试图找到一个最佳的仓位大小,例如在 r 的`nclass.FD()`函数中实现的 freedman diaconis 方法;我们将在下面的一些示例中使用该函数。 - -## 4.3 分布的理想化表示 - -数据集就像雪花,因为每一个都是不同的,但尽管如此,在不同类型的数据中经常会看到一些模式。这允许我们使用理想化的数据表示来进一步总结它们。让我们用[4.5](#fig:heightHistSep)中绘制的成人身高数据,并将它们与一个非常不同的变量一起绘制:脉率(每分钟心跳),也用 nhanes 测量(见图[4.6](#fig:NormalDistPlotsWithDist))。 - -![Histograms for height (left) and pulse (right) in the NHANES dataset, with the normal distribution overlaid for each dataset.](img/file11.png) - -图 4.6 nhanes 数据集中高度(左)和脉冲(右)的柱状图,每个数据集中的正态分布重叠。 - -虽然这些情节看起来不完全相同,但都具有在中间圆顶上相对对称的一般特征。这个形状实际上是我们收集数据时常见的分布形状之一,我们称之为 _ 正态 _(或 _ 高斯 _)分布。该分布由两个值(我们称之为分布的 _ 参数 _)定义:中心峰的位置(我们称之为 _ 平均值 _)和分布的宽度(用称为 _ 标准偏差的参数描述)。操作 _)。图[4.6](#fig:NormalDistPlotsWithDist)显示了在每个历史程序顶部绘制的适当正态分布。您可以看到,虽然曲线不完全符合数据,但它们在描述分布方面做得很好——只有两个数字! - -正如我们在后面的课程中讨论中心极限定理时所看到的,世界上许多变量呈现正态分布的形式有一个深刻的数学原因。 - -# - -## 4.3.1 偏斜度 - -图[4.6](#fig:NormalDistPlotsWithDist)中的例子很好地遵循正态分布,但在许多情况下,数据将以系统的方式偏离正态分布。数据可以偏离的一种方式是不对称的,这样分布的一个尾部比另一个更加密集。我们称之为“歪斜”。偏度通常发生在测量被限制为非负值的情况下,例如我们计算事物或测量经过的时间(因此变量不能取负值)。 - -斜率的一个例子可以在旧金山国际机场机场安全线的平均等待时间中看到,在图 [4.7 的左侧面板](#fig:SFOWaitTimes)中绘制。您可以看到,虽然大多数等待时间不到 20 分钟,但有许多情况下,它们会更长,超过 60 分钟!这是一个“右偏”分布的例子,其中右尾比左尾长;在查看计数或测量时间时,这些是常见的,不能小于零。看到“左偏”分布不太常见,但它们可能发生,例如,当查看不能取大于 1 的值的分数值时。 - -![Examples of right-skewed and long-tailed distributions. Left: Average wait times for security at SFO Terminal A (Jan-Oct 2017), obtained from https://awt.cbp.gov/ . Right: A histogram of the number of Facebook friends amongst 3,663 individuals, obtained from the Stanford Large Network Database. The person with the maximum number of friends is indicated by the blue dot.](img/file12.png) - -图 4.7 右偏和长尾分布示例。左:从[https://awt.cbp.gov/](https://awt.cbp.gov/)获取的 SFO 终端 A 安全的平均等待时间(2017 年 1-10 月)。右图:从斯坦福大型网络数据库中获取的 3663 个人中 Facebook 好友数量的柱状图。朋友最多的人用蓝点表示。 - -# - -## 4.3.2 长尾分布 - -历史上,统计数据主要集中在正态分布的数据上,但有许多数据类型看起来与正态分布完全不同。特别是,许多现实世界的分布是“长尾巴”,这意味着右尾巴远远超出了分布中最典型的成员。一种最有趣的数据类型,其中长尾分布发生在社会网络的分析。例如,让我们看看来自斯坦福大网络数据库[的 Facebook 好友数据,并绘制数据库中 3663 人的好友数量柱状图(参见图](https://snap.stanford.edu/data/egonets-Facebook.html)[4.7](#fig:SFOWaitTimes)的右面板)。如我们所见,这个分布有一个很长的右尾——一般人有 24.09 个朋友,而朋友最多的人(用蓝点表示)有 1043 个! - -在现实世界中,长尾分布越来越被认可。特别是,复杂系统的许多特征都具有这些分布特征,从文本中的单词频率,到进出机场的航班数量,再到大脑网络的连接。有许多不同的方法可以实现长尾分布,但在基督教圣经中所谓的“马太效应”的情况下会出现一个常见的方法: - -> 因为凡有更多的,必被赐给他,他也必富足;但没有的,连他所拥有的,也必被夺去。-马太福音 25:29,修订后的标准版 - -通常被解释为“富人越富有”。在这种情况下,优势是复合的,这样那些有更多朋友的人可以接触到更多的新朋友,而那些有更多钱的人可以做更多能增加他们财富的事情。 - -随着课程的发展,我们将看到一些长尾分布的例子,我们应该记住,当面对长尾数据时,统计中的许多工具可能会失败。正如纳西姆·尼古拉斯·塔勒布在其《黑天鹅》一书中指出的那样,这种长尾分布在 2008 年金融危机中起到了至关重要的作用,因为交易员使用的许多金融模型都假设金融系统将遵循正态分布,而他们显然没有遵循正态分布。 - -## 4.4 阅读建议 - -* _ 黑天鹅:纳西姆·尼古拉斯·塔勒布(Nassim Nicholas Taleb)的《极不可能的影响》(HTG1)_ \ No newline at end of file diff --git a/docs/5.md b/docs/5.md deleted file mode 100644 index 337b5ff88671638650b1073532546c6beb5a1855..0000000000000000000000000000000000000000 --- a/docs/5.md +++ /dev/null @@ -1,739 +0,0 @@ -# 五、将模型拟合到数据 - -统计学中的一个基本活动是创建可以使用一组小数字汇总数据的模型,从而提供对数据的简洁描述。在本章中,我们将讨论统计模型的概念以及如何使用它来描述数据。 - -## 5.1 什么是模型? - -在物理世界中,“模型”通常是对现实世界中事物的简化,尽管如此,它还是传达了被建模事物的本质。建筑物的模型传递建筑物的结构,同时又小又轻,足以用手拿起;生物学中的细胞模型比实际物体大得多,但又传递了细胞的主要部分及其关系。 - -在统计学中,模型的目的是提供一个类似的简明描述,但用于数据而不是物理结构。与物理模型一样,统计模型通常比所描述的数据简单得多;它旨在尽可能简单地捕获数据的结构。在这两种情况下,我们都意识到,模型是一种方便的虚构,它必然掩盖了被建模的实际事物的一些细节。正如统计学家乔治博克斯所说:“所有的模型都是错误的,但有些模型是有用的。” - -统计模型的基本结构是: - -![](img/0c021ca249df797a2c6e689f7616f5a3.jpg) - -这表明数据可以用一个统计模型来描述,这个模型描述了我们期望在数据中发生的事情,以及模型和数据之间的差异,我们称之为 _ 错误 _。 - -## 5.2 统计建模:示例 - -让我们来看一个使用 nhanes 中的数据将模型拟合到数据的示例。特别是,我们将尝试在 nhanes 样本中建立儿童身高的模型。首先,让我们加载数据并绘制它们(参见图[5.1](#fig:childHeight))。 - -![Histogram of height of children in NHANES.](img/file13.png) - -图 5.1 NHANES 儿童身高柱状图。 - -请记住,我们希望尽可能简单地描述数据,同时仍然捕获它们的重要特性。我们能想象的最简单的模型是什么,它仍然能够捕获数据的本质?数据集中最常见的值(我们称之为 _ 模式 _)如何?R 没有内置的模式函数,所以我们将首先创建一个,我们称之为`getmode()`。 - -```r -# create function to compute mode and apply to child height data from NHANES -getmode <- function(v) { - uniqv <- unique(v) - return(uniqv[which.max(tabulate(match(v, uniqv)))]) -} - -height_mode <- getmode(NHANES_child$Height) - -paste("mode of children's height from NHANES:", height_mode) -``` - -```r -## [1] "mode of children's height from NHANES: 166.5" -``` - -鉴于此,我们针对单个数据点![](img/31df9c730e19ca29b59dce64b99d98c1.jpg)的模型将是: - -![](img/8f1a8d16a7bccf2f8932fa75c5d9486b.jpg) - -这就用一个数字重新定义了 1691 个孩子的整个集合,如果我们想预测任何一个新孩子的身高,那么我们的猜测将是相同的数字:166.5 厘米。 - -这个模型有多好?一般来说,我们用误差来定义模型的优度,它代表了模型和数据之间的差异;所有事物都是相等的,产生较低误差的模型就是更好的模型。 - -```r -# compute error compared to the mode and plot histogram - -error_mode <- NHANES_child$Height - height_mode -sprintf("average error from mode (cm): %0.2f", mean(error_mode)) -``` - -```r -## [1] "average error from mode (cm): -28.80" -``` - -我们发现平均个体的误差相当大,为-28.8 厘米。我们想要一个平均误差为零的模型,结果是如果我们使用算术平均值(通常称为 _ 平均值 _)作为我们的模型,那么情况就是这样。 - -平均值(通常用变量上的条表示,如![](img/17ee279e0e3562706ec890e1da87b839.jpg))定义为: - -![](img/5b53c23c73ac1d477dfe58135c39125b.jpg) - -也就是说,它是所有值的总和,除以值的数目。我们可以证明平均误差(因此平均误差)之和为零: - -![](img/58242f7f4f1e470a16a6c033ab66e6e0.jpg) - -![](img/a3c6e3addb29d9306b8debc2d55ef696.jpg) - -![](img/cc05829e6579c35a8c07658c455c5cc7.jpg) - -![](img/40c761930ed69a3d87b3e8efef7a60f2.jpg) - -![](img/29d5b7dc9f47275015354d5507b398f8.jpg) - -考虑到平均误差为零,这似乎是一个更好的模型。让我们确认一下它是正确的。 - -```r -# compute error from mean - -error_mean <- NHANES_child$Height - mean(NHANES_child$Height) -sprintf("average error for mean (cm): %e", mean(error_mean)) -``` - -```r -## [1] "average error for mean (cm): -9.864171e-15" -``` - -![Distribution of errors from the mean.](img/file14.png) - -图 5.2 平均值误差分布。 - -这里的平均误差是一个非常小的数字,虽然技术上不是零;我们稍后将在课程中讨论为什么会发生这种情况(这是由于计算机如何表示数字),但现在您可以将其视为接近零,称之为零。 - -尽管平均误差的平均值为零,但从图[5.2](#fig:meanError)中的柱状图可以看出,每个个体仍然存在一定程度的误差;有些是正的,有些是负的,而这些误差相互抵消。出于这个原因,我们通常用某种将正错误和负错误都算作坏的度量来总结错误。我们可以使用每个误差值的绝对值,但更常见的是使用平方误差,这是我们将在本课程后面看到的原因。 - -有几种常见的方法来总结在本书的不同点上会遇到的平方误差,因此了解它们之间的关系是很重要的。首先,我们可以简单地把它们加起来;这被称为 _ 平方误差之和 _。我们通常不使用它的原因是它的大小取决于数据点的数量,所以除非我们观察相同数量的观测结果,否则很难解释。其次,我们可以取平方误差值的平均值,即 _ 平均平方误差(mse)_。但是,由于我们在求平均值之前对这些值进行了平方处理,因此它们与原始数据的比例不同;它们位于![](img/b76fa8e9240baa1b063fdb1b291014ef.jpg)中。由于这个原因,我们也经常采用 mse 的平方根,我们称之为 _ 均方根误差(rmse)_,因此它与原始值的单位相同(在本例中为厘米)。 - -```r -# compute and print RMSE for mean and mode -rmse_mean <- sqrt(mean(error_mean**2)) - -rmse_mode <- sqrt(mean(error_mode**2)) - -print(paste("Mode: root mean squared error (centimeters):", rmse_mode)) -``` - -```r -## [1] "Mode: root mean squared error (centimeters): 39.4197926582947" -``` - -```r -print(paste("Mean: root mean squared error (centimeters):", rmse_mean)) -``` - -```r -## [1] "Mean: root mean squared error (centimeters): 26.9116738708646" -``` - -这表明平均值有相当大的误差——任何数据点平均距离平均值大约 27 厘米——但它仍然比模式好得多。 - -# - -## 5.2.1 改进我们的模型 - -我们能想象一个更好的模型吗?请记住,这些数据来自 NHANES 样本中的所有儿童,他们的年龄从 2 岁到 17 岁不等。鉴于年龄范围很广,我们可能期望我们的身高模型也包括年龄。让我们绘制身高和年龄的数据,看看这种关系是否真的存在。 - -![Height of children in NHANES, plotted without a model (A), with a linear model including only age (B) or age and a constant (C), and with a linear model that fits separate effects of age for males and females (D).](img/file15.png) - -图 5.3 NHANES 儿童的身高,未使用模型(a)绘制,线性模型仅包括年龄(b)或年龄和常数(c),线性模型适合男性和女性年龄的单独影响(d)。 - -图[5.3](#fig:childHeightLine)的面板 A 中的黑点显示了数据集中的个体,正如我们所期望的,身高和年龄之间似乎有着很强的关系。因此,我们可以建立一个高度与年龄相关的模型: - -![](img/c717cebcba3f84002e2514ee52151fcf.jpg) - -其中![](img/50705df736e9a7919e768cf8c4e4f794.jpg)是一个 _ 参数 _,我们用年龄相乘得到最小的误差。您可能已经注意到,这只是一条斜率为![](img/50705df736e9a7919e768cf8c4e4f794.jpg)的直线,为了看到这一点,让我们在数据顶部用蓝色绘制出最适合的直线(图[5.3](#fig:childHeightLine)中的面板 B)。这个模型显然有问题,因为这条线似乎没有很好地跟踪数据。事实上,这个模型(39.16)的 RMSE 实际上比只包含平均值的模型高!这个问题是因为我们的模型只包括年龄,这意味着当年龄为零时,模型的高度预测值必须为零。即使数据不包括任何年龄为零的子代,但当 x 为零时,该行在数学上被限制为 Y 值为零,这就解释了为什么该行被下拉到较年轻的数据点之下。我们可以通过在我们的模型中包含一个常量来解决这个问题,它基本上代表年龄等于零时高度的估计值;尽管在这个数据集中零岁的年龄是不合理的,但这是一个数学技巧,它将允许模型解释数据。模型为: - -![](img/5f3c8825cfc704e26a0eefeb99111407.jpg) - -其中 _ 常数 _ 是对所有个体的预测增加的一个常量值(我们也称为 _ 截距 _,因为它映射到一条直线方程中的截距上)。稍后我们还将了解如何实际计算这些值;现在,我们将使用 r 中的`lm()`函数计算常量的值,并使用![](img/50705df736e9a7919e768cf8c4e4f794.jpg)计算出最小的错误。图[5.3](#fig:childHeightLine)中的面板 C 显示了适合于 nhanes 数据的该模型,在该模型中,我们看到线条与数据的匹配比没有常量的要好得多。 - -```r -## [1] "model: height = 86.11 + 5.48*Age" -``` - -```r -## [1] "root mean squared error: 8.36" -``` - -使用这个模型,我们的误差要小得多——平均只有 8.36 厘米。你能想到其他可能与身高有关的变量吗?性别呢?在图[5.3](#fig:childHeightLine)的面板 D 中,我们用分别为男性和女性安装的线条绘制数据。从情节上看,男性和女性之间似乎存在差异,但相对较小,仅在青春期后出现。让我们估计一下这个模型,看看错误是什么样子的: - -```r -# compute model fit for modeling with age and gender - -model_age_gender <- lm(Height ~ Age + Gender, data = NHANES_child) - -rmse_age_gender <- - NHANES_child %>% - add_predictions(model_age_gender, var = "predicted_age_gender") %>% - summarise( - sqrt(mean((Height - predicted_age_gender)**2)) - ) %>% - pull() - -sprintf( - "model: height = %0.2f + %0.2f*Age + %0.2f*Gender", - model_age_gender$coefficients[1], - model_age_gender$coefficients[2], - model_age_gender$coefficients[3] -) -``` - -```r -## [1] "model: height = 84.37 + 5.48*Age + 3.28*Gender" -``` - -```r -print(sprintf("root mean squared error: %0.2f", rmse_age_gender)) -``` - -```r -## [1] "root mean squared error: 8.20" -``` - -在图[5.4](#fig:msePlot)中,我们绘制了不同模型的均方根误差值。从这一点上,我们可以看到,从一种模式到另一种模式,从一种模式到另一种模式,从一种模式到另一种模式再到另一种模式+年龄,这个模式变得更好了一点,而且只通过将性别也包括在内,就可以说更好了。 - -![Mean squared error plotted for each of the models tested above.](img/file16.png) - -图 5.4 为上述测试的每个模型绘制的均方误差。 - -## 5.3 什么使模型“良好”? - -从我们的统计模型中,我们通常需要两种不同的东西。首先,我们希望它能够很好地描述我们的数据;也就是说,我们希望它在建模数据时具有尽可能低的错误。第二,我们希望它能够很好地概括为新的数据集;也就是说,当我们将其应用于新的数据集时,我们希望它的错误尽可能低。事实证明,这两个特性经常会发生冲突。 - -为了理解这一点,让我们考虑一下错误的来源。首先,如果我们的模型是错误的,就可能发生这种情况;例如,如果我们不准确地说身高随年龄而下降而不是上升,那么我们的错误将高于正确模型的错误。同样,如果我们的模型中缺少一个重要因素,这也会增加我们的误差(就像我们把年龄从模型中排除在身高之外时那样)。然而,即使模型是正确的,误差也可能发生,因为数据的随机变化,我们通常称之为“测量误差”或“噪声”。有时,这实际上是由于我们的测量误差造成的——例如,当测量值依赖于人时,例如使用秒表测量竞走中经过的时间。在其他情况下,我们的测量设备是高度精确的(像测量体重的数字秤),但被测量的东西受到许多不同因素的影响,这些因素导致它是可变的。如果我们知道所有这些因素,那么我们就可以建立一个更精确的模型,但事实上,这几乎不可能。 - -让我们用一个例子来说明这一点。我们不使用实际数据,而是为示例生成一些数据;我们将在本课程后面更详细地讨论模拟数据的生成。假设我们想了解一个人的血液酒精含量(BAC)和他们在模拟驾驶考试中的反应时间之间的关系。我们可以生成一些模拟数据并绘制关系图(参见图[5.5](#fig:BACrt)的面板 A)。 - -![Simulated relationship between blood alcohol content and reaction time on a driving test, with best-fitting linear model. A: linear relationship with low measurement error. B: linear relationship with higher measurement error. C: Nonlinear relationship with low measurement error and (incorrect) linear model](img/file17.png) - -图 5.5 驾驶试验中血液酒精含量与反应时间的模拟关系,最佳拟合线性模型。A:线性关系,测量误差小。B:线性关系,测量误差较大。C:具有低测量误差和(不正确)线性模型的非线性关系 - -在这个例子中,反应时间随血液中的酒精含量而有系统地增加——蓝线表示最合适的模型,我们可以看到误差很小,这很明显,所有的点都非常接近这条线。 - -我们也可以想象数据显示相同的线性关系,但有更多的误差,如图[5.5](#fig:BACrt)的面板 B 所示。在这里,我们看到仍然有一个系统的反应时间增加与细菌,但它是更多的个人变量。 - -这两个例子都是 _ 线性模型 _ 似乎合适的,并且误差反映了我们测量中的噪声。线性模型规定两个变量之间的关系遵循直线。例如,在线性模型中,无论 BAC 的级别如何,BAC 的变化总是与反应时间的特定变化相关。 - -另一方面,还有其他情况下线性模型是不正确的,并且由于没有正确地指定模型,误差会增加。假设我们对咖啡因摄入量和测试表现之间的关系感兴趣。咖啡因等兴奋剂与测试成绩之间的关系往往是非线性的,也就是说,它不遵循直线。这是因为随着咖啡因含量的减少(当这个人变得更加警觉时),工作表现也会随之上升,但随着咖啡因含量的增加(当这个人变得紧张和紧张时),工作表现也会开始下降。我们可以模拟这种形式的数据,然后将线性模型拟合到数据中(参见图[5.5](#fig:BACrt)的面板 C)。蓝线表示最符合这些数据的直线;显然,存在高度错误。虽然在测试表现和咖啡因摄入量之间有着非常合法的关系,但它是一条曲线而不是一条直线。线性模型误差很大,因为它是这些数据的错误模型。 - -## 5.4 模型是否太好? - -错误听起来像是一件坏事,通常我们更喜欢误差较低的模型,而不是误差较高的模型。然而,我们在上面提到,在模型精确地适应当前数据集的能力和它概括为新数据集的能力之间存在着一种张力,并且结果表明,误差最小的模型在概括为新数据集时往往更糟糕! - -为了看到这一点,让我们再次生成一些数据,以便我们知道变量之间的真正关系。我们将创建两个模拟数据集,它们以完全相同的方式生成——它们只是添加了不同的随机噪声。 - -![An example of overfitting. Both datasets were generated using the same model, with different random noise added to generate each set. The left panel shows the data used to fit the model, with a simple linear fit in blue and a complex (8th order polynomial) fit in red. The root mean square error values for each model are shown in the figure; in this case, the complex model has a lower RMSE than the simple model. The right panel shows the second dataset, with the same model overlaid on it and the RMSE values computed using the model obtained from the first dataset. Here we see that the simpler model actually fits the new dataset better than the more complex model, which was overfitted to the first dataset.](img/file18.png) - -图 5.6 过拟合示例。两个数据集都是使用相同的模型生成的,每个数据集都添加了不同的随机噪声。左面板显示了用于拟合模型的数据,简单的蓝色线性拟合和复杂的(8 阶多项式)红色拟合。每个模型的均方根误差值如图所示;在这种情况下,复杂模型的 RMSE 比简单模型低。右面板显示了第二个数据集,上面覆盖了相同的模型,并且使用从第一个数据集获得的模型计算了 RMSE 值。在这里,我们看到更简单的模型实际上比更复杂的模型更适合新的数据集,后者过度适合第一个数据集。 - -图[5.6](#fig:Overfitting)中的左面板显示,更复杂的模型(红色)比简单的模型(蓝色)更适合数据。然而,当相同的模型应用于以相同方式生成的新数据集时,我们看到了相反的情况——这里我们看到,较简单的模型比较复杂的模型更适合新数据。从直观上看,较复杂的模型受第一个数据集中特定数据点的影响较大;由于这些数据点的确切位置受随机噪声的驱动,导致较复杂的模型很难适应新的数据集。这是一个我们称之为 _ 过拟合 _ 的现象,我们将在本课程中反复讨论。稍后,我们将学习一些技术,我们可以使用这些技术来防止过度拟合,同时仍然对数据结构敏感。现在,重要的是要记住,我们的模型适合需要是好的,但不是太好。正如阿尔伯特爱因斯坦(1933)所说:“几乎不能否认,所有理论的最高目标是使不可约的基本要素尽可能简单和少,而不必放弃对单一经验数据的充分表示。”这通常被解释为:“一切应该尽可能简单,但不能简单。” - -## 5.5 最简单的模型:平均值 - -我们已经遇到了平均值(或平均值),事实上,大多数人知道平均值,即使他们从未上过统计课。它通常用来描述我们称之为数据集“中心趋势”的东西——也就是说,数据以什么值为中心?大多数人不认为计算平均值是将模型与数据相匹配。然而,这正是我们计算平均值时要做的。 - -我们已经看到了计算数据样本平均值的公式: - -![](img/5b53c23c73ac1d477dfe58135c39125b.jpg) - -注意,我说过这个公式是专门针对数据的 _ 样本 _ 的,它是从更大的人群中选择的一组数据点。我们希望通过一个样本来描述一个更大的群体——我们感兴趣的全套个体。例如,如果我们是一个政治民意测验者,我们感兴趣的人群可能都是注册选民,而我们的样本可能只包括从这个人群中抽取的几千人。在本课程的后面,我们将更详细地讨论抽样,但现在重要的一点是统计学家通常喜欢使用不同的符号来区分描述样本值的统计数据和描述总体值的参数;在这种情况下,公式 a 表示总体平均值(表示为![](img/4e4d506c887c843f43a8fbcbe1884ffd.jpg))为: - -![](img/31b706b8ff77ab1267e8325dd64b1954.jpg) - -其中 n 是整个人口的大小。 - -我们已经看到,平均值是保证给我们的平均误差为零的汇总统计。平均值还有另一个特点:它是最小化平方误差总和(SSE)的汇总统计。在统计学中,我们称之为“最佳”估计量。我们可以从数学上证明这一点,但我们将在图[5.7](#fig:MinSSE)中以图形方式证明这一点。 - -![A demonstration of the mean as the statistic that minimizes the sum of squared errors. Using the NHANES child height data, we compute the mean (denoted by the blue bar). Then, we test a range of other values, and for each one we compute the sum of squared errors for each data point from that value, which are denoted by the black curve. We see that the mean falls at the minimum of the squared error plot.](img/file19.png) - -图 5.7 平均值作为统计值的证明,可使平方误差之和最小化。使用 nhanes 子高度数据,我们计算平均值(用蓝色条表示)。然后,我们测试其他值的范围,对于每个值,我们从该值计算每个数据点的平方误差之和,该值由黑色曲线表示。我们看到平均值降到平方误差图的最小值。 - -SSE 的最小化是一个很好的特性,这就是为什么平均值是最常用的统计数据汇总。然而,均值也有一个阴暗面。假设一个酒吧有五个人,我们检查每个人的收入: - -```r -# create income data frame - -incomeDf <- - tibble( - income = c(48000, 64000, 58000, 72000, 66000), - person = c("Joe", "Karen", "Mark", "Andrea", "Pat") -) -# glimpse(incomeDf) - -panderOptions('digits',2) -pander(incomeDf) -``` - - -| 收入 | 人 | -| --- | --- | -| 48000 个 | 乔 | -| 64000 个 | 凯伦 | -| 5.8 万 | 作记号 | -| 72000 个 | 安德莉亚 | -| 66000 个 | 拍打 | - -```r -sprintf("Mean income: %0.2f", mean(incomeDf$income)) -``` - -```r -## [1] "Mean income: 61600.00" -``` - -这个平均值似乎是这五个人收入的一个很好的总结。现在让我们看看如果碧昂斯·诺尔斯走进酒吧会发生什么: - -```r -# add Beyonce to income data frame - -incomeDf <- - incomeDf %>% - rbind(c(54000000, "Beyonce")) %>% - mutate(income = as.double(income)) - -pander(incomeDf) -``` - - -| income | person | -| --- | --- | -| 48000 | Joe | -| 64000 | Karen | -| 58000 | Mark | -| 72000 | Andrea | -| 66000 | Pat | -| 5.4E+07 型 | 碧昂斯 | - -```r -sprintf("Mean income: %0.2f", mean(incomeDf$income)) -``` - -```r -## [1] "Mean income: 9051333.33" -``` - -平均值现在接近 1000 万美元,这并不能真正代表酒吧里的任何人——特别是,它受到了碧昂丝价值的巨大驱动。一般来说,平均值对极值非常敏感,这就是为什么在使用平均值汇总数据时,确保没有极值总是很重要的原因。 - -# - -## 5.5.1 中间值 - -如果我们想以对异常值不太敏感的方式总结数据,我们可以使用另一种称为 _ 中位数 _ 的统计。如果我们按大小来排序所有的值,那么中值就是中间值。如果有一个偶数的值,那么中间会有两个值,在这种情况下,我们取这两个数字的平均值(即中间点)。 - -让我们来看一个例子。假设我们要总结以下值: - -```r -# create example data frame -dataDf <- - tibble( - values = c(8, 6, 3, 14, 12, 7, 6, 4, 9) - ) - -pander(dataDf) -``` - - -| 价值观 | -| --- | -| 8 个 | -| 6 | -| 三 | -| 14 | -| 12 个 | -| 7 | -| 6 | -| 4 | -| 9 | - -如果我们对这些值进行排序: - -```r -# sort values and print -dataDf <- - dataDf %>% - arrange(values) - -pander(dataDf) -``` - - -| values | -| --- | -| 3 | -| 4 | -| 6 | -| 6 | -| 7 | -| 8 | -| 9 | -| 12 | -| 14 | - -中间值是中间值,在本例中是 9 个值中的第 5 个。 - -平均值最小化平方误差之和,而中位数最小化一个微小的不同数量:绝对误差之和。这就解释了为什么它对异常值不那么敏感——与采用绝对值相比,平方化会加剧较大误差的影响。我们可以在收入示例中看到这一点: - -```r -# print income table -pander(incomeDf) -``` - - -| income | person | -| --- | --- | -| 48000 | Joe | -| 64000 | Karen | -| 58000 | Mark | -| 72000 | Andrea | -| 66000 | Pat | -| 5.4e+07 | Beyonce | - -```r -sprintf('Mean income: %.2f',mean(incomeDf$income)) -``` - -```r -## [1] "Mean income: 9051333.33" -``` - -```r -sprintf('Median income: %.2f',median(incomeDf$income)) -``` - -```r -## [1] "Median income: 65000.00" -``` - -中位数更能代表整个群体,对一个大的离群值不太敏感。 - -既然如此,我们为什么要用平均数呢?正如我们将在后面的章节中看到的,平均值是“最佳”估计值,因为与其他估计值相比,它在样本之间的差异较小。这取决于我们是否值得考虑对潜在异常值的敏感性——统计数据都是关于权衡的。 - -## 5.6 模式 - -有时,我们希望描述非数字数据集的中心趋势。例如,假设我们想知道哪种型号的 iPhone 最常用。假设我们问一组 iPhone 用户他们拥有哪种型号,并得到以下结果: - -```r -# compute mean of iPhone model numbers -iphoneDf <- - tribble( - ~iPhoneModel, ~count, - 5, 325, - 6, 450, - 7, 700, - 8, 625 -) - -meanPhoneNumber <- - iphoneDf %>% - summarize( - sum(iPhoneModel * count) / sum(count) - ) %>% - pull() -``` - -如果我们取这些值的平均值,我们会发现平均的 iPhone 型号是 6.77,这显然是无稽之谈,因为 iPhone 型号是按顺序排列的。在这种情况下,对集中趋势更合适的度量是模式,这是数据集中最常见的值,正如我们前面讨论的那样。 - -## 5.7 变异性:平均值与数据的拟合程度如何? - -一旦我们描述了数据的中心趋势,我们通常还想描述数据的变量——有时也称为“分散度”,这反映了一个事实,即它描述了数据的分散程度。 - -我们已经遇到了上面的平方误差之和,这是最常用的变异性度量的基础:方差 _ 和标准差 _。一个总体的方差(称为![](img/0f8ca157d9a8634321af2742af17e19a.jpg))只是平方误差除以观测次数的总和,也就是说,你之前遇到的 _ 平均平方误差 _。__ - -![](img/40df463030fe69b08c9f09cd9b17b0f5.jpg) - -其中![](img/4e4d506c887c843f43a8fbcbe1884ffd.jpg)是人口平均数。标准差就是这个的平方根,也就是我们以前看到的 _ 均方根误差 _。标准偏差是有用的,因为误差的单位与原始数据相同(撤消我们应用于误差的平方)。 - -我们通常无法访问整个群体,因此我们必须使用一个样本来计算方差,我们称之为![](img/72f5df22b97eb87e92f0f6fa566f7f4d.jpg),其中“hat”表示这是一个基于样本的估计。![](img/72f5df22b97eb87e92f0f6fa566f7f4d.jpg)的方程式与![](img/0f8ca157d9a8634321af2742af17e19a.jpg)的方程式相似: - -![](img/b18d9e2af672f64fe6dcbb5c47feb221.jpg) - -这两个方程之间的唯一区别是我们用 n-1 而不是 n 来除。这与一个基本的统计概念有关:_ 自由度 _。记住,为了计算样本方差,我们首先必须估计样本均值![](img/17ee279e0e3562706ec890e1da87b839.jpg)。在估计了这一点之后,数据中的一个值就不再是自由变化的了。例如,假设我们有以下数据点: - -```r -# generate example data points - -dfDf <- - tibble( - x = c(3, 5, 7, 9, 11) - ) - -pander(dfDf) -``` - - -| X | -| --- | -| 三 | -| 5 个 | -| 7 | -| 9 | -| 11 个 | - -现在我们计算平均值: - -```r -# compute mean - -meanx <- - dfDf %>% - summarize( - mean(x) - ) %>% - pull() - -sprintf('%0.2f',meanx) -``` - -```r -## [1] "7.00" -``` - -因为我们知道这个数据集的平均值是 7,所以我们可以计算出如果缺少某个特定的值会是什么。例如,假设我们要模糊第一个值(3)。这样做之后,我们仍然知道它的值必须是 3,因为 7 的平均值意味着所有值的总和是![](img/1e0ea8aaf5e5da62eae20709151b1d01.jpg)和![](img/65b5e4fedae569a671fceb3f111acea6.jpg)。 - -所以当我们说我们已经“失去”了一定程度的自由,这意味着有一个值在拟合模型后是不能自由改变的。在样本方差的背景下,如果我们不考虑失去的自由度,那么我们对样本方差的估计将是 _ 偏向 _——也就是说,它将小于真实(总体)值。 - -## 5.8 使用模拟了解统计数据 - -我非常了解使用计算机模拟来理解统计概念,在以后的课程中,我们将深入探讨这些概念的使用。在这里,我们将通过询问在计算样本方差时是否可以确认是否需要从样本大小中减去 1 来介绍这个想法。 - -让我们将来自 nhanes 数据的整个儿童样本视为我们的“群体”,并查看使用分母中的 n 或 n-1 计算样本方差对数据中大量模拟随机样本的群体方差有多好。现在不要担心细节——我们稍后会回到课程中。 - -```r -# compare variance estimates using N or N-1 in denominator - -population_variance <- - NHANES_child %>% - summarize( - var(Height) - ) %>% - pull() - -# take 100 samples and estimate the sample variance using both N or N-1 in the demoninator -sampsize <- 50 -nsamp <- 1000 -varhat_n <- array(data = NA, dim = nsamp) -varhat_nm1 <- array(data = NA, dim = nsamp) - -for (i in 1:nsamp) { - samp <- sample_n(NHANES_child, 1000)[1:sampsize, ] - sampmean <- mean(samp$Height) - sse <- sum((samp$Height - sampmean)**2) - varhat_n[i] <- sse / sampsize - varhat_nm1[i] <- sse / (sampsize - 1) -} - -sprintf("population variance: %.2f", population_variance) -``` - -```r -## [1] "population variance: 724.67" -``` - -```r -sprintf("variance estimate(n): %.2f", mean(varhat_n)) -``` - -```r -## [1] "variance estimate(n): 709.03" -``` - -```r -sprintf("variance estimate(n-1): %.2f", mean(varhat_nm1)) -``` - -```r -## [1] "variance estimate(n-1): 723.50" -``` - -这表明上述理论是正确的:以![](img/6a5f27b69ff34f05786b41f86ccfbbc7.jpg)为分母的方差估计与以全数据(即总体)为分母计算的方差非常接近,而以![](img/493731e423d5db62086d0b8705dda0c8.jpg)为分母计算的方差与真实的 v 值相比有偏差(较小)。值。 - -## 5.9 Z 分数 - -```r -crimeData <- - read.table( - "data/CrimeOneYearofData_clean.csv", - header = TRUE, - sep = "," - ) - -# let's drop DC since it is so small -crimeData <- - crimeData %>% - dplyr::filter(State != "District of Columbia") - -caCrimeData <- - crimeData %>% - dplyr::filter(State == "California") -``` - -以分布的中心趋势和变异性为特征后,通常有助于根据个体分数相对于总体分布的位置来表示。假设我们有兴趣描述不同州犯罪的相对水平,以确定加利福尼亚是否是一个特别危险的地方。我们可以使用来自[FBI 统一犯罪报告网站](https://www.ucrdatatool.gov/Search/Crime/State/RunCrimeOneYearofData.cfm)的 2014 年数据来问这个问题。图[5.8](#fig:crimeHist)的左面板显示了每个州暴力犯罪数量的柱状图,突出了加州的价值。从这些数据来看,加利福尼亚州似乎非常危险,当年共有 153709 起犯罪。 - -![Left: Histogram of the number of violent crimes. The value for CA is plotted in blue. Right: A map of the same data, with number of crimes plotted for each state in color.](img/file20.png) - -图 5.8 左:暴力犯罪数量的柱状图。CA 的值以蓝色绘制。右图:一张相同数据的地图,用彩色绘制每个州的犯罪数量。 - -使用 r,还可以很容易地生成一个显示变量跨状态分布的地图,如图[5.8](#fig:crimeHist)右面板所示。 - -然而,你可能已经意识到加州在美国任何一个州的人口都是最多的,所以它也会有更多的犯罪是合理的。如果我们将这两种情况相提并论(参见图[5.9](#fig:popVsCrime)的左面板),我们就会发现人口与犯罪数量之间存在直接关系。 - -![Left: A plot of number of crimes versus population by state. Right: A histogram of per capita crime rates, expressed as crimes per 100,000 people.](img/file21.png) - -图 5.9 左:按州划分的犯罪数量与人口的关系图。对:人均犯罪率的柱状图,以每 10 万人的犯罪率表示。 - -我们不应使用犯罪的原始数量,而应使用人均暴力犯罪率,即犯罪数量除以国家人口所得的比率。FBI 的数据集已经包含了这个值(以每 100000 人的比率表示)。 - -```r -# print crime rate statistics, normalizing for population - -sprintf("rate of 2014 violent crimes in CA: %.2f", caCrimeData$Violent.Crime.rate) -``` - -```r -## [1] "rate of 2014 violent crimes in CA: 396.10" -``` - -```r -sprintf("mean rate: %.2f", mean(crimeData$Violent.Crime.rate)) -``` - -```r -## [1] "mean rate: 346.81" -``` - -```r -sprintf("std of rate: %.2f", sd(crimeData$Violent.Crime.rate)) -``` - -```r -## [1] "std of rate: 128.82" -``` - -从右图[5.9](#fig:popVsCrime)中我们可以看出,加利福尼亚毕竟没有那么危险——它每 10 万人的犯罪率为 396.1,略高于 346.81 的平均值,但在许多其他州的范围内。但是,如果我们想更清楚地了解它与发行版的其他部分有多远呢? - -_z-score_ 允许我们以一种方式表示数据,从而更深入地了解每个数据点与整体分布的关系。如果我们知道总体平均值![](img/4e4d506c887c843f43a8fbcbe1884ffd.jpg)和标准差![](img/2469b2bd2a1ab19ebfcee223dcb52bb1.jpg)的值,则计算数据点 z 得分的公式为: - -![](img/8622fe3fbd8234f114c414fbf51c2618.jpg) - -直观地说,你可以把 z 值看作是告诉你离任何数据点的平均值有多远,以标准偏差为单位。我们可以根据犯罪率数据来计算,如图[5.10](#fig:crimeZplot)所示。 - -```r -## [1] "mean of Z-scored data: 1.4658413372004e-16" -``` - -```r -## [1] "std deviation of Z-scored data: 1" -``` - -![Scatterplot of original crime rate data against Z-scored data.](img/file22.png) - -图 5.10 原始犯罪率数据与 Z 评分数据的散点图。 - -散点图表明,z-得分的过程并没有改变数据点的相对分布(可以看到原始数据和 z-得分数据在相互作图时落在一条直线上),只是将它们移动到一个平均值为零和一个标准差。一个。然而,如果你仔细观察,你会发现平均值并不完全为零——只是非常小。这里所发生的是,计算机以一定的 _ 数字精度 _ 表示数字,这意味着有些数字不完全为零,但小到 R 认为它们为零。 - -```r -# examples of numerical precision - -print(paste("smallest number such that 1+x != 1", .Machine$double.eps)) -``` - -```r -## [1] "smallest number such that 1+x != 1 2.22044604925031e-16" -``` - -```r -# We can confirm this by showing that adding anything less than that number to -# 1 is treated as 1 by R -print((1 + .Machine$double.eps) == 1) -``` - -```r -## [1] FALSE -``` - -```r -print((1 + .Machine$double.eps / 2) == 1) -``` - -```r -## [1] TRUE -``` - -```r -# we can also look at the largest number -print(paste("largest number", .Machine$double.xmax)) -``` - -```r -## [1] "largest number 1.79769313486232e+308" -``` - -```r -# similarly here, we can see that adding 1 to the largest possible number -# is no different from the largest possible number, in R's eyes at least. -print((1 + .Machine$double.xmax) == .Machine$double.xmax) -``` - -```r -## [1] TRUE -``` - -图[5.11](#fig:crimeZmap)显示了使用地理视图的 Z 评分犯罪数据。 - -![Crime data rendered onto a US map, presented as Z-scores.](img/file23.png) - -图 5.11 呈现在美国地图上的犯罪数据,以 z 分数表示。 - -这为我们提供了一个稍微更具解释性的数据视图。例如,我们可以看到内华达州、田纳西州和新墨西哥州的犯罪率都比平均值高出大约两个标准差。 - -# - -## 5.9.1 解释 z-分数 - -“z-得分”中的“z”源于标准正态分布(即平均值为零且标准偏差为 1 的正态分布)通常被称为“z”分布。我们可以使用标准正态分布来帮助我们了解相对于分布的其余部分,特定的 z 分数告诉我们数据点的位置。 - -![Density (top) and cumulative distribution (bottom) of a standard normal distribution, with cutoffs at one standard deviation above/below the mean.](img/file24.png) - -图 5.12 标准正态分布的密度(顶部)和累积分布(底部),在平均值以上/以下的一个标准偏差处进行截止。 - -图[5.12](#fig:zDensityCDF)中的上面板显示,我们预计约 16%的值会落在![](img/67237d3f9b5b8a31ea44a87184389bb5.jpg)中,同样的比例也会落在![](img/88cf7506d0716660caaec77acb51a9c7.jpg)中。 - -![Density (top) and cumulative distribution (bottom) of a standard normal distribution, with cutoffs at two standard deviations above/below the mean](img/file25.png) - -图 5.13 标准正态分布的密度(顶部)和累积分布(底部),平均值以上/以下两个标准偏差处的截止值 - -图[5.13](#fig:zDensity2SD)显示了两个标准偏差的相同曲线图。在这里,我们看到只有约 2.3%的值落在![](img/68ba2813e97287d88b6694f681aed629.jpg)中,同样的也落在![](img/9817dc62b48fd93386eb42f43f1d3e2c.jpg)中。因此,如果我们知道特定数据点的 z 值,我们可以估计找到一个值的可能性或可能性有多大,至少与该值一样极端,这样我们就可以将值放入更好的上下文中。 - -# - -## 5.9.2 标准化评分 - -假设我们希望生成平均值为 100、标准差为 10 的标准化犯罪评分,而不是 Z 评分。这类似于用智力测验的分数来产生智力商数(IQ)的标准化。我们可以简单地将 z 分数乘以 10,然后再加 100。 - -```r -## [1] "mean of standardized score data: 100" -``` - -```r -## [1] "std deviation of standardized score data: 10" -``` - -![Crime data presented as standardized scores with mean of 100 and standard deviation of 10.](img/file26.png) - -图 5.14 犯罪数据以标准化分数呈现,平均值为 100,标准差为 10。 - -## - -## 5.9.2.1 使用 z 分比较分布 - -z 值的一个有用的应用是比较不同变量的分布。假设我们想比较暴力犯罪和财产犯罪在各州的分布情况。在图[5.15](#fig:crimeTypePlot)的左面板中,我们将这些图形绘制在一起,用蓝色绘制 CA。正如你所看到的,财产犯罪的原始率远远高于暴力犯罪的原始率,所以我们不能直接比较数字。但是,我们可以将这些数据的 z 值相互绘制出来(图[5.15](#fig:crimeTypePlot)的右面板)——这里我们再次看到数据的分布没有改变。把每一个变量的数据放入 z 值后,就可以进行比较了,让我们看到加州实际上处于暴力犯罪和财产犯罪分布的中间。 - -![Plot of violent vs. property crime rates (left) and Z-scored rates (right).](img/file27.png) - -图 5.15 暴力与财产犯罪率(左)和 Z 得分率(右)的曲线图。 - -让我们再给情节加一个因素:人口。在图[5.16](#fig:crimeTypePopPlot)的左面板中,我们使用绘图符号的大小来显示这一点,这通常是向绘图添加信息的一种有用方法。 - -![Left: Plot of violent vs. property crime rates, with population size presented through the size of the plotting symbol; California is presented in blue. Right: Difference scores for violent vs. property crime, plotted against population. ](img/file28.png) - -图 5.16 左图:暴力犯罪率与财产犯罪率的对比图,人口规模以绘图符号的大小表示;加利福尼亚州以蓝色表示。对:针对人口的暴力和财产犯罪的得分差异。 - -因为 z 分数是直接可比的,所以我们也可以计算“暴力差异”分数,该分数表示各州暴力与非暴力(财产)犯罪的相对比率。然后我们可以将这些得分与人口进行对比(参见图[5.16](#fig:crimeTypePopPlot)的右面板)。这说明我们如何使用 z-分数将不同的变量放在一个共同的尺度上。 - -值得注意的是,最小的国家在两个方向上的差异似乎最大。虽然这可能会吸引我们去观察每一个状态,并试图确定为什么它有一个高或低的差异分数,但这可能反映了这样一个事实,即从较小的样本中获得的估计值必然会有更多的变量,正如我们将在几章中更详细地讨论的那样。 \ No newline at end of file diff --git a/docs/6.md b/docs/6.md deleted file mode 100644 index 044f3bdda58c0207b631076dc833bcbc90dcab50..0000000000000000000000000000000000000000 --- a/docs/6.md +++ /dev/null @@ -1,214 +0,0 @@ -# 六、数据可视化 - -对于数据集,我们可以做的最重要的事情之一是查看它,但是有许多方法可以查看数据,其中一些方法比其他方法更有效。在本章中,我们将讨论如何有效地可视化数据。 - -## 6.1 数据可视化如何拯救生命 - -1986 年 1 月 28 日,挑战者号航天飞机在起飞 73 秒后爆炸,机上 7 名宇航员全部遇难。事故发生后,对事故原因进行了正式调查,发现连接固体火箭助推器两段的 O 形圈发生泄漏,导致大型液体燃料箱接头失效、爆炸(见图[6.1[HTG1 页)。](#fig:srbLeak) - -![An image of the solid rocket booster leaking fuel, seconds before the explostion. By NASA (Great Images in NASA Description) [Public domain], via Wikimedia Commons](img/file29.jpg) - -图 6.1 爆炸前几秒固体火箭助推器泄漏燃料的图像。由美国国家航空航天局(美国国家航空航天局描述的伟大图像)【公共领域】,通过维基共享资源 - -调查发现,美国航天局决策过程的许多方面都存在缺陷,特别是在美国航天局工作人员和建造固体火箭助推器的承包商莫顿·齐奥科尔的工程师之间举行的一次会议上。这些工程师特别关注,因为据预测,发射当天早上的温度很低,而且他们从先前发射的数据中发现,O 型环的性能在较低的温度下受到了影响。在发射前一天晚上的一次会议上,工程师们向美国宇航局的管理人员展示了他们的数据,但无法说服他们推迟发射。 - -可视化专家 EdwardTufte 认为,如果能正确地展示所有数据,工程师们可能会更有说服力。特别是,他们可以展示一个像图[6.2](#fig:challengerTemps)所示的数字,这突出了两个重要事实。首先,它表明,O 型环的损伤量(定义为固体火箭助推器在以前的飞行中从海洋中回收后在环外发现的腐蚀和烟尘量)与起飞时的温度密切相关。第二,它显示 1 月 28 日上午的预测温度范围(显示在红色阴影区域)远远超出了之前所有发射的范围。虽然我们不能确定,但至少似乎可以相信,这可能更有说服力。 - -![A replotting of Tufte's damage index data. The blue line shows the trend in the data, and the red patch shows the projected temperatures for the morning of the launch.](img/file30.png) - -图 6.2 复刻凝灰岩损伤指数数据。蓝色的线显示了数据的趋势,红色的补丁显示了发射早晨的预计温度。 - -## 6.10 其他因素的修正 - -通常,我们对绘制感兴趣的变量受我们感兴趣的因素以外的其他因素影响的数据感兴趣。例如,假设我们想了解汽油价格随时间的变化。图[6.16](#fig:gasPrices)显示了历史天然气价格数据,绘制了通货膨胀调整或不调整。虽然未经调整的数据显示大幅增长,但经调整的数据显示,这主要是通胀的反映。其他需要根据其他因素调整数据的例子包括人口规模(如前一章中的犯罪率示例所示)和不同季节收集的数据。 - -![The price of gasoline in the US from 1930 to 201 (obtained from http://www.thepeoplehistory.com/70yearsofpricechange.html) with or without correction for inflation (based on Consumer Price Index).](img/file44.png) - -图 6.16 美国 1930-201 年汽油价格(从[http://www.thepoplehistory.com/70yearsofpricechange.html](http://www.thepeoplehistory.com/70yearsofpricechange.html)获得),有无通货膨胀修正(基于消费者价格指数)。 - -## 6.11 建议阅读和视频 - -* [_ 数据可视化基础 _](https://serialmentor.com/dataviz/),克劳斯·威尔克著 -* _ 视觉解释 _,Edward Tufte 著 -* _ 可视化数据 _,作者:William S.Cleveland -* _ 眼与心的图形设计 _,斯蒂芬·M·科斯林著 -* [_ 人类如何看待数据 _](https://www.youtube.com/watch?v=fSgEeI2Xpdc&feature=youtu.be),作者:约翰·劳瑟 - -## 6.2 绘图解剖 - -绘制数据的目的是以二维(有时是三维)表示形式呈现数据集的摘要。我们将尺寸称为 _ 轴 _——水平轴称为 _X 轴 _,垂直轴称为 _Y 轴 _。我们可以按照突出显示数据值的方式沿轴排列数据。这些值可以是连续的,也可以是分类的。 - -我们可以使用许多不同类型的地块,它们有不同的优点和缺点。假设我们有兴趣在 nhanes 数据集中描述男女身高差异。图[6.3](#fig:plotHeight)显示了绘制这些数据的四种不同方法。 - -1. 面板 A 中的条形图显示了平均值的差异,但没有显示这些平均值周围的数据分布有多广——正如我们稍后将看到的,了解这一点对于确定我们认为两组之间的差异是否足够大而重要至关重要。 - -2. 第二个图显示了所有数据点重叠的条形图——这使得男性和女性的身高分布重叠更加清晰,但由于数据点数量众多,仍然很难看到。 - -一般来说,我们更喜欢使用一种绘图技术,它可以清楚地显示数据点的分布情况。 - -1. 在面板 C 中,我们看到一个清晰显示数据点的例子,称为 _ 小提琴图 _,它绘制了每种情况下的数据分布(经过一点平滑处理)。 - -2. 另一个选项是面板 D 中显示的 _ 方框图 _,它显示了中间值(中心线)、可变性测量值(方框宽度,基于称为四分位范围的测量值)和任何异常值(由线条末端的点表示)。这两种方法都是显示数据的有效方法,为数据的分发提供了良好的感觉。 - -![Four different ways of plotting the difference in height between men and women in the NHANES dataset. Panel A plots the means of the two groups, which gives no way to assess the relative overlap of the two distributions. Panel B shows the same bars, but also overlays the data points, jittering them so that we can see their overall distribution. Panel C shows a violin plot, which shows the distribution of the datasets for each group. Panel D shows a box plot, which highlights the spread of the distribution along with any outliers (which are shown as individual points).](img/file31.png) - -图 6.3 nhanes 数据集中绘制男女身高差异的四种不同方法。面板 A 绘制了两组的平均值,这无法评估两个分布的相对重叠。面板 B 显示了相同的条,但也覆盖了数据点,使它们抖动,以便我们可以看到它们的总体分布。面板 C 显示了小提琴图,显示了每组数据集的分布。面板 D 显示了一个方框图,它突出了分布的分布以及任何异常值(显示为单个点)。 - -## 6.3 使用 ggplot 在 R 中绘制 - -在 R 中有许多不同的绘制数据的工具,但我们将重点关注由名为`ggplot2`的包提供的`ggplot()`函数。ggplot 是非常强大的,但是使用它需要了解它的工作原理。 - -假设我们要创建一个 _ 散点图 _,该散点图绘制了每个成年人的身高和体重,样本来自 nhanes 数据集的 150 人,不同的标记用于表示男性和女性。首先,我们创建示例: - -```r -NHANES_sample <- - NHANES_adult %>% - drop_na(Weight, Gender) %>% #remove rows (individuals) with missing values for Weight and Gender - sample_n(150) #take a random sample of n = 150 rows (individuals) -``` - -现在让我们设置`ggplot()`命令。这需要我们具体说明两件事。首先,我们需要告诉它从哪个数据帧获取数据(在本例中是`NHANES_sample`)。其次,我们需要通过 _ 美学 _ 函数`aes()`来告诉它要使用的数据框架中的哪些变量。在这种情况下,我们要绘制 X 轴上的高度和 Y 轴上的权重。结果如图[6.4](#fig:emptyPlot)所示:该命令生成一组绘图轴,但实际上没有显示任何数据。 - -```r -NHANES_sample %>% - ggplot(aes(x = Height, y = Weight)) -``` - -![Empty plot frame generated by ggplot()](img/file32.png) - -图 6.4 由 ggplot()生成的空图框 - -接下来我们需要添加数据的表示。我们告诉`ggplot`要显示什么的方法是向主`ggplot()`命令添加各种命令。特别是,我们通常需要添加一个 _ 几何体 _ 或“geom”,它指定如何在绘图中排列数据。例如,为了显示每个数据点,我们可以使用`geom_point()`几何图形,如图[6.5](#fig:simpleGeom)所示。每个数据点代表我们的`NHANES_sample`数据集中的一个单独的行,每个行对应于这个数据集中的一个人。 - -```r -NHANES_sample %>% - ggplot(aes(x = Height, y = Weight)) + - geom_point() -``` - -![Simple scatter plot](img/file33.png) - -图 6.5 简单散点图 - -最后,我们要根据不同的性别用不同的颜色绘制点。我们只需在美学中添加一个 _ 颜色 _ 关键字,它告诉`geom_point()`函数按性别分开颜色点。如图[6.6](#fig:colorPoints)所示。这个图还显示了一个示例,说明了如何在一个图中包含多个几何层——在本例中,我们使用`geom_smooth()`分别按性别绘制最能描述身高和体重之间关系的线。线条周围的阴影反映了我们对当时估计的信心。 - -```r -NHANES_sample %>% - ggplot(aes(x = Height, y = Weight, color = Gender)) + - geom_point() + - geom_smooth(method = "lm") -``` - -![Scatterplot with points separately colored by Gender.](img/file34.png) - -图 6.6 散点图,各点按性别分别着色。 - -## 6.4 良好可视化原则 - -许多书都是关于数据的有效可视化的。有一些原则是大多数作者都同意的,而其他的则更具争议性。这里我们总结了一些主要原则;如果您想了解更多,那么在本章末尾的 _ 建议阅读 _ 部分列出了一些很好的资源。 - -下面是我们对数据可视化的一些重要原则的提炼。 - -# - -## 6.4.1 展示数据并使其脱颖而出 - -假设我做了一项研究,研究了牙齿健康和使用牙线的时间之间的关系,我想把我的数据形象化。图[6.7](#fig:dentalFigs)显示了这些数据的四种可能的表示。 - -1. 在面板 A 中,我们实际上并不显示数据,只是一条表示数据之间关系的线。这显然不是最佳的,因为我们实际上看不到底层数据是什么样子的。 - -面板 B-D 显示了绘制实际数据的三种可能结果,其中每个绘图显示了可能生成数据的不同方式。 - -1. 如果我们看到面板 B 中的情节,我们可能会怀疑——真实数据很少会遵循如此精确的模式。 - -2. 另一方面,面板 C 中的数据看起来像真实的数据——它们显示了一种总体趋势,但是它们是混乱的,就像世界上通常的数据一样。 - -3. 面板 D 中的数据表明,两个变量之间的明显关系仅仅是由一个个体引起的,我们称之为 _ 离群值 _,因为它们远远超出了组内其他变量的模式。很明显,我们可能不想从由一个数据点驱动的效果得出很多结论。此图强调了为什么 _ 总是 _ 重要的原因,即在过于相信任何数据摘要之前查看原始数据。 - -![Four different possible presentations of data for the dental health example. Each point in the scatter plot represents one data point in the dataset, and the line in each plot represents the linear trend in the data.](img/file35.png) - -图 6.7 牙齿健康示例的四种不同可能数据表示。散点图中的每个点表示数据集中的一个数据点,每个图中的线表示数据中的线性趋势。 - -## 6.5 最大化数据/墨水比 - -Edward Tufte 提出了一个称为数据/墨水比的想法: - -![](img/53ec50573426da0a20d7442881d47b5f.jpg) - -这样做的目的是最小化视觉混乱,让数据显示出来。例如,以图[6.8](#fig:dataInkExample)中牙齿健康数据的两个演示为例。两个面板显示相同的数据,但面板 A 更容易理解,因为它的数据/墨水比率相对较高。 - -![An example of the same data plotted with two different data/ink ratios.](img/file36.png) - -图 6.8 用两个不同的数据/墨水比绘制的相同数据示例。 - -## 6.6 避免图表垃圾 - -特别常见的是,在流行媒体中看到数据的展示,这些展示带有许多视觉元素,这些元素在主题上与内容相关,但与实际数据无关。这被称为 _chartjunk_,应该不惜一切代价避免。 - -避免图表垃圾的一个好方法是避免使用流行的电子表格程序绘制数据。例如,图[6.9](#fig:chartJunk)(使用 Microsoft Excel 创建)中的图表描绘了美国不同宗教的相对流行程度。这个数字至少有三个问题: - -* 它在每根与实际数据无关的条上都覆盖了图形。 -* 它有一个分散的背景纹理。 -* 它使用三维条形图 - -![An example of chart junk.](img/file37.png) - -图 6.9 图表垃圾示例。 - -## 6.7 避免数据失真 - -通常可以使用可视化来扭曲数据集的消息。一个非常常见的方法是使用不同的轴缩放来放大或隐藏数据模式。例如,假设我们有兴趣看看美国的暴力犯罪率是否发生了变化。在图[6.10](#fig:crimePlotAxes)中,我们可以看到这些数据的绘制方式,要么使犯罪看起来保持不变,要么使犯罪率下降。相同的数据可以讲述两个截然不同的故事! - -![Crime data from 1990 to 2014 plotted over time. Panels A and B show the same data, but with different axis ranges. Data obtained from https://www.ucrdatatool.gov/Search/Crime/State/RunCrimeStatebyState.cfm](img/file38.png) - -图 6.10 1990 年至 2014 年犯罪数据随时间的推移绘制。面板 A 和 B 显示相同的数据,但具有不同的轴范围。从[获取的数据 https://www.ucrdatatool.gov/search/crime/state/runcrimestatebystate.cfm](https://www.ucrdatatool.gov/Search/Crime/State/RunCrimeStatebyState.cfm) - -统计数据可视化中的一个主要争议是如何选择 Y 轴,尤其是它是否应该总是包含零。达雷尔·赫夫在他的著名著作《如何用统计数字撒谎》中强烈主张,在 Y 轴上应该始终包括零点。另一方面,爱德华·塔夫特反对这一观点: - -> “一般来说,在一个时间序列中,使用一个显示数据而不是零点的基线;不要花费大量的空白垂直空间试图以隐藏数据行本身所发生的事情为代价达到零点。”(摘自[https://qz.com/418083/its-ok-not-to-start-your-y 轴-at-zero/](https://qz.com/418083/its-ok-not-to-start-your-y-axis-at-zero/)) - -在某些情况下,使用零点毫无意义。假设我们有兴趣绘制一个人随时间变化的体温。在图[6.11](#fig:bodyTempAxis)中,我们绘制了 Y 轴上有零或无零的相同(模拟)数据。很明显,通过在 Y 轴(图 A)上绘制这些数据为零,我们在图中浪费了大量的空间,因为活人的体温永远不会降到零!通过包括零,我们也使得 21-30 天明显的温度跃升变得不那么明显。一般来说,我对于线图和散点图的倾向是使用图中的所有空间,除非零点真正重要到需要突出显示。 - -![Body temperature over time, plotted with or without the zero point in the Y axis.](img/file39.png) - -图 6.11 随时间变化的体温,在 Y 轴上绘制有或没有零点。 - -## 6.8 谎言因素 - -爱德华塔夫特引入了“谎言因素”的概念来描述可视化中的物理差异与数据差异大小的对应程度。如果图形的谎言因子接近 1,则它适当地表示数据,而谎言因子远离 1 则反映基础数据的失真。 - -谎言因素支持这样的论点:在许多情况下,一个人应该总是在条形图中包含零点。在图[6.12](#fig:barCharLieFactor)中,我们绘制了 Y 轴上有零和无零的相同数据。在面板 A 中,两条钢筋之间的面积比例差与值之间的比例差(即:Lie 系数=1)完全相同,而在面板 B(不包括零)中,两条钢筋之间的面积比例差大约是 2.8 倍于值的比例差异,因此它在视觉上夸大了差异的大小。 - -![Two bar charts with associated lie factors.](img/file40.png) - -图 6.12 两个条形图及相关的测谎系数。 - -## 6.9 记住人的局限性 - -人类既有知觉的局限性,也有认知的局限性,这使得一些可视化很难理解。在构建可视化时,务必记住这些内容。 - -# - -## 6.9.1 知觉限制 - -许多人(包括我自己)所遭受的一个重要的知觉限制是色盲。这使得很难感知图形中的信息(如图[6.13](#fig:badColors)中的信息),其中元素之间只有颜色对比,但没有亮度对比。除了颜色之外,使用亮度和/或纹理有很大差别的图形元素总是很有帮助的。还有[“色盲友好型”调色板](http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/#a-colorblind-friendly-palette)可用于 R - -![Example of a bad figure that relies solely on color contrast.](img/file41.png) - -图 6.13 仅依赖颜色对比度的坏图形示例。 - -即使对于拥有完美色觉的人来说,也存在一些知觉上的限制,使得某些情节无效。这就是统计学家从不使用饼图的原因之一:人类很难理解形状体积的差异。图[6.14](#fig:pieChart)中的饼图(显示了与上面显示的宗教信仰相同的数据)显示了这有多复杂。 - -![An example of a pie chart, highlighting the difficult in apprehending the relative volume of the different pie slices.](img/file42.png) - -图 6.14 饼图的一个例子,强调了理解不同饼图切片的相对体积的困难。 - -这个阴谋很可怕,有几个原因。首先,它需要将大量的颜色与图形底部非常小的补丁区分开。第二,视觉角度扭曲了相对数字,因此天主教的饼状楔形比无饼状楔形要大得多,而事实上,无饼状楔形的数字稍大(22.8%对 20.8%),如图[6.9](#fig:chartJunk)所示。第三,通过将图例与图形分开,它要求查看器将信息保存在工作内存中,以便在图形和图例之间进行映射,并进行许多“表查找”,以便不断将图例标签与可视化匹配。最后,它使用的文本太小,不放大就无法阅读。 - -使用更合理的方法绘制数据(图[6.15](#fig:religionBars)),我们可以更清楚地看到模式。此图可能不像使用 Excel 生成的饼图那样华丽,但它更有效、更准确地表示了数据。 - -![A clearer presentation of the religious affiliation data (obtained from http://www.pewforum.org/religious-landscape-study/).](img/file43.png) - -图 6.15 更清晰地展示了宗教隶属关系数据(摘自[http://www.pewforum.org/steerial-landscape-study/](http://www.pewforum.org/religious-landscape-study/))。 - -此图允许查看者根据杆**的**长度**沿公共比例**(Y 轴)进行比较。在基于这些感知元素解码差异时,人类往往比基于区域或颜色更准确。 \ No newline at end of file diff --git a/docs/7.md b/docs/7.md deleted file mode 100644 index 8be65f01d939f0cde271e6f1eeff7c0acec11a67..0000000000000000000000000000000000000000 --- a/docs/7.md +++ /dev/null @@ -1,256 +0,0 @@ -# 七、采样 - -统计学的一个基本观点是,我们可以根据一个相对较小的样本对整个人口进行推断。在本章中,我们将介绍统计抽样的概念,并讨论它的工作原理。 - -任何居住在美国的人都将熟悉从政治投票中抽样的概念,这已成为我们选举过程的核心部分。在某些情况下,这些民意测验在预测选举结果方面可能非常准确。最著名的例子来自 2008 年和 2012 年的美国总统选举,当时民意测验专家奈特·西尔弗正确预测了 2008 年 49/50 个州和 2012 年全部 50 个州的选举结果。西尔弗通过结合来自 21 个不同民意调查的数据做到了这一点,这些数据在他们倾向于向共和党或民主党倾斜的程度上各不相同。这些民意调查中的每一项都包含了大约 1000 名可能的选民的数据——这意味着白银几乎能够利用仅有 21000 人的数据以及其他知识(例如,这些州过去的投票方式)完美地预测超过 1.25 亿选民的投票模式。 - -## 7.1 我们如何采样? - -我们的抽样目标是确定感兴趣的全部人群的某些特征,只使用人群的一小部分。我们这样做主要是为了节省时间和精力——为什么要在仅仅一个小样本就足以准确估计兴趣变量的情况下,去测量人口中的每个个体呢? - -在选举的例子中,人口都是选民,样本是由投票组织选出的 1000 人组成的集合。我们选择样本的方式对于确保样本是整个人群的 _ 代表性 _ 至关重要,这是统计抽样的主要目标。很容易想象一个没有代表性的样本;如果一个民意测验者只打电话给那些他们从当地民主党收到名字的人,那么投票结果就不太可能代表整个人口。一般来说,我们将代表性投票定义为每个人口成员都有平等的机会被选中。如果这失败了,那么我们必须担心我们对样本计算的统计数据是否有 _ 偏差 _——也就是说,它的值是否系统地不同于总体值(我们称之为 _ 参数 _)。请记住,我们通常不知道这个人口参数,因为如果我们知道,那么就不需要采样了!但是,我们将使用能够接触到整个人口的例子来解释一些关键的想法。 - -同样重要的是要区分两种不同的采样方式:替换和不替换。在用替换物对 _ 进行采样时,在对某个群体成员进行采样后,将其放回池中,以便再次对其进行采样。在 _ 不替换的采样 _ 中,一旦对某个成员进行了采样,则该成员就没有资格再次进行采样。最常见的是使用不替换的采样,但在某些情况下,我们将使用带替换的采样,例如在[8](#resampling-and-simulation)章中讨论一种称为 _ 引导 _ 的技术。_ - -## 7.2 采样误差 - -不管我们的样本有多具有代表性,我们根据样本计算的统计数据很可能至少与总体参数略有不同。我们称之为 _ 采样误差 _。我们的统计估计值也会因样本而异;我们将我们的统计数据在样本间的分布称为 _ 抽样分布 _。 - -抽样误差直接关系到人口测量的质量。显然,我们希望从样本中获得的估计值尽可能接近总体参数的真实值。然而,即使我们的统计数据是无偏的(也就是说,从长远来看,我们希望它与总体参数具有相同的值),任何特定估计的值都将不同于总体估计,并且当抽样误差较大时,这些差异将更大。因此,减小采样误差是实现更好测量的重要步骤。 - -我们将使用 nhanes 数据集作为示例;我们将假设 nhanes 是整个总体,然后我们将从总体中随机抽采样本。在下一章中,我们将有更多的话要说,关于“随机”样本的生成是如何在计算机中工作的。 - -```r -# load the NHANES data library -library(NHANES) - -# create a NHANES dataset without duplicated IDs -NHANES <- - NHANES %>% - distinct(ID, .keep_all = TRUE) - -#create a dataset of only adults -NHANES_adult <- - NHANES %>% - filter( - !is.na(Height), - Age >= 18 - ) - -#print the NHANES population mean and standard deviation of adult height -sprintf( - "Population height: mean = %.2f", - mean(NHANES_adult$Height) -) -``` - -```r -## [1] "Population height: mean = 168.35" -``` - -```r -sprintf( - "Population height: std deviation = %.2f", - sd(NHANES_adult$Height) -) -``` - -```r -## [1] "Population height: std deviation = 10.16" -``` - -在这个例子中,我们知道成年人口的平均值和身高的标准偏差,因为我们假设 nhanes 数据集包含整个成年人口。现在,让我们从 NHANES 人群中抽取 50 个个体的单个样本,并将结果统计数据与人口参数进行比较。 - -```r -# sample 50 individuals from NHANES dataset -exampleSample <- - NHANES_adult %>% - sample_n(50) - -#print the sample mean and standard deviation of adult height -sprintf( - 'Sample height: mean = %.2f', - mean(exampleSample$Height) - ) -``` - -```r -## [1] "Sample height: mean = 169.46" -``` - -```r -sprintf( - 'Sample height: std deviation = %.2f', - sd(exampleSample$Height) -) -``` - -```r -## [1] "Sample height: std deviation = 10.07" -``` - -样本平均值和标准差相似,但不完全等于总体值。现在,让我们取 50 个个体的大量样本,计算每个样本的平均值,并查看得出的平均值抽样分布。为了更好地估计抽样分布,我们必须决定要采集多少样本——在这种情况下,让我们采集 5000 个样本,以便我们对答案真正有信心。请注意,像这样的模拟有时需要几分钟才能运行,并且可能会使您的计算机变得气喘吁吁。图[7.1](#fig:samplePlot)中的柱状图显示,对 50 个个体的每个样本估计的平均值有所不同,但总体而言,它们集中在人口平均值周围。 - -```r -# compute sample means across 5000 samples from NHANES data -sampSize <- 50 # size of sample -nsamps <- 5000 # number of samples we will take - -# set up variable to store all of the results -sampMeans <- array(NA, nsamps) - -# Loop through and repeatedly sample and compute the mean -for (i in 1:nsamps) { - NHANES_sample <- sample_n(NHANES_adult, sampSize) - sampMeans[i] <- mean(NHANES_sample$Height) -} - -sprintf( - "Average sample mean = %.2f", - mean(sampMeans) -) -``` - -```r -## [1] "Average sample mean = 168.33" -``` - -```r -sampMeans_df <- tibble(sampMeans = sampMeans) -``` - -![The blue histogram shows the sampling distribution of the mean over 5000 random samples from the NHANES dataset. The histogram for the full dataset is shown in gray for reference.](img/file45.png) - -图 7.1 蓝色柱状图显示了来自 nhanes 数据集的 5000 多个随机样本的平均值的抽样分布。完整数据集的柱状图以灰色显示以供参考。 - -## 7.3 平均值的标准误差 - -在课程的后面,能够描述我们的样本是如何变化的将变得非常重要,以便对样本统计进行推断。对于平均值,我们使用一个称为平均值(sem)的 _ 标准误差 _ 的量来实现这一点,我们可以将其视为采样分布的标准偏差。如果我们知道总体标准偏差,那么我们可以使用以下公式计算标准误差: - -![](img/60a874247e629e795c77019611dc08cd.jpg) - -其中![](img/493731e423d5db62086d0b8705dda0c8.jpg)是样本的大小。我们通常不知道![](img/2469b2bd2a1ab19ebfcee223dcb52bb1.jpg)(总体标准差),因此我们通常会插入我们对![](img/2469b2bd2a1ab19ebfcee223dcb52bb1.jpg)的估计,这是根据样本(![](img/9ed922d2a0d420aba3e34067283b6580.jpg))计算的标准差: - -![](img/ea21ebe8ecb6ffa0c78fdcc2e6b4a037.jpg) - -但是,如果我们的样本很小(少于 30 个),我们必须小心使用估计的标准偏差计算 SEM。 - -因为我们有许多来自 nhanes 总体的样本,并且我们实际上知道总体参数,所以我们可以确认使用总体参数估计的 SEM 非常接近我们从 nhanes 数据集中采集的样本的观测标准偏差。 - -```r -# compare standard error based on population to standard deviation -# of sample means - -sprintf( - 'Estimated standard error based on population SD: %.2f', - sd(NHANES_adult$Height)/sqrt(sampSize) -) -``` - -```r -## [1] "Estimated standard error based on population SD: 1.44" -``` - -```r -sprintf( - 'Standard deviation of sample means = %.2f', - sd(sampMeans) -) -``` - -```r -## [1] "Standard deviation of sample means = 1.43" -``` - -平均值的标准误差公式表明,我们的测量质量涉及两个量:总体变异性和样本大小。当然,因为样本大小是 sem 公式中的分母,当保持总体变异性常数时,较大的样本大小将产生较小的 sem。我们无法控制种群的变异性,但是我们 _ 确实可以控制样本的大小。因此,如果我们希望改进样本统计(通过减少样本变异性),那么我们应该使用更大的样本。然而,这个公式也告诉我们关于统计抽样的一些非常基本的东西——也就是说,较大样本的效用随样本大小的平方根而减小。这意味着双倍的样本量将 _ 而不是 _ 使统计数据的质量加倍;相反,它将把统计数据的质量提高一倍![](img/50ccfaf5af61b99211bf9479875bd1b6.jpg)。在[10.3 节](#statistical-power)中,我们将讨论与此观点密切相关的统计能力。_ - -## 7.4 中心极限定理 - -中心极限定理告诉我们,随着样本大小的增大,即使每个样本中的数据不是正态分布的,平均值的抽样分布也将变为正态分布。 - -我们也可以在真实数据中看到这一点。让我们来研究一下 nhanes 分布中的可变醇年,它是高度倾斜的,如图[7.2](#fig:alcoholYearDist)所示。 - -![Distribution of the variable AlcoholYear in the NHANES dataset, which reflects the number of days that the individual drank in a year.](img/file46.png) - -图 7.2 NHANES 数据集中可变酒精年的分布,反映了个人一年内饮酒的天数。 - -由于缺少更好的单词,这种分布方式很奇怪,而且绝对不是正态分布。现在让我们看看这个变量的平均值的抽样分布。图[7.3](#fig:alcDist50)显示了该变量的采样分布,该分布是通过从 nhanes 数据集中重复抽取大小为 50 的样本并取平均值获得的。尽管原始数据具有明显的非正态性,但采样分布与正态分布非常接近。 - -![The sampling distribution of the mean for AlcoholYear in the NHANES dataset, obtained by drawing repeated samples of size 50, in blue. The normal distribution with the same mean and standard deviation is shown in red.](img/file47.png) - -图 7.3 NHANES 数据集中醇年平均值的抽样分布,通过绘制尺寸为 50 的蓝色重复样本获得。具有相同平均值和标准偏差的正态分布以红色显示。 - -## 7.5 置信区间 - -大多数人都熟悉政治民意调查“误差幅度”的概念。这些民意测验通常试图提供一个准确率在+/-3%以内的答案。例如,当一个候选人被估计以 9 个百分点赢得选举,误差幅度为 3 时,他们将赢得的百分比被估计在 6-12 个百分点之内。在统计学中,我们将这一范围的值称为 _ 置信区间 _,它提供了对我们的估计与总体参数的接近程度的不确定性程度的度量。条件区间越大,我们的不确定性就越大。 - -在上一节中我们看到,有了足够的样本量,平均值的抽样分布是正态分布的,标准误差描述了这个抽样分布的标准偏差。利用这些知识,我们可以问:我们期望在什么范围内获取所有平均值估计值的 95%?为了回答这个问题,我们可以使用正态分布,我们知道我们期望 95%的样本均值在正态分布之间下降。具体来说,我们使用正态分布的 _ 分位数 _ 函数(`qnorm()`in r)来确定正态分布在分布中 2.5%和 97.5%点的值。我们选择这些点是因为我们想要找到分布中心的 95%的值,所以我们需要在每个端部截取 2.5%个,以便最终在中间有 95%个。图[7.4](#fig:normalCutoffs)显示了发生在![](img/e14d827ce77303188aec5520ec9eba30.jpg)上的情况。 - -![Normal distribution, with the orange section in the center denoting the range in which we expect 95 percent of all values to fall. The green sections show the portions of the distribution that are more extreme, which we would expect to occur less than 5 percent of the time.](img/file48.png) - -图 7.4 正态分布,中间橙色部分表示我们预计所有值 95%会下降的范围。绿色部分显示了分布中更极端的部分,我们希望在不到 5%的时间内发生。 - -使用这些截止值,我们可以为平均值的估计创建一个置信区间: - -![](img/79de3061cb2a1bf04b2fd35328b0005a.jpg) - -让我们计算 nhanes 高度数据的置信区间, - -```r -# compute confidence intervals - -NHANES_sample <- sample_n(NHANES_adult,250) - -sample_summary <- NHANES_sample %>% - summarize(mean=mean(Height), - sem=sd(Height)/sqrt(sampSize)) %>% - mutate(CI_lower=mean-1.96*sem, - CI_upper=mean+1.96*sem) -pander(sample_summary) -``` - -| 意思是 | 扫描电镜 | Ci_ 下 | Ci_ 上部 | -| --- | --- | --- | --- | -| 166.869 年 | 1.446 个 | 164.036 年 | 169.702 个 | - -置信区间是出了名的混乱,主要是因为它们并不代表我们希望它们的含义。很自然地认为,95%的置信区间告诉我们,人口平均值有 95%的概率落在区间内。然而,正如我们将在整个课程中看到的,统计中的概念通常并不意味着我们认为它们应该意味着什么。在置信区间的情况下,我们不能用这种方式解释它们,因为总体参数有一个固定值——要么在区间内,要么不在区间内。95%置信区间的正确解释是,它将捕获 95%时间的真实总体平均值。我们可以通过重复对 nhanes 数据重新采样并计算间隔包含真实总体平均值的频率来确认这一点。 - -```r -# compute how often the confidence interval contains the true population mean -nsamples <- 2500 -sampSize <- 100 - -ci_contains_mean <- array(NA,nsamples) - -for (i in 1:nsamples) { - NHANES_sample <- sample_n(NHANES_adult, sampSize) - sample_summary <- - NHANES_sample %>% - summarize( - mean = mean(Height), - sem = sd(Height) / sqrt(sampSize) - ) %>% - mutate( - CI_upper = mean + 1.96 * sem, - CI_lower = mean - 1.96 * sem - ) - ci_contains_mean[i] <- - (sample_summary$CI_upper > mean(NHANES_adult$Height)) & - (sample_summary$CI_lower < mean(NHANES_adult$Height)) -} - -sprintf( - 'proportion of confidence intervals containing population mean: %.3f', - mean(ci_contains_mean) -) -``` - -```r -## [1] "proportion of confidence intervals containing population mean: 0.953" -``` - -这证实了置信区间确实捕获了 95%左右的人口平均值。 - -## 7.6 阅读建议 - -* 信号和噪音:为什么这么多的预测都失败了——但有些预测却失败了,作者是 Nate Silver。 \ No newline at end of file diff --git a/docs/8.md b/docs/8.md deleted file mode 100644 index 40d29dc01db62c04495ec82294ad53f424e9d206..0000000000000000000000000000000000000000 --- a/docs/8.md +++ /dev/null @@ -1,244 +0,0 @@ -# 八、重新采样和模拟 - -计算机模拟的使用已经成为现代统计学的一个重要方面。例如,实用计算机科学中最重要的一本书,叫做 _ 数字食谱 _,其内容如下: - -> “在掌握 5 英尺长的分析统计书籍和中等水平的蒙特卡罗模拟统计能力之间,我们可以选择掌握后者。” - -在本章中,我们将介绍蒙特卡罗模拟的概念,并讨论如何使用它进行统计分析。 - -## 8.1 蒙特卡罗模拟 - -蒙特卡洛模拟的概念是由数学家斯坦·乌兰姆和尼古拉斯·大都会提出的,他们正致力于开发原子武器,作为曼哈顿项目的一部分([https://en.wikipedia.org/wiki/manhattan_project](https://en.wikipedia.org/wiki/Manhattan_Project))。他们需要计算中子与原子核碰撞前在物质中的平均移动距离,但是他们不能用标准数学计算这个距离。乌兰姆意识到这些计算可以用随机数模拟,就像赌场游戏一样。在赌场游戏中,数字是随机抽取的;为了估计特定结果的概率,您可以玩数百次游戏。乌兰姆的叔叔曾在摩纳哥的蒙特卡洛赌场赌博,很明显这项新技术的名字就是从那里来的。 - -执行蒙特卡洛模拟有四个步骤: - -1. 定义可能值的域 -2. 根据概率分布在该域内生成随机数 -3. 使用随机数执行计算 -4. 通过多次重复组合结果 - -作为一个例子,让我们假设我想计算出有多少时间来进行课堂测验。假设我们知道测验完成时间的分布是正常的,平均为 5 分钟,标准差为 1 分钟。考虑到这一点,测试周期需要多长时间才能让我们期望每个人完成 99%的时间?有两种方法可以解决这个问题。第一种方法是使用一种称为极值统计的数学理论来计算答案。然而,这在数学上是相当复杂的。或者,我们可以使用蒙特卡罗模拟。为此,我们需要从正态分布中生成随机样本。 - -## 8.2 统计的随机性 - -“随机”一词通常被通俗地用来指那些奇怪或意想不到的事物,但在统计学中,这个词有一个非常具体的含义:如果一个过程是不可预测的,它就是“随机的”。例如,如果我掷一枚公平硬币 10 次,一次掷硬币的结果值不会提供任何信息,让我预测下一次掷硬币的结果。重要的是要注意的是,有些事情是不可预测的,并不一定意味着它是不确定性的。例如,当我们抛硬币时,抛硬币的结果是由物理定律决定的;如果我们足够详细地知道所有的条件,我们应该能够预测抛硬币的结果。然而,许多因素结合起来,使得硬币翻转的结果在实践中是不可预测的。 - -心理学家已经证明,人类实际上对随机性的认识相当差。首先,当模式不存在时,我们倾向于看到它们。在极端情况下,这导致了 _pareidolia_ 现象,在这种现象中,人们会在随机的模式中感知到熟悉的物体(例如,将云视为人脸或在一片吐司中看到圣母玛利亚)。第二,人类倾向于将随机过程视为自我修正,这导致我们期望在一场游戏中输掉许多回合之后,我们会“赢得一场比赛”,这是一个被称为“赌徒谬论”的现象。 - -## 8.3 生成随机数 - -运行蒙特卡罗模拟需要我们生成随机数。只有通过物理过程才能生成真正的随机数(即完全不可预测的数),例如原子衰变或骰子滚动,这些过程很难获得和/或太慢,无法用于计算机模拟(尽管可以从[NIST 随机信标](https://www.nist.gov/programs-projects/nist-randomness-beacon%5D))。 - -一般来说,我们使用计算机算法生成的 _ 伪随机 _ 数字来代替真正的随机数;从难以预测的意义上讲,这些数字看起来是随机的,但实际上这些数字序列在某一点上会重复出现。例如,R 中使用的随机数生成器将在![](img/e54172313303c2c0ef7164cfc424ae62.jpg)个数之后重复。这远远超过了宇宙历史上的秒数,我们一般认为这对于统计分析的大多数目的来说都是好的。 - -在 R 中,有一个函数可以为每个主要概率分布生成随机数,例如: - -* `runif()`-均匀分布(0 和 1 之间的所有值相等) -* `rnorm()`-正态分布 -* `rbinom()`-二项分布(如掷骰子、掷硬币) - -图[8.1](#fig:rngExamples)显示了使用`runif()`和`rnorm()`函数生成的数字示例,这些函数使用以下代码生成: - -```r -p1 <- - tibble( - x = runif(10000) - ) %>% - ggplot((aes(x))) + - geom_histogram(bins = 100) + - labs(title = "Uniform") - -p2 <- - tibble( - x = rnorm(10000) - ) %>% - ggplot(aes(x)) + - geom_histogram(bins = 100) + - labs(title = "Normal") - -plot_grid(p1, p2, ncol = 3) -``` - -![Examples of random numbers generated from a uniform (left) or normal (right) distribution.](img/file49.png) - -图 8.1 由均匀(左)或正态(右)分布生成的随机数示例。 - -如果您有一个 _ 分位数 _ 函数用于分发,您还可以为任何分发生成随机数。这是累积分布函数的倒数;分位数函数不是确定一组值的累积概率,而是确定一组累积概率的值。使用分位数函数,我们可以从均匀分布中生成随机数,然后通过它的分位数函数将其映射到兴趣分布中。 - -默认情况下,每次运行上面描述的随机数生成器函数之一时,R 都会生成一组不同的随机数。但是,通过将所谓的 _ 随机种子 _ 设置为特定值,也可以生成完全相同的随机数集。我们将在本书中的许多示例中这样做,以确保示例是可重复的。 - -```r -# if we run the rnorm() command twice, it will give us different sets of pseudorandom numbers each time -print(rnorm(n = 5)) -``` - -```r -## [1] 1.48 0.18 0.21 -0.15 -1.72 -``` - -```r -print(rnorm(n = 5)) -``` - -```r -## [1] -0.691 -2.231 0.391 0.029 -0.647 -``` - -```r -# if we set the random seed to the same value each time, then it will give us the same series of pseudorandom numbers each time. -set.seed(12345) -print(rnorm(n = 5)) -``` - -```r -## [1] 0.59 0.71 -0.11 -0.45 0.61 -``` - -```r -set.seed(12345) -print(rnorm(n = 5)) -``` - -```r -## [1] 0.59 0.71 -0.11 -0.45 0.61 -``` - -## 8.4 使用蒙特卡罗模拟 - -让我们回到考试结束时间的例子。假设我管理三个测验,并记录每个学生每次考试的完成时间,这可能类似于图[8.2](#fig:finishingTimes)所示的分布。 - -![Simulated finishing time distributions.](img/file50.png) - -图 8.2 模拟完成时间分布。 - -然而,我们真正想知道的不是完成时间的分布是什么样子的,而是每个测验的 _ 最长 _ 完成时间的分布是什么样子的。为了做到这一点,我们可以模拟大量的测验(假设完成时间是正态分布的,如上所述);对于每个模拟的测验,我们可以记录最长的完成时间。为此,我们在 r 中创建了一个名为`sampleMax()`的新函数,该函数从适当的分布(即正态分布)中模拟适当大小的样本(即班级中的学生数),并返回样本中的最大值。然后,我们使用`replicate()`函数重复此模拟大量次(应该足够 5000 次),该函数将所有输出存储到一个变量中。整理时间分布见图[8.3](#fig:finishTimeSim)。 - -```r -# sample maximum value 5000 times and compute 99th percentile -nRuns <- 5000 -sampSize <- 150 - -sampleMax <- function(sampSize = 150) { - samp <- rnorm(sampSize, mean = 5, sd = 1) - return(max(samp)) -} - -maxTime <- replicate(nRuns, sampleMax()) - -cutoff <- quantile(maxTime, 0.99) -sprintf("99th percentile of maxTime distribution: %.2f", cutoff) -``` - -```r -## [1] "99th percentile of maxTime distribution: 8.81" -``` - -![Distribution of maximum finishing times across simulations.](img/file51.png) - -图 8.3 模拟中最大完成时间的分布。 - -这表明完成时间分布的第 99 个百分点下降到了 8.81,这意味着如果我们为测验留出这么多时间,那么每个人都应该完成 99%的时间。务必记住,我们的假设很重要——如果它们是错误的,那么模拟的结果是无用的。在这种情况下,我们假设完成时间分布为正态分布,具有特定的平均值和标准偏差;如果这些假设不正确(而且几乎可以肯定),那么真正的答案可能会非常不同。 - -## 8.5 使用模拟统计:引导程序 - -到目前为止,我们已经使用模拟来演示统计原理,但是我们也可以使用模拟来回答实际的统计问题。在本节中,我们将介绍一个称为 _ 引导程序 _ 的概念,它允许我们使用模拟来量化统计估计的不确定性。在本课程的后面部分,我们将看到模拟通常如何用于回答统计问题的其他示例,特别是当理论统计方法不可用或假设过于令人窒息时。 - -# - -## 8.5.1 计算引导程序 - -在上面的章节中,我们利用我们对平均值抽样分布的了解来计算平均值和置信区间的标准误差。但是如果我们不能假设这些估计是正态分布的,或者我们不知道它们的分布呢?引导的思想是使用数据本身来估计答案。这个名字来自于用自己的力量把自己拉起来的想法,表达了这样一个想法:我们没有任何外部的杠杆来源,所以我们必须依靠数据本身。自举方法是由斯坦福统计局的布拉德利·埃夫隆构想的,他是世界上最有影响力的统计学家之一。 - -引导背后的想法是,我们从实际的数据集中重复采样;重要的是,我们用替换的对 _ 进行采样,这样同一个数据点通常会在一个样本中被多次表示。然后我们计算每个引导样本的兴趣统计,并使用这些估计的分布。_ - -让我们从使用引导程序来估计平均值的采样分布开始,这样我们就可以将结果与前面讨论的平均值的标准误差(sem)进行比较。 - -```r -# perform the bootstrap to compute SEM and compare to parametric method - -nRuns <- 2500 -sampleSize <- 32 - -heightSample <- - NHANES_adult %>% - sample_n(sampleSize) - -bootMeanHeight <- function(df) { - bootSample <- sample_n(df, dim(df)[1], replace = TRUE) - return(mean(bootSample$Height)) -} - -bootMeans <- replicate(nRuns, bootMeanHeight(heightSample)) - -SEM_standard <- sd(heightSample$Height) / sqrt(sampleSize) -sprintf("SEM computed using sample SD: %f", SEM_standard) -``` - -```r -## [1] "SEM computed using sample SD: 1.595789" -``` - -```r -SEM_bootstrap <- sd(bootMeans) -sprintf("SEM computed using SD of bootstrap estimates: %f", SEM_bootstrap) -``` - -```r -## [1] "SEM computed using SD of bootstrap estimates: 1.586913" -``` - -![An example of bootstrapping to compute the standard error of the mean. The histogram shows the distribution of means across bootstrap samples, while the red line shows the normal distribution based on the sample mean and standard deviation.](img/file52.png) - -图 8.4 计算平均值标准误差的引导示例。柱状图显示平均值在引导样本之间的分布,红线显示基于样本平均值和标准差的正态分布。 - -图[8.4](#fig:bootstrapSEM)显示,基于正态性假设,引导样本的平均值分布与理论估计值相当接近。我们也可以使用引导样本计算平均值的置信区间,只需从引导样本的分布计算感兴趣的分位数。 - -```r -# compute bootstrap confidence interval - -bootCI <- quantile(bootMeans, c(0.025, 0.975)) -pander("bootstrap confidence limits:") -``` - -自举置信限: - -```r -pander(bootCI) -``` - - -| 2.5% | 98% | -| --- | --- | -| 164.634 年 | 170.883 个 | - -```r -# now let's compute the confidence intervals using the sample mean and SD -sampleMean <- mean(heightSample$Height) - -normalCI <- - tibble( - "2.5%" = sampleMean - 1.96 * SEM_standard, - "97.5%" = sampleMean + 1.96 * SEM_standard -) - -print("confidence limits based on sample SD and normal distribution:") -``` - -```r -## [1] "confidence limits based on sample SD and normal distribution:" -``` - -```r -pander(normalCI) -``` - - -| 2.5% | 97.5% | -| --- | --- | -| 164.575 年 | 170.831 个 | - -我们通常不会使用引导程序来计算平均值的置信区间(因为我们通常可以假设正态分布适合平均值的抽样分布,只要我们的样本足够大),但是这个例子显示了该方法如何粗略地给出结果与基于正态分布的标准方法相同。在我们知道或怀疑正态分布不合适的情况下,引导程序更常被用来为其他统计数据的估计生成标准错误。 - -## 8.6 阅读建议 - -* _ 计算机年龄统计推断:算法、证据和数据科学 _,作者:Bradley Efron 和 Trevor Hastie \ No newline at end of file diff --git a/docs/9.md b/docs/9.md deleted file mode 100644 index b101b20256227b8eed1f721152c014484ee5659a..0000000000000000000000000000000000000000 --- a/docs/9.md +++ /dev/null @@ -1,742 +0,0 @@ -# 九、假设检验 - -在第一章中,我们讨论了统计的三个主要目标: - -* 描述 -* 决定 -* 预测 - -在这一章中,我们将介绍使用统计学做出决策的背后的想法——特别是关于数据是否支持特定假设的决策。 - -## 9.1 无效假设统计检验(NHST) - -我们将要讨论的假设检验的具体类型(由于将变得清晰的原因)被称为 _ 无效假设统计检验 _(NHST)。如果你找到了几乎任何科学或生物医学研究出版物,你会看到 NHST 被用来测试假设,在他们的心理学入门教材中,Gerrig&Zimbardo(2002)将 NHST 称为“心理研究的支柱”。因此,学习如何使用和解释假设检验的结果对于理解本研究的结果是至关重要的。 - -然而,你也必须知道,NHST 有着深刻的缺陷,许多统计学家和研究人员(包括我自己)认为这是导致科学严重问题的原因,我们将在[17](#doing-reproducible-research)章中讨论。50 多年来,有人呼吁放弃 NHST,转而采用其他方法(如我们将在以下章节中讨论的方法): - -* “心理研究中统计意义的检验可以被看作是研究过程中一种基本的无意识状态”(Bakan,1966 年)。 -* 假设检验是“对什么构成科学进步的错误看法”(Luce,1988)。 - -NHST 也被广泛误解,主要是因为它违背了我们关于统计假设检验应该如何工作的直觉。让我们来看一个例子。 - -## 9.2 无效假设统计检验:一个例子 - -人们对警员使用随身携带的摄像头非常感兴趣,这些摄像头被认为可以减少使用武力,改善警员的行为。然而,为了证实这一点,我们需要实验证据,政府使用随机对照试验来检验这一观点已经变得越来越普遍。华盛顿特区政府和华盛顿大都会警察局于 2015/2016 年进行了一项随机对照试验,以验证穿体摄像头有效的假设。警察被随机分配是否佩戴有身体的摄像头,然后他们的行为会随着时间的推移被跟踪,以确定摄像头是否会导致更少的使用武力和更少的平民对警察行为的抱怨。 - -在我们得出结果之前,让我们先问一下您认为统计分析可能如何工作。比如说,我们想具体测试一下这样一个假设:照相机的磨损是否会减少对力的使用。随机对照试验为我们提供了数据来检验这一假设,也就是说,分配给摄像机或对照组的军官使用武力的比率。下一个明显的步骤是查看数据并确定它们是否为这个假设提供了令人信服的证据。也就是说:考虑到数据和我们所知道的一切,穿着相机的人减少使用武力的可能性有多大? - -事实证明,这不是无效假设测试的工作原理。相反,我们首先考虑我们感兴趣的假设(即,穿着相机的人是否会减少使用武力),然后将其头部翻转,创建一个 _ 无效假设 _——在这种情况下,无效假设是相机不会减少使用武力。重要的是,我们假设无效假设是正确的。然后,我们查看数据,并确定在我们可以拒绝空值而支持我们感兴趣的假设 _ 替代假设 _ 的空值假设下,数据是否足够不可能。如果没有足够的证据来拒绝空值,那么我们就说我们“未能拒绝”空值。 - -理解 NHST 的一些概念,特别是臭名昭著的“P 值”,总是对第一次遇到它们的人具有挑战性,因为它们是如此的反直觉。正如我们稍后将看到的,还有其他一些方法提供了一种更直观的方法来处理假设测试(但有它们自己的复杂性)。然而,在我们讨论这些问题之前,深入了解假设测试的工作原理是很重要的,因为很明显,它不会很快消失。 - -## 9.3 无效假设检验过程 - -我们可以将无效假设测试的过程分解为若干步骤: - -1. 在看到数据之前,制定一个能够体现我们预测的假设(_)_ -2. 收集一些与假设相关的数据 -3. 指定空假设和可选假设 -4. 将模型与代表替代假设的数据相匹配,并计算检验统计 -5. 假设零假设为真,计算该统计的观测值的概率。 -6. 评估结果的“统计显著性” - -对于实际操作示例,让我们使用 nhanes 数据来问以下问题:体力活动是否与体重指数相关?在 NHANES 数据集中,参与者被问及他们是否经常从事中等强度或高强度的运动、健身或娱乐活动(存储在变量![](img/310d7555288082ab53fff0cef5feda93.jpg)中)。他们还测量了身高和体重,并计算了体重指数: - -![](img/3427c9c9b620e87af7c0487a9a33f36d.jpg) - -# - -## 9.3.1 步骤 1:制定假设 - -对于第 1 步,我们假设不从事体育活动的人的体重指数应该比那些从事体育活动的人大。 - -# - -## 9.3.2 步骤 2:收集一些数据 - -对于步骤 2,我们收集一些数据。在这种情况下,我们将从 nhanes 数据集中抽取 250 个人作为样本。图[9.1](#fig:bmiSample)显示了这样一个样本的例子,其中 bmi 分别为活跃和不活跃的个体显示。 - -```r -# sample 250 adults from NHANES and compute mean BMI separately for active -# and inactive individuals - -sampSize <- 250 - -NHANES_sample <- - NHANES_adult %>% - sample_n(sampSize) - -sampleSummary <- - NHANES_sample %>% - group_by(PhysActive) %>% - summarize( - N = length(BMI), - mean = mean(BMI), - sd = sd(BMI) - ) - -# calculate the mean difference in BMI between active -# and inactive individuals; we'll use this later to calculate the t-statistic -meanDiff <- - sampleSummary %>% - select( - PhysActive, - mean - ) %>% - spread(PhysActive, mean) %>% - mutate( - meanDiff = No - Yes - ) %>% - pull(meanDiff) - -# calculate the summed variances in BMI for active -# and inactive individuals; we'll use this later to calculate the t-statistic -sumVariance <- - sampleSummary %>% - select( - PhysActive, - N, - sd - ) %>% - gather(column, stat, N:sd) %>% - unite(temp, PhysActive, column) %>% - spread(temp, stat) %>% - mutate( - sumVariance = No_sd**2 / No_N + Yes_sd**2 / Yes_N - ) %>% - pull(sumVariance) - -# print sampleSummary table -pander(sampleSummary) -``` - -| 物理激活 | N 号 | 意思是 | 标准偏差 | -| --- | --- | --- | --- | -| 不 | 135 | 30.25 天 | 第 8.2 条 | -| 是的 | 115 | 28.6 条 | 6.88 条 | - -![Box plot of BMI data from a sample of adults from the NHANES dataset, split by whether they reported engaging in regular physical activity.](img/file53.png) - -图 9.1 NHANES 数据集成人样本中的体重指数数据的框线图,根据他们是否报告参与常规体育活动进行划分。 - -# - -## 9.3.3 步骤 3:指定无效假设和替代假设 - -对于步骤 3,我们需要指定我们的无效假设(我们称之为![](img/696c2566065d128e8f3db12b73065004.jpg))和替代假设(我们称之为![](img/aed725883351a2b6a72135d55f959055.jpg))。![](img/696c2566065d128e8f3db12b73065004.jpg)是用来检验我们的兴趣假设的基线:也就是说,如果没有效果,我们期望数据是什么样子的?无效假设总是涉及到某种等式(=,![](img/f352be7d44a9d17ea095e3b772dc55d7.jpg)或![](img/e304fc62ce46f66f148c82e8a89e3750.jpg))。![](img/aed725883351a2b6a72135d55f959055.jpg)描述了如果实际存在效果,我们所期望的。另一种假设总是涉及某种不等式(![](img/fdc2e14e22ae9a533b2f245e5529fe86.jpg)、>;或<;)。重要的是,无效假设检验是在假设无效假设是真实的前提下进行的,除非证据另有说明。 - -我们还必须决定是使用 _ 定向 _ 还是 _ 非定向 _ 假设。一个非方向性的假设只是预测会有一个差异,而不预测它将朝哪个方向发展。对于 bmi/活动示例,非方向性无效假设为: - -![](img/e766930510f3d9c7fbc0098ef6bee8af.jpg) - -相应的非方向性替代假设是: - -![](img/0e4dd2da7d0eedddb7a3171f5086d33a.jpg) - -另一方面,一个方向性假设预测了差异会朝哪个方向发展。例如,我们有很强的先验知识来预测从事体育活动的人应该比不从事体育活动的人体重轻,因此我们将提出以下定向零假设: - -![](img/67adb4ad7c46655356a6c4c575d44f3e.jpg) - -以及方向选择: - -![](img/78f09615a926a5a0a0d685a8cb9e482e.jpg) - -# - -## 9.3.4 步骤 4:将模型与数据匹配,并计算测试统计 - -对于步骤 4,我们希望使用数据来计算一个统计,最终让我们决定是否拒绝无效假设。为此,模型需要量化有利于替代假设的证据数量,相对于数据的可变性。因此,我们可以将测试统计看作是提供了一种与数据的可变性相比效果大小的度量。一般来说,这个检验统计量会有一个与之相关的概率分布,因为这允许我们确定在无效假设下观察到的统计量值的可能性。 - -对于体重指数的例子,我们需要一个测试统计数据来测试两个平均值之间的差异,因为假设是以每组的平均体重指数来陈述的。一个经常用来比较两种方法的统计数据是 _t-statistic_,首先由统计学家 William Sealy Gossett 开发,他在都柏林的 Guiness Brewery 工作,用笔名“student”书写,因此常被称为“student's t-statistic”。当样本量较小且总体标准差未知时,t 统计量适合比较两组的平均值。两个独立组比较的 t 统计量计算如下: - -![](img/eb22be2bb5310a1a8380ab51dc3403b2.jpg) - -其中![](img/9f07a04e73180057e99b6fb08e88614c.jpg)和![](img/2e54e3c201411d186d4ed11b14e4d6b6.jpg)是两组的平均值,![](img/faae753102a8b7f33f0d7c3b55d0f7fe.jpg)和![](img/81f40c14dd3a65790975635990f05d79.jpg)是两组的估计方差,![](img/43dc0e5b26df34d3e2f9c1ea065d2cec.jpg)和![](img/f654c11a6cebbc4eb0d47572ce0dd9ed.jpg)是两组的大小。t 统计量是根据概率分布(称为 _t_ 分布)分布的。_t_ 分布看起来非常类似于正态分布,但它不同于自由度的数量,在本例中,这是观测次数减去 2,因为我们计算了两个平均值,因此放弃了两个自由度。当自由度较大时(比如 1000),那么 _t_ 分布与正态分布基本相似,但当它们较小时,则 _t_ 分布的尾部比正态长(见图[9.2](#fig:tVersusNormal))。 - -![Each panel shows the t distribution (in blue dashed line) overlaid on the normal distribution (in solid red line). The left panel shows a t distribution with 4 degrees of freedom, in which case the distribution is similar but has slightly wider tails. The right panel shows a t distribution with 1000 degrees of freedom, in which case it is virtually identical to the normal.](img/file54.png) - -图 9.2 各面板显示了覆盖在正态分布(实线红色)上的 t 分布(蓝色虚线)。左侧面板显示 4 个自由度的 t 分布,在这种情况下,分布类似,但尾部稍宽。右面板显示了 1000 自由度的 T 分布,在这种情况下,它实际上与正常值相同。 - -# - -## 9.3.5 步骤 5:确定零假设下数据的概率 - -这是 NHST 开始违背我们的直觉的步骤——而不是在给定数据的情况下确定虚假设为真的可能性,而是在虚假设下确定数据的可能性——因为我们从假设虚假设为真开始!要做到这一点,我们需要知道零假设下统计的概率分布,这样我们就可以问数据在该分布下的可能性有多大。在我们转到我们的 bmi 数据之前,让我们从一些简单的例子开始。 - -### - -## 9.3.5.0.1 随机化:一个非常简单的例子 - -假设我们想确定一枚硬币是否公平。为了收集数据,我们将硬币翻转 100 次,并计算 70 个硬币头。在这个例子中,![](img/59a2a38c03ca704810acd27fd0399c4f.jpg)和![](img/11cc995fd8a686f7d237f267f66f56e0.jpg),我们的测试统计只是我们计算的头的数量。我们接下来要问的问题是:如果头部的真实概率为 0.5,我们观察 70 个头部的可能性有多大。我们可以想象,这可能只是偶然发生,但似乎不太可能。为了量化这个概率,我们可以使用 _ 二项式分布 _: - -![](img/10de921861ff04b451de326942177643.jpg) - -这个方程将告诉我们在给定人头概率的情况下,一定数量人头或更少人头的可能性。然而,我们真正想知道的是某个或多个数字的概率,我们可以从一个数字中减去: - -![](img/7f20013360f315958f63f8a634b9b6a4.jpg) - -我们可以使用 r 中的`pbinom()`函数计算示例的概率,如下所示: - -```r -# compute the probability of 69 or fewer heads, when P(heads)=0.5 -p_lt_70 <- pbinom(69, 100, 0.5) -sprintf("probability of 69 or fewer heads given P(heads)=0.5: %0.6f", p_lt_70) -``` - -```r -## [1] "probability of 69 or fewer heads given P(heads)=0.5: 0.999961" -``` - -```r -# the probability of 70 or more heads is simply the complement of p_lt_70 -p_ge_70 <- 1 - p_lt_70 -sprintf("probability of 70 or more heads given P(heads)=0.5: %0.6f", p_ge_70) -``` - -```r -## [1] "probability of 70 or more heads given P(heads)=0.5: 0.000039" -``` - -这个计算表明,如果硬币真的是公平的话,得到 70 个硬币的可能性是非常小的。现在,如果我们没有`pbinom()`函数来告诉我们头部数量的概率呢?相反,我们可以通过模拟来确定它——我们使用 0.5 的真实概率反复翻转一枚硬币 100 次,然后计算这些模拟运行中头部数量的分布。图[9.3](#fig:coinFlips)显示了该模拟的结果。 - -```r -# simulate tossing of 100,000 flips of 100 coins to identify empirical -# probability of 70 or more heads out of 100 flips - -# create function to toss coins -tossCoins <- function() { - flips <- runif(100) > 0.5 - return(sum(flips)) -} - -# use a large number of replications since this is fast -coinFlips <- replicate(100000, tossCoins()) - -p_ge_70_sim <- mean(coinFlips >= 70) -sprintf( - "empirical probability of 70 or more heads given P(heads)=0.5: %0.6f", - p_ge_70_sim -) -``` - -```r -## [1] "empirical probability of 70 or more heads given P(heads)=0.5: 0.000020" -``` - -![Distribution of numbers of heads (out of 100 flips) across 100,000 simulated runs.](img/file55.png) - -图 9.3 100000 次模拟运行中头数(100 次翻转中)的分布。 - -在这里,我们可以看到通过模拟计算的概率(0.000020)非常接近理论概率(.00004)。 - -让我们为我们的 bmi 示例进行类似的计算。首先,我们使用上面计算的样本值计算 t 统计量: - -```r -tStat <- - meanDiff / sqrt(sumVariance) - -sprintf("t statistic = %0.3f", tStat) -``` - -```r -## [1] "t statistic = 1.735" -``` - -我们接下来要问的问题是:如果两组之间的真正差异为零或更小(即方向性零假设),我们找到这种大小的 t 统计量的可能性有多大? -我们可以使用 t 分布来确定这个概率。我们的样本量是 250,所以适当的 t 分布有 248 个自由度。我们可以使用 r 中的`pt()`函数来确定发现 t 统计量值大于或等于观察值的概率。注意,我们想要知道一个大于我们观察到的值的概率,但是默认情况下`pt()`给我们一个小于我们提供的值的概率,所以我们必须明确告诉它给我们“上尾”概率(通过设置`lower.tail = FALSE`)。 - -```r -pvalue_tdist <- - pt(tStat, df = 248, lower.tail = FALSE) - -sprintf("p(t > %0.2f, df = 248) = %0.3f", tStat, pvalue_tdist) -``` - -```r -## [1] "p(t > 1.74, df = 248) = 0.042" -``` - -这告诉我们,如果虚假设真的是真的,我们观察到的 t 统计量值 1.74 是相对不可能的。 - -在本例中,我们使用了一个方向性假设,因此我们只需要查看零分布的一端。如果我们想测试一个非方向性假设,那么我们就需要能够识别出不管它的方向如何,效果的大小是多么的出乎意料。在 t 检验的上下文中,这意味着我们需要知道统计数据在正方向或负方向上极端的可能性有多大。为此,我们将观察到的 _t_ 值乘以-1,因为 _t_ 分布集中在零附近,然后将两个尾概率相加,得到一个 _ 双尾 _p 值: - -```r -pvalue_tdist_twotailed <- - pt(tStat, df = 248, lower.tail = FALSE) + - pt(-1 * tStat, df = 248, lower.tail = TRUE) - -sprintf( - "p(t > %0.2f or t< %0.2f, df = 248) = %0.3f", - tStat, - -1 * tStat, pvalue_tdist_twotailed -) -``` - -```r -## [1] "p(t > 1.74 or t< -1.74, df = 248) = 0.084" -``` - -在这里我们看到,双尾测试的 p 值是单尾测试的两倍大,这反映了一个事实,即极端值并不令人惊讶,因为它可能发生在两个方向上。 - -如何选择是否使用单尾测试与双尾测试?双尾测试总是比较保守,所以使用它总是一个很好的选择,除非你有一个非常强烈的理由使用单尾测试。在这种情况下,您应该在查看数据之前写下假设。在第[17 章](#doing-reproducible-research)中,我们将讨论假设预登记的概念,它使在您看到实际数据之前写下假设的想法正式化。一旦你看过数据,你就不应该决定如何进行假设检验,因为这会给结果带来严重的偏差。 - -## - -## 9.3.5.1 使用随机化计算 p 值 - -到目前为止,我们已经看到了如何使用 t 分布来计算零假设下数据的概率,但是我们也可以使用模拟来实现这一点。其基本思想是,我们生成模拟数据,就像我们在零假设下所期望的那样,然后询问观察到的数据与模拟数据相比有多极端。关键问题是:我们如何生成零假设为真的数据?一般的答案是,我们可以以一种特定的方式随机地重新排列数据,如果空值是真的,那么数据看起来就像是真的。这类似于引导的想法,从某种意义上说,它使用我们自己的数据来得出一个答案,但它的方式不同。 - -### - -## 9.3.5.1.1 随机化:一个简单的例子 - -让我们从一个简单的例子开始。假设我们想将足球运动员与越野跑运动员的平均蹲起能力与![](img/67a02d6f9c0d63f5ece420476fdbcb9a.jpg)和![](img/7bb8de53c95fdb7c94332e4338c3d0c3.jpg)进行比较。我们测量 5 名足球运动员和 5 名越野跑者的最大蹲坐能力(我们将随机生成,假设![](img/bbdd12086380fc293fd07d0a06fb8ba6.jpg)、![](img/5700012b5b4621d9361ca5b8a4bfffd1.jpg)和![](img/d05cf1311d898025d0c9e6211250948e.jpg)。 - -```r -# generate simulated data for squatting ability across football players -# and cross country runners - -# reset random seed for this example -set.seed(12345678) - -# create a function to round values to nearest product of 5, -# to keep example simple -roundToNearest5 <- function(x, base = 5) { - return(base * round(x / base)) -} - -# create and show data frame containing simulated data -squatDf <- tibble( - group = as.factor(c(rep("FB", 5), rep("XC", 5))), - squat = roundToNearest5(c(rnorm(5) * 30 + 300, rnorm(5) * 30 + 140)) -) - -pander(squatDf) -``` - - -| 组 | 蹲下 | -| --- | --- | -| 联邦调查局 | 335 个 | -| FB | 350 个 | -| FB | 230 | -| FB | 290 个 | -| FB | 325 | -| 徐克 | 115 | -| XC | 115 | -| XC | 170 个 | -| XC | 175 个 | -| XC | 215 个 | - -![Box plots of simulated squatting ability for football players and cross-country runners.](img/file56.png) - -图 9.4 足球运动员和越野跑者的模拟蹲坐能力方框图。 - -从图[9.4](#fig:squatPlot)的图中可以清楚地看出,两组之间存在很大的差异。我们可以使用 r 中的`t.test()`命令进行标准 t 检验来检验我们的假设: - -```r -# compute and print t statistic comparing two groups - -tt <- - t.test( - squat ~ group, - data = squatDf, - alternative = "greater", - var.equal = TRUE - ) - -sprintf("p(t > %0.2f, df = 8) = %0.5f", tt$statistic, tt$p.value) -``` - -```r -## [1] "p(t > 5.14, df = 8) = 0.00044" -``` - -这表明,在零假设下出现这种差异的可能性很小,使用 _t_ 分布来定义零。现在让我们看看如何使用随机化来回答相同的问题。其基本思想是,如果两组之间没有差异的零假设是正确的,那么一组来自哪个组(足球运动员和越野跑者)就不重要了——因此,为了创建与实际数据相似但又符合零假设的数据,我们可以随机地为数据集中的个人排序组标签,然后重新计算组之间的差异。这种洗牌的结果如图[9.5](#fig:scramPlot)所示。 - -```r -# create a scrambled version of the group membership variable - -dfScram <- - squatDf %>% - mutate( - scrambledGroup = sample(group) - ) %>% - select(-group) - -pander(dfScram) -``` - - -| squat | 加扰群 | -| --- | --- | -| 335 | FB | -| 350 | XC | -| 230 | FB | -| 290 | XC | -| 325 | XC | -| 115 | FB | -| 115 | FB | -| 170 | XC | -| 175 | FB | -| 215 | XC | - -![Box plots for subjects assigned to each group after scrambling group labels.](img/file57.png) - -图 9.5 加扰组标签后分配给每组受试者的方框图。 - -在把标签弄乱之后,我们发现这两个组现在更相似了,事实上,跨国组现在的平均值略高。现在让我们做 10000 次,并存储每个迭代的 t 统计信息;这可能需要一些时间来完成。 - -```r -# shuffle data 10,000 times and compute distribution of t values - -nRuns <- 10000 - -shuffleAndMeasure <- function(df) { - dfScram <- - df %>% - mutate( - scrambledGroup = sample(group) - ) - tt <- t.test( - squat ~ scrambledGroup, - data = dfScram, - alternative = "greater", - var.equal = TRUE - ) - return(tt$statistic) -} - -shuffleDiff <- replicate(nRuns, shuffleAndMeasure(squatDf)) - -sprintf("mean t value across shuffles = %0.3f", mean(shuffleDiff)) -``` - -```r -## [1] "mean t value across shuffles = -0.004" -``` - -我们现在可以研究随机分布的数据集中的平均差的分布。图[9.6](#fig:shuffleHist)显示了所有随机随机随机洗牌的组差异的直方图。正如在零假设下所预期的那样,这个分布集中在零。 - -![Histogram of differences between the football and cross-country groups after randomly shuffling group membership. The red line denotes the actual difference observed between the two groups, and the blue line shows the theoretical t distribution for this analysis.](img/file58.png) - -图 9.6 随机改组后足球和越野组之间差异的柱状图。红线表示两组间观察到的实际差异,蓝线表示本次分析的理论 t 分布。 - -我们可以看到,洗牌后 t 值的分布大致遵循零假设下的理论 t 分布(平均值=0),表明随机化产生零数据的效果。如果我们将洗牌后的 t 值与实际的 t 值进行比较,我们还会看到一些有趣的事情: - -```r -# compute number of runs on which t statistic for shuffle data was -# equal to observed t statistic - -equalSum <- sum(shuffleDiff == tt$statistic) -sprintf("Number of runs on which shuffled t == observed t: %d", equalSum) -``` - -```r -## [1] "Number of runs on which shuffled t == observed t: 33" -``` - -```r -# compute number of runs on which t statistic for shuffle data was -# equal to observed t statistic times -1 - -equalSumMinus <- sum(shuffleDiff == tt$statistic * -1) -sprintf("Number of runs on which shuffled t == observed t*-1: %d", equalSumMinus) -``` - -```r -## [1] "Number of runs on which shuffled t == observed t*-1: 28" -``` - -有 33 次随机播放,其中随机播放数据的 t 统计值与观察到的数据完全相同,这意味着随机播放导致了与实际数据相同的标签!这是不可能的,但不是 _ 不可能的,我们可以用概率论来计算它的可能性。10 个项目的可能排列数为![](img/fbdb7bf8c9a265e186d81257fd9cafeb.jpg),结果为 3628800。每组 5 的可能重排数为![](img/5c3dc97ef053d9338662596585bd90f1.jpg),结果为 120,因此两组 5 的可能重排数为![](img/9ac2927615bb00d0f76abd4d11d47373.jpg)或 14400。因此,我们预计 0.0039 的随机标签将与原始标签完全相同,这与我们在模拟中看到的 0.0033 相当接近。我们对标签与真实标签完全相反的次数有着相似的期望,给出了观察到的 t 值的负值。_ - -我们可以通过测量随机数据中有多少随机值至少与观测值一样极端来计算 p 值: - -```r -# compute p value using randomization -pvalRandomization <- mean(shuffleDiff >= tt$statistic) - -sprintf( - 'p(t > %0.2f, df = 8) using randomization = %0.5f', - tt$statistic, - pvalRandomization -) -``` - -```r -## [1] "p(t > 5.14, df = 8) using randomization = 0.00330" -``` - -这个 p 值与我们用 t 分布得到的 p 值非常相似,两者都是非常极端的,这意味着如果零假设为真,观察到的数据就不太可能出现——在这种情况下,我们 _ 知道 _ 不是真的,因为我们生成了 E 数据。 - -### - -## 9.3.5.1.2 随机化:体重指数/活动示例 - -现在让我们使用随机化来计算 bmi/活动示例的 p 值。在这种情况下,我们将随机地对`PhysActive`变量进行随机洗牌,并计算每次洗牌后组之间的差异,然后将观察到的 t 统计量与洗牌数据集中的 t 统计量分布进行比较。 - -```r -# create function to shuffle BMI data - -shuffleBMIstat <- function() { - bmiDataShuffled <- - NHANES_sample %>% - select(BMI, PhysActive) %>% - mutate( - PhysActive = sample(PhysActive) - ) - # compute the difference - simResult <- t.test( - BMI ~ PhysActive, - data = bmiDataShuffled, - var.equal = TRUE - ) - return(simResult$statistic) -} - -# run function 5000 times and save output - -nRuns <- 5000 -meanDiffSimDf <- - data.frame( - meanDiffSim = replicate(nRuns, shuffleBMIstat()) - ) -``` - -让我们看看结果。图[9.7](#fig:simDiff)显示了洗牌样本中 t 值的分布情况,我们还可以计算发现大于或等于观察值的概率: - -```r -# compute the empirical probability of t values larger than observed -# value under the randomization null -bmtTTest <- - t.test( - BMI ~ PhysActive, - data = NHANES_sample, - var.equal = TRUE, - alternative = "greater" -) - -bmiPvalRand <- - mean(meanDiffSimDf$meanDiffSim >= bmtTTest$statistic) - -sprintf( - "p(mean > %0.2f, df = 248) using randomization = %0.5f", - bmtTTest$statistic, - bmiPvalRand -) -``` - -```r -## [1] "p(mean > 1.71, df = 248) using randomization = 0.04380" -``` - -```r -sprintf( - "p(mean > %0.2f, df = 248) using parametric t-test = %0.5f", - bmtTTest$statistic, - bmtTTest$p.value - ) -``` - -```r -## [1] "p(mean > 1.71, df = 248) using parametric t-test = 0.04413" -``` - -![Histogram of t statistics after shuffling of group labels, with the observed value of the t statistic shown in the blue line, and values more extreme than the observed value shown in orange.](img/file59.png) - -图 9.7 组标签洗牌后 t 统计量的柱状图,t 统计量的观测值以蓝线表示,其值比橙色显示的观测值更为极端。 - -同样,随机分组得到的 p 值(0.044)与使用 t 分布得到的 p 值(0.044)非常相似。随机化测试的优点是,它不要求我们假设来自每个组的数据是正态分布的,尽管 T-测试通常对违反该假设的情况非常健壮。此外,随机化检验可以让我们在没有理论分布的情况下计算统计学的 p 值,就像 t 检验一样。 - -我们在使用随机化测试时必须做出一个主要假设,我们称之为 _ 互换性 _。这意味着所有的观测都是以相同的方式分布的,这样我们就可以在不改变总体分布的情况下交换它们。当数据中有相关的观察结果时,这种情况就可以被打破了;例如,如果我们有来自 4 个不同家庭的个人的数据,那么我们就不能假设个人是可交换的,因为兄弟姐妹之间的距离比他们与个人之间的距离更近。来自其他家庭。一般来说,如果数据是通过随机抽样获得的,那么交换性假设应该成立。 - -# - -## 9.3.6 步骤 6:评估结果的“统计显著性” - -下一步是确定从上一步得到的 p 值是否足够小,以至于我们愿意拒绝无效假设,并得出替代方案是真的。我们需要多少证据?这是统计学中最有争议的问题之一,部分原因是它需要主观判断——没有“正确”的答案。 - -历史上,这个问题最常见的答案是,如果 p 值小于 0.05,我们应该拒绝无效假设。这源于罗纳德·费舍尔的著作,他被称为“20 世纪统计学中最重要的人物”(埃夫隆 1998 年): - -> “如果 p 介于.1 和.9 之间,那么肯定没有理由怀疑所测试的假设。如果低于 0.02,则强烈表明该假设不能解释全部事实。如果我们在 0.05 点画一条常规的线,我们就不会经常误入歧途。在我们可以说的水平上划一条线是很方便的:要么治疗中有某种东西,要么发生了一种巧合,比如 20 次试验中不超过一次(Fisher 1925)。 - -然而,费希尔从未打算将![](img/5950d42b56029dacc067b311a4b145d9.jpg)作为一个固定的规则: - -> “没有一个科学工作者有一个固定的意义水平,每年,在任何情况下,他都拒绝假设;他更愿意根据自己的证据和想法来考虑每一个特定的案例”[fish:1956](fish:1956) - -相反,它很可能成为一种仪式,因为在计算之前使用的 p 值表使计算统计数据任意值的 p 值变得容易。所有的表都有一个 0.05 的条目,这使得我们很容易确定一个人的统计数据是否超过了达到这一重要程度所需的值。 - -统计阈值的选择仍然存在很大争议,最近(Benjamin 等人,2018 年)有人提议将标准阈值从 0.05 更改为 0.005,这使得标准阈值更加严格,因此更难拒绝无效假设。在很大程度上,这一举措是由于越来越多的担忧,即从![](img/0dd1a0adf2512b2e2bf82422cf65d45d.jpg)的显著结果中获得的证据相对较弱;我们将在稍后的[17](#doing-reproducible-research)章中对再现性的讨论中更详细地讨论这一点。 - -## - -## 9.3.6.1 假设检验作为决策:Neyman-Pearson 方法 - -尽管费舍尔认为 P 值可以为一个特定的假设提供证据,但是统计学家 Jerzy Neyman 和 Egon Pearson 强烈反对。相反,他们建议我们从长期来看考虑假设检验的错误率: - -> “任何基于概率论的检验本身都不能提供任何有价值的证据来证明假设是真是假。但我们可以从另一个角度来看待测试的目的。在不希望知道每一个独立的假设是正确还是错误的情况下,我们可以寻找规则来管理我们对它们的行为,在这之后,我们保证,从长期经验来看,我们不会经常出错”(J.Neyman 和 Pearson,1933)。 - -也就是说:我们不知道哪些具体的决定是正确的还是错误的,但是如果我们遵守规则,我们至少可以知道我们的决定会有多长时间出错。 - -为了理解 Neyman 和 Pearson 开发的决策框架,我们首先需要根据可能发生的结果种类讨论统计决策。存在两种可能的现实状态(![](img/696c2566065d128e8f3db12b73065004.jpg)为真或![](img/696c2566065d128e8f3db12b73065004.jpg)为假),以及两种可能的决定(拒绝![](img/696c2566065d128e8f3db12b73065004.jpg)或未能拒绝![](img/696c2566065d128e8f3db12b73065004.jpg))。我们可以通过两种方式做出正确的决定: - -* 当![](img/696c2566065d128e8f3db12b73065004.jpg)为假时,我们可以决定拒绝它(在决策理论的语言中,我们称之为 _hit_) -* 当![](img/696c2566065d128e8f3db12b73065004.jpg)为真时,我们无法拒绝它(我们称之为 _ 正确拒绝 _) - -我们还可以犯两种错误: - -* 当![](img/696c2566065d128e8f3db12b73065004.jpg)为真时,我们可以决定拒绝它(我们称之为 _ 假警报 _ 或 _ 类型 I 错误 _) -* 当![](img/696c2566065d128e8f3db12b73065004.jpg)实际为假时,我们无法拒绝它(我们称之为 _Miss_ 或 _Type II Error_) - -Neyman 和 Pearson 创造了两个术语来描述从长远来看这两种错误的可能性: - -* P(I 类错误)=![](img/82005cc2e0087e2a52c7e43df4a19a00.jpg) -* P(II 类错误)=![](img/50705df736e9a7919e768cf8c4e4f794.jpg) - -也就是说,如果我们将![](img/82005cc2e0087e2a52c7e43df4a19a00.jpg)设置为.05,那么从长远来看,我们应该使 I 型错误占 5%。虽然通常将![](img/82005cc2e0087e2a52c7e43df4a19a00.jpg)设置为.05,![](img/50705df736e9a7919e768cf8c4e4f794.jpg)的标准值为.2-也就是说,我们愿意接受 20%的时间检测不到真正的效果。当我们在第[10.3 节](#statistical-power)中讨论统计功率时,我们将回到下面的内容,这是第二类误差的补充。 - -# - -## 9.3.7 重大结果意味着什么? - -关于 p 值的实际含义有很多困惑(Gigerenzer,2004 年)。假设我们做了一个实验,比较条件之间的平均值,我们发现 p 值为 0.01 的差异。有许多可能的解释。 - -## - -## 9.3.7.1 是否意味着零假设为真的概率为 0.01? - -不,请记住,在空假设测试中,p 值是给定空假设(![](img/f3dba6a251b5c95ecee88f2dd3a6752a.jpg))的数据概率。对于给定数据(![](img/f187818f73e98541ec34777c287cc92d.jpg))的无效假设的概率,它不保证得出结论。当我们在后面一章中讨论贝叶斯推理时,我们将回到这个问题上,因为贝叶斯定理让我们以一种可以确定后一种概率的方式反转条件概率。 - -## - -## 9.3.7.2 这是否意味着你做出错误决定的概率是.01? - -不,这是![](img/f187818f73e98541ec34777c287cc92d.jpg),但如上所述,P 值是![](img/696c2566065d128e8f3db12b73065004.jpg)下数据的概率,而不是假设的概率。 - -## - -## 9.3.7.3 这是否意味着如果你再次进行研究,你将获得 99%的相同结果? - -不。p 值是一个关于特定数据集在空值下的可能性的语句;它不允许我们对未来事件(如复制)的可能性进行推断。 - -## - -## 9.3.7.4 这是否意味着你发现了有意义的影响? - -不,统计显著性和实际显著性之间有一个重要区别。举个例子,假设我们进行了一项随机对照试验来检验特定饮食对体重的影响,我们发现在 P<;.05 有统计学意义的影响。这并不能告诉我们实际损失了多少重量,我们称之为 _ 效应大小 _(将在[10](#ci-effect-size-power)章中详细讨论)。如果我们考虑一项关于减肥的研究,那么我们可能不会认为十盎司的减肥(即一袋薯片的重量)实际上是非常重要的。让我们看看我们的能力,检测 1 盎司的显著差异,随着样本量的增加。 - -```r -# create simulated data for weight loss trial - -weightLossTrial <- function(nPerGroup, weightLossOz = 1) { - # mean and SD in Kg based on NHANES adult dataset - kgToOz <- 35.27396195 # conversion constant for Kg to Oz - meanOz <- 81.78 * kgToOz - sdOz <- 21.29 * kgToOz - # create data - controlGroup <- rnorm(nPerGroup) * sdOz + meanOz - expGroup <- rnorm(nPerGroup) * sdOz + meanOz - weightLossOz - ttResult <- t.test(expGroup, controlGroup) - return(c( - nPerGroup, weightLossOz, ttResult$p.value, - diff(ttResult$estimate) - )) -} - -nRuns <- 1000 -sampSizes <- 2**seq(5,17) # powers of 2 - -simResults <- c() ## create an empty list to add results onto -for (i in 1:length(sampSizes)) { - tmpResults <- replicate( - nRuns, - weightLossTrial(sampSizes[i], weightLossOz = 10) - ) - summaryResults <- c( - tmpResults[1, 1], tmpResults[2, 1], - sum(tmpResults[3, ] < 0.05), - mean(tmpResults[4, ]) - ) - simResults <- rbind(simResults, summaryResults) -} - -simResultsDf <- - as.tibble(simResults) %>% - rename( - sampleSize = V1, - effectSizeLbs = V2, - nSigResults = V3, - meanEffect = V4 - ) %>% - mutate(pSigResult = nSigResults / nRuns) -``` - -图[9.8](#fig:sigResults)显示了显著结果的比例如何随着样本量的增加而增加,这样,当样本量非常大(总共约 262000 名受试者)时,当体重减少 1 盎司时,我们将在 90%以上的研究中发现显著结果。尽管这些在统计学上有显著意义,但大多数医生认为一盎司的体重减轻在实际或临床上并不重要。当我们回到[10.3 节](#statistical-power)中的 _ 统计幂 _ 概念时,我们将更详细地探讨这一关系,但从这个例子中应该已经清楚,统计显著性并不一定表示实际意义。 - -![The proportion of signifcant results for a very small change (1 ounce, which is about .001 standard deviations) as a function of sample size.](img/file60.png) - -图 9.8 作为样本量函数的一个非常小的变化(1 盎司,约 0.001 标准偏差)的显著性比例。 - -## 9.4 现代环境下的 NHST:多重测试 - -到目前为止,我们已经讨论了一些例子,其中我们对检验一个单一的统计假设感兴趣,这与传统科学是一致的,后者通常一次只测量几个变量。然而,在现代科学中,我们通常可以测量每个个体数百万个变量。例如,在量化整个基因组的基因研究中,每个个体可能有数百万个测量单位,在大脑成像中,我们常常同时从大脑中超过 100000 个位置收集数据。当标准假设检验应用于这些环境中时,除非我们采取适当的措施,否则会发生不好的事情。 - -让我们看一个例子来看看这是如何工作的。理解能使个人易患诸如精神分裂症等重大精神疾病的遗传因素是很有兴趣的,因为我们知道,在精神分裂症患者中,大约 80%的个体差异是由于遗传差异造成的。人类基因组计划和随后的基因组科学革命为研究人类在基因组上的差异提供了工具。近年来使用的一种方法被称为全基因组关联研究(GWAS),其中每个个体的基因组在其基因组中的 100 万个或更多的位置上进行特征化,以确定他们所拥有的遗传密码的字母(我们称之为“变体”)。在那个地方。在确定了这些之后,研究人员在基因组的每个位置进行了统计测试,以确定被诊断为精神分裂症的人在该位置是否或多或少有一个特定的变异。 - -让我们想象一下,如果研究人员简单地问,在每个地点的 P<;.05 测试是否有意义,而实际上在任何地点都没有真正的效果,会发生什么。为此,我们从一个空分布生成大量的模拟 t 值,并询问其中有多少在 p<;.05 处是重要的。让我们这样做很多次,每次都计算出有多少测试结果是重要的(参见图[9.9](#fig:nullSim))。 - -```r -# simulate 1500 studies with 10,000 tests each, thresholded at p < .05 - -nRuns <- 1500 # number of simulated studies to run -nTests <- 10000 # number of simulated genes to test in each run - -uncAlpha <- 0.05 # alpha level - -uncOutcome <- replicate(nRuns, sum(rnorm(nTests) < qnorm(uncAlpha))) - -sprintf("mean proportion of significant tests per run: %0.2f", mean(uncOutcome) / nTests) -``` - -```r -## [1] "mean proportion of significant tests per run: 0.05" -``` - -```r -# compute proportion of studies with at least one false positive result, -# known as the familywise error rate -sprintf("familywise error rate: %0.3f", mean(uncOutcome > 0)) -``` - -```r -## [1] "familywise error rate: 1.000" -``` - -![A histogram of the number of significant results in each set of 1 million statistical tests, when there is in fact no true effect.](img/file61.png) - -图 9.9:每组 100 万统计试验中,当事实上没有真实效果时,有效结果数量的柱状图。 - -这表明,所有测试中约有 5%在每次运行中都是显著的,这意味着如果我们使用 p<;.05 作为统计显著性的阈值,那么即使没有真正显著的关系存在,我们仍然会“找到”大约 500 个看似显著的基因。NT(预期的重要结果数只是![](img/665dbe1bc3372cde1ad45ed47386bdb6.jpg))。这是因为当我们控制每个测试的错误时,我们没有控制 _ 系列错误 _,或者所有测试中的错误,这是我们真正想要控制的,如果我们要查看大量测试的结果。使用 p<;.05,在上面的例子中,我们的家庭错误率是一个——也就是说,我们几乎可以保证在任何特定的研究中至少出现一个错误。 - -控制家族误差的一个简单方法是将 alpha 水平除以测试次数;这被称为 _bonferroni_ 修正,以意大利统计学家 Carlo Bonferroni 的名字命名。利用上述示例中的数据,我们在图[9.10](#fig:bonferroniSim)中看到,只有约 5%的研究显示使用校正后的α水平 0.000005 而不是名义水平 0.05 的任何显著结果。我们已经有效地控制了家族误差,这样我们研究中的 _ 任何 _ 误差发生的概率控制在 0.05 左右。 - -```r -# compute Bonferroni-corrected alpha -corAlpha <- 0.05 / nTests - -corOutcome <- replicate(nRuns, sum(rnorm(nTests) < (qnorm(corAlpha)))) - -sprintf("corrected familywise error rate: %0.3f", mean(corOutcome > 0)) -``` - -```r -## [1] "corrected familywise error rate: 0.046" -``` - -![A histogram of the number of significant results across all simulation runs after applying the Bonferroni correction for multiple tests.](img/file62.png) - -图 9.10 在多次试验中应用 Bonferroni 校正后,所有模拟运行的重要结果数量的柱状图。 - -## 9.5 阅读建议 - -* [无意识统计,作者:Gerd Gigerenzer](https://library.mpib-berlin.mpg.de/ft/gg/GG_Mindless_2004.pdf) \ No newline at end of file