描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111624912
本书特色:
•将代码嵌入讲解的正文,你能够在阅读的过程中实践代码并查看结果。
•通过实际数据分析的例子来讲解概念。
•详细地讲解代码,让你能够诊断并且纠正问题。
•传授重要但是不常见的编程技巧。
•展示相同的数学模型如何能有不同的实践方法。
•在选读部分提供更加详细的数学解释。
•在作者的网站和Github页面上提供相应的R包。
目 录
译者序
前言
第1章 布拉格的泥人1
1.1 统计机器人1
1.2 统计反思4
1.2.1 假设检验不是模型5
1.2.2 测量很关键8
1.2.3 证伪是一种共识10
1.3 机器人工程的3种工具10
1.3.1 贝叶斯数据分析11
1.3.2 分层模型14
1.3.3 模型比较和信息法则15
1.4 总结16
第2章 小世界和大世界18
2.1 路径花园19
2.1.1 计算可能性20
2.1.2 使用先验信息23
2.1.3 从计数到概率24
2.2 建立模型26
2.2.1 数据背景26
2.2.2 贝叶斯更新27
2.2.3 评估28
2.3 模型组成30
2.3.1 似然函数30
2.3.2 参数31
2.3.3 先验32
2.3.4 后验33
2.4 开始建模35
2.4.1 网格逼近36
2.4.2 二项逼近37
2.4.3 马尔可夫链蒙特卡罗40
2.5 总结41
2.6 练习41
第3章 模拟后验样本43
3.1 后验分布的网格逼近抽样46
3.2 样本总结47
3.2.1 取值区间对应的置信度48
3.2.2 某个置信度下的取值区间49
3.2.3 点估计52
3.3 抽样预测55
3.3.1 虚拟数据55
3.3.2 模型检查57
3.4 总结61
3.5 练习61第4章 线性模型64
4.1 为什么人们认为正态分布是常态65
4.1.1 相加得到正态分布65
4.1.2 通过相乘得到正态分布67
4.1.3 通过相乘取对数得到正态分布67
4.1.4 使用高斯分布68
4.2 用来描述模型的语言70
4.3 身高的高斯模型71
4.3.1 数据72
4.3.2 模型73
4.3.3 网格逼近后验分布76
4.3.4 从后验分布中抽取样本77
4.3.5 用map拟合模型79
4.3.6 从map拟合结果中抽样82
4.4 添加预测变量84
4.4.1 线性模型策略85
4.4.2 拟合模型88
4.4.3 解释模型拟合结果89
4.5 多项式回归101
4.6 总结105
4.7 练习105
第5章 多元线性回归108
5.1 虚假相关110
5.1.1 多元回归模型的数学表达112
5.1.2 拟合模型113
5.1.3 多元后验分布图114
5.2 隐藏的关系122
5.3 添加变量起反作用128
5.3.1 共线性129
5.3.2 母乳数据中的共线性132
5.3.3 后处理偏差136
5.4 分类变量138
5.4.1 二项分类139
5.4.2 多类别141
5.4.3 加入一般预测变量144
5.4.4 另一种方法:独一无二的截距144
5.5 一般最小二乘和lm145
5.5.1 设计公式145
5.5.2 使用lm146
5.5.3 从lm公式构建map公式147
5.6 总结148
5.7 练习148
第6章 过度拟合、正则化和信息法则150
6.1 参数的问题152
6.1.1 更多的参数总是提高拟合度153
6.1.2 参数太少也成问题156
6.2 信息理论和模型表现158
6.2.1 开除天气预报员158
6.2.2 信息和不确定性161
6.2.3 从熵到准确度163
6.2.4 从散度到偏差165
6.2.5 从偏差到袋外样本167
6.3 正则化169
6.4 信息法则171
6.4.1 DIC173
6.4.2 WAIC173
6.4.3 用DIC和WAIC估计偏差176
6.5 使用信息法则178
6.5.1 模型比较178
6.5.2 比较WAIC值180
6.5.3 模型平均185
6.6 总结187
6.7 练习188第7章 交互效应190
7.1 创建交互效应192
7.1.1 添加虚拟变量无效195
7.1.2 加入线性交互效应是有效的197
7.1.3 交互效应可视化199
7.1.4 解释交互效应估计200
7.2 线性交互的对称性203
7.2.1 布里丹的交互效应203
7.2.2 国家所属大陆的影响取决于地势204
7.3 连续交互效应205
7.3.1 数据206
7.3.2 未中心化的模型206
7.3.3 中心化且再次拟合模型209
7.3.4 绘制预测图212
7.4 交互效应的公式表达214
7.5 总结215
7.6 练习215
第8章 马尔可夫链蒙特卡罗218
8.1 英明的马尔可夫国王和他的岛屿王国219
8.2 马尔可夫链蒙特卡罗221
8.2.1 Gibbs抽样222
8.2.2 Hamiltonian
蒙特卡罗222
8.3 初识HMC:map2stan224
8.3.1 准备225
8.3.2 模型估计225
8.3.3 再次抽样226
8.3.4 可视化227
8.3.5 使用样本229
8.3.6 检查马尔可夫链230
8.4 调试马尔可夫链231
8.4.1 需要抽取多少样本232
8.4.2 需要多少条马氏链233
8.4.3 调试出错的马氏链234
8.4.4 不可估参数236
8.5 总结238
8.6 练习239
第9章 高熵和广义线性模型241
9.1 最大熵242
9.1.1 高斯分布246
9.1.2 二项分布248
9.2 广义线性模型253
9.2.1 指数家族254
9.2.2 将线性模型和分布联系起来256
9.2.3 绝对和相对差别259
9.2.4 广义线性模型和信息法则259
9.3 最大熵先验260
9.4 总结260
第10章 计数和分类261
10.1 二项回归262
10.1.1 逻辑回归:亲社会的大猩猩262
10.1.2 累加二项:同样的数据,用累加后的结果271
10.1.3 累加二项:研究生院录取272
10.1.4 用glm拟合二项回归模型278
10.2 泊松回归279
10.2.1 例子:海洋工具复杂度281
10.2.2 MCMC岛屿287
10.2.3 例子:曝光和抵消项288
10.3 其他计数回归290
10.3.1 多项分布290
10.3.2 几何分布294
10.3.3 负二项和贝塔二项分布295
10.4 总结295
10.5 练习295
第11章 怪物和混合模型297
11.1 排序分类变量297
11.1.1 案例:道德直觉298
11.1.2 通过截距描绘有序分布299
11.1.3 添加预测变量303
11.2 零膨胀结果变量307
11.3 过度离散结果310
11.3.1 贝塔二项模型311
11.3.2 负二项或者伽马泊松分布314
11.3.3 过度分散、熵和信息理论314
11.4 总结315
11.5 练习315
第12章 分层模型318
12.1 案例:蝌蚪数据分层模型320
12.2 变化效应与过度拟合/拟合不足326
12.2.1 建模327
12.2.2 对参数赋值328
12.2.3 模拟存活的蝌蚪329
12.2.4 非聚合样本估计329
12.2.5 部分聚合估计330
12.3 多重聚类332
12.3.1 针对不同黑猩猩分层333
12.3.2 两重聚类334
12.3.3 更多的聚类337
12.4 分层模型后验预测337
12.4.1 原类别后验预测338
12.4.2 新类别后验预测339
12.4.3 聚焦和分层模型342
12.5 总结345
12.6 练习345
第13章 解密协方差347
13.1 变化斜率348
13.1.1 模拟数据349
13.1.2 模拟观测351
13.1.3 变化斜率模型352
13.2 案例分析:录取率和性别357
13.2.1 变化截距357
13.2.2 性别对应的变化效应358
13.2.3 收缩效应360
13.2.4 模型比较360
13.2.5 更多斜率361
13.3 案例分析:对黑猩猩数据拟合变化斜率模型361
13.4 连续变量和高斯过程368
13.4.1 案例:岛屿社会工具使用和空间自相关368
13.4.2 其他“距离”375
13.5 总结375
13.6 练习375
第14章 缺失数据及其他378
14.1 测量误差379
14.1.1 结果变量误差381
14.1.2 结果变量和预测变量同时存在误差383
14.2 缺失数据385
14.2.1 填补新皮层数据385
14.2.2 改进填补模型389
14.2.3 非随机390
14.3 总结392
14.4 练习393
第15章 占星术与统计学394
参考文献398
林 荟2018年12月
前 言石匠,开始动工之前(Masons,when they start upon a building),总会小心测试鹰架(Are careful to test out the scaffolding)。
确保模板不会滑落在繁忙的街口(Make sure that planks won’t slip at busy points),牢牢钉好每把梯子,拴紧所有螺丝(Secure all ladders, tighten bolted joints)。
这一切付出在完工后都得被拆除(And yet all this comes down when the job’s done),展露结实的石墙(Showing off walls of sure and solid stone)。
所以,亲爱的,就算我们之间的桥梁(So if, my dear, there sometimes seem to be),偶尔因为老旧看似即将倒塌(Old bridges breaking between you and me)。
别害怕。让那鹰架倒下吧(Never fear. We may let the scaffolds fall),相信我们建造的墙坚不可摧(Confident that we have build out wall)。
(《鹰架》(Scaffolding),作者Seamus Heaney, 1939—2013)
本书意在帮助你增进统计模型的知识以及使用模型的信心。就像造墙时的鹰架,能够帮助你建造需要的石墙,虽然最终你要将鹰架拆除。因此,本书讲解的方式有些拐弯抹角,但那是为了促使你们亲自实践模型背后的每一个计算步骤,虽然真实建模的过程常常是自动的。这样小题大做是为了让你能够对方法背后的细节有足够的了解,以能够合理地选择和解释模型。虽然你最终会用一些工具自动建模,但刚开始放慢步伐、夯实基础是很重要的。耐心建立坚实的墙然后再拆去鹰架。目标读者本书主要面向自然和社会科学的研究人员,可以是新入学的博士生,也可以是有经验的专业人士。你需要有回归的基本知识,但不一定需要对统计模型驾轻就熟。如果你接受这样的事实:一些在21世纪早期广泛使用的典型统计学方法并非完全正确,其中大部分和p值以及令人迷惑的各种统计检验有关。如果你在一些杂志和书上读到过一些替代的方法,但不知道从何学习这些方法,那么本书就是为你而写的。事实上,本书并不是要直接抨击p值和相关的方法。在我看来,问题并不在于人们习惯用p值来解决科学界的各种问题,而在于人们忽略了许多其他有用的工具。因此,我假定本书的读者已经准备好不使用p值做统计推断。仅有这种心理准备还不够,最好能有一些文献资料帮助你探查与p值和传统统计检验有关的错误及误解。即使我们不用它们,也要对其有所了解。我因此查阅了一些相关的资料,但由于本书篇幅所限不能详细讨论,否则本书会太厚,也会打乱原本的教学节奏。这里要提醒一点,反对p值不仅仅是贝叶斯学派的观点。事实上,显著性检验能够(其实也已经)构建为贝叶斯过程。其实真正促使人们避免使用显著性检验的是出于认识论的考虑,关于这一点我会在第1章简单讨论。教学方法本书使用更多的是程序代码而非数学公式。直到真正对算法付诸实践,即使最出色的数学家可能也无法理解该过程。因为用代码实践的过程去除了算法中所有模棱两可的地方。因此,如果一本书同时教你如何实践算法的话,学习起来会更轻松。展示代码除了有利于教学也是必需的,因为许多统计模型现在都需要计算,纯数学的方法无论如何也不能解决问题。你在本书后面部分可以看到,同样的数理统计模型的实现方法可以有多种,而且我们有必要区分这些方法。当你在本书之外探索更高级或更有针对性的统计模型时,这里强调的编程计算知识将帮助你识别和应对各种实际困难。本书的每一部分都只揭示了冰山一角。我丝毫没有涵盖所有相关内容的打算,而是试图将其中一些东西解释清楚。在此尝试中,我在数据分析的实例中穿插了许多模型概念和内容。例如,书中没有一个单元专门讲预测变量的中心化,但我在数据分析中使用并解释了这项技术。当然,不是所有读者都喜欢这样的讲解方式。但是我的很多学生喜欢这种讲解方式。我很怀疑这样的讲解能否对大部分要学习这些内容的读者起作用。从心底来说,这反映了我们在现实中是如何在自己的研究中学会这些方法的。如何使用本书这不是参考书,而是教科书。本书不是让你在遇到问题时用来查阅相关部分的,而是一个完整连贯的教学过程。这在教学上很有优势,但可能不符合很多科学家现实中的阅读习惯。本书正文中有很多代码。这样做是因为在21世纪从事统计分析工作必须要会编程,或多或少会一些。编程不是候选技能,而是必备技能。在书中的很多地方,我宁可过多地展示代码,也不愿过少展示代码。根据我对编程新手的教学经验,当学生手上有可以运行的代码时,让他们在此基础上修改比让他们从0开始写程序效果更好。我们这代人可能是最后一代需要用命令的方式操作计算机的了,因此编程也越来越难教。我的学生非常熟悉计算机,但他们不知道计算机代码长什么样。[=1(]本书要求读者具备什么基础?[=]本书的目的不是教读者关于编程的基本知识。我们假设读者已经知道R的基本安装和数据处理知识。在大多数情况下,入门级的R编程介绍便足够。据我所知,许多人觉得Emmanuel Paradis所著的《R for Beginners》很有帮助。你可以通过链接http://cran.r-project.org/other-docs.html找到该指南以及许多入门级教程。要顺利阅读本书,你得知道y在代码旁边有一个数字标识,你可以在本书的网站上寻找相应的代码文本文件。希望读者能够跟上教学进度,运行书中的代码,然后将输出结果和书中展示的结果进行比较。我非常希望你能够自己运行代码,因为和你不能光靠看李小龙的电影就学会功夫一样,你不能仅靠阅读一本书而不实践就学会编写统计模型程序。你得真正到格斗场上出拳,当然也可能挨拳。如果你觉得困惑,记得你可以独立运行每行代码,检查过程中的每一步计算。这是你学习和解决问题的方式。例如,下面的代码用一种让人抓狂的方法计算10乘以20:R code0.2
如果你不理解某个特定的步骤,你可以随时查看那一步之后变量x的内容。你要用这种方式学习书中的代码。对于你自己写的代码,可以用这种方法找到代码中的错误并修复它们。[=1(]选读部分。[=]本书中的选读部分真正阅读起来是这样的。书中有两类选读部分:1)再思考(Rethinking);2)深入思考(Overthinking)。再思考部分看起来是这样的:再思考:再想想。再思考部分意在提供更广泛的资料,略微提及当前介绍的方法和与其他方法的联系,提供一些背景材料,或者指出一些常见误解。这些文本框是选读部分,但它使本书更完整并能激发读者进一步思考。深入思考部分看起来是这样的: 深入思考:亲自实践。深入思考部分提供了更详细的代码解释或数学背景。这部分材料对理解主要文本并不那么关键,但它也很有价值,尤其是在第二遍阅读的时候。例如,有时你的计算方式对结果是有影响的。从数学的角度看下面这两个表达式是等价的:p1=log(0.01200)p2=200×log(0.01) 但是当你用R进行计算时,这两种方法得到的结果不同:R code0.3
第二种方法得到的结果是正确的。之所以会有这样的问题,是因为R对小数的近似,计算机将很小的值近似为0。精度的缺失可能导致推断结果大幅度偏差。这就是为什么我们在统计计算时,总使用概率的对数值,而非概率本身。初次阅读本书时,你可以跳过所有的深入思考部分。[=1(]命令行是最好的工具。[=]在21世纪,要达到能够实践统计推断的编程水平并不是那么复杂,但一开始你对此不太熟悉。为什么不教读者使用现成的用户交互软件呢?学习如何用命令行进行统计分析的好处远高于点击菜单。谁都知道命令行功能很强大,但同时它的速度也很快,并且符合道德义务。因为用代码分析无形中对分析过程进行了存档。几年以后你可以通过这些代码重复之前的分析。你也可以重复使用之前写的代码,将它们分享给同事。鼠标点击的方式使得过程无法追踪。一个嵌入R代码的文件可以保存分析过程。一旦你习惯用这种方式计划、运行并且保存分析过程,在之后的职业生涯中会获益不断。如果你始终用鼠标点击的方法,那在之后要不停重复。不像使用代码,相同的分析只需要编写一次代码,之后可以用它进行同样的分析。分析过程的保存和可重复也是起码的科学道德,日后的检查以及项目的迭代也建立在此基础上。用代码进行统计分析可自然而然地达到这个结果,而鼠标点击却不行。因此,我们不是因为要证明自己的技术实力或者自己是人才才使用命令行的。我们使用命令行是因为它确实更好。使用命令行一开始可能比鼠标点击难,因为你需要学习一些基本的语句才能开始使用。但是为了提高工作效率,我们应该使用命令行。[=1(]你该如何工作。[=]如果我只是告诉你们使用命令行而不告诉你们怎么使用,那也太不厚道了。对于那些之前使用其他语言的人,你们可能要再学一些新语言的规则,但变化并不大。对于那些之前只用鼠标点击菜单的统计软件的读者,开始可能会觉得很不习惯,但过几天就会适应了。对于那些之前使用过其他通过命令行进行分析的软件(如Stata和SAS)的读者,还需要调整适应。我会先解释总的方法,然后解释为什么Stata和SAS的使用者也需要适应。首先,使用脚本统计分析是在一个纯文本编辑器和R语言之间来回切换。纯文本编辑器是用来创建和修改简单无格式文本文件的程序。常见的有Notepad(Windows操作系统)、TextEdit(Mac OS X操作系统)、Emacs(大部分*NIX系统,包括Mac OS X)。还有很多专门针对程序员的高大上的文本编辑器。我们推荐读者使用RStudio或者Atom文本编辑器,它们都是免费的。注意MSWord不是简易文本,不要用它来写代码。你要通过简易文本编辑器记录在R中执行过的代码。你一定不想直接在R控制器中键入代码。你该在简易文本编辑器中写代码,然后复制粘贴到R控制器中运行。或者一次性将代码文本读入R。如果你只是用R进行数据探索、查错,或者仅仅只是尝试一些代码,那可以直接将代码键入控制器。但任何严谨的工作都应该用文本编辑器记录代码,原因之前已经讲过了。你可以在R代码中添加评论来帮助你编写代码,也方便之后回顾代码。在评论前键入#符号。为了确保大家理解,下面是一小段完整的进行线性回归的程序,使用R中的一个内置数据集。即使你现在不知道该代码是干什么的,但是希望你能将其看作一个基本的拥有注释的格式清晰的例子。R code0.4 1英尺≈30.48厘米——编辑注最后,即使是那些熟悉Stata和SAS脚本语言的人,也需要重新学习R。像Stata和SAS这类程序语言对应的处理信息范式和R是不同的。在使用中,过程命令如PROC GLM是在模仿菜单命令。这些过程会产生大量使用者不需要的默认输出。R不是这样的,它强制使用者自己决定需要输出什么信息。你可以先用R拟合统计模型,然后接着用命令获取相应拟合结果信息。通过书中的例子,读者会更加熟悉这样的调查范例。但要注意,你需要主动决定需要模型的哪方面信息。安装R包rethinking书中的代码例子要求你安装R包rethinking。该包中含有例子中用到的数据以及本书使用的许多建模工具。rethinking包本身依赖于另外一个包rstan来拟合本书后半部分讲到的更加高级的模型。你必须先安装rstan包。根据你的系统,依照mc-stan.org网站上的相应安装指示。你需要安装C 编译器(也叫作“工具链”)和rstan包。网站上有关于如何安装这两者的说明。接下来你就能够在R中安装rethinking和其依赖的包,安装代码如下:R code0.5注意rethinking不在CRAN的包列表中,至少现在还没有。把包上传到CRAN并没有实质的好处。你总能通过搜索引擎找到关于安装最新版本rethinking包的说明。如果你在使用包时发现任何bug,可以到github.com/rmcelreath/rethinking上查看是否有现成的解决方法。如果没有,你可以提交一个bug报告,这样在有解决方法时你会收到通知。此外,如果你想对包中的一些函数进行修改,包的所有源代码可以在那里找到。大家可以自行从Github上fork该包,任意修改。致谢在本书的写作过程中许多人提供了宝贵的意见及想法。他们大多数是选修我教授的统计学课程的研究生,还有一些征求我意见的同事。这些人教我如何教授这些知识,有时我学习新的知识就是因为他们需要。许多人付出时间对本书的一些章节或者其中的代码进行了评论。这些人有:Rasmus Bth、Ryan Baldini、Bret Beheim、Maciek Chudek、John Durand、Andrew Gelman、Ben Goodrich、Mark Grote、Dave Harris、Chris Howerton、James Holland Jones、Jeremy Koster、Andrew Marshall、Sarah Mathew、Karthik Panchanathan、Pete Richerson、Alan Rogers、Cody Ross、Noam Ross、Aviva Rossi、Kari Schroeder、Paul Smaldino、Rob Trangucci、Shravan Vasishth、Annika Wallin以及很多匿名的审稿人。Bret Beheim和Dave Harris很给力,他们对本书早期版本给予了大量的建议。Caitlin DeRango和Kotrina Kajokaite花时间改进了几章和章后的习题。Mary Brooke McEachern对本书的内容和讲解方式提供了重要意见,并且对本书的写作给予了支持,对(书中的不足之处)表现出宽容。许多匿名审稿人对各章提供了详细的反馈。他们中没有一个人是完全赞同本书的,书中的所有错误和不足都由本人负责。但是正是因为我们各执己见,才使本书更加与众不同。本书献给Parry M.R.Clarke博士(1977—2012),是他促使我写作本书。Parry对统计、数学和计算机科学的探索帮助了他身边的每一个人。他让我们变得更好。
——安德鲁·格尔曼 (Andrew Gelman), 哥伦比亚大学
评论
还没有评论。