带你读《计算机时代的统计推断:算法、演化和数据科学》之一:算法与推断

简介: 本书以丰富的案例介绍了计算机时代下的统计推断的发展脉络,从理论的角度剖析统计推断的各类算法、证据等,揭示统计推断如何推动当今大数据、数据科学、机器学习等领域的快速发展并引领数据分析的变革,最后展望了统计学和数据科学的未来方向。

数据科学与工程技术丛书
点击查看第二章
点击查看第三章
计算机时代的统计推断:算法、演化和数据科学
Computer Age Statistical Inference: Algorithms, Evidence, and Data Science

image.png

[美]布拉德利·埃夫隆(Bradley Efron)
特雷福·黑斯蒂(Trevor Hastie) 著
杭汉源 译
机械工业出版社China Machine Press

第1章

算法与推断
统计学是一门从经验中学习的科学,特别是随着时间逐渐积累的经验,例如一种新型实验药物的成功与失败,对一颗小行星通往地球路径的不确定性的度量。令人惊讶的是,任何一种理论都涵盖“从经验中学习”这样一个不确定的目标。事实上,存在两个主要的统计理论,分别是贝叶斯理论和频率学理论,对于它们之间的联系和区别的讨论,使得后面的许多章节变得更加有趣。
首先我们要讨论一个适用于这两种理论的不那么哲学性的、操作性更强的划分,也就是统计分析的算法和推断。这一差别起源于最基本且最流行的统计方法,即平均。假设我们已经观察到数字x1,x2,…,xn适用于某些我们感兴趣的现象,比如n=50个州的车祸率。均值为:

image.png

这一数值就给出了这个结果。
这个数值有多精确呢?教科书式的答案是由标准误差给出的,

image.png

这里求平均值(1.1)就是一个算法,而标准误差则提供了对此算法精度的推断。在统计理论中,令人惊讶和至关重要的一点是,提供估计的同一数据还可以用于评估其准确性。
当然,se(1.2)本身就是一种算法,能够(并且确实可以)对其准确性进行更进一步的推断分析。重点在于,算法是第一位的,推断是在统计考虑中的第二级。在实践中,这意味着算法发明是一个更自由和冒险的事业,同时,推断通过努力评估一些热门的新算法的准确性,对算法进行着改进。
如果推断和算法的竞赛是龟兔赛跑,那么现代计算已经孕育出了仿生兔。这里有两个现象:基于计算机的技术使得科学家能够收集大量的数据集,其数量级比传统统计理论能进行处理的数据的量级大得多;庞大的数据需要新的方法论,该需求正通过大量基于计算机的新的统计算法得到满足。人们在新闻中读到的“大数据”,往往是这些算法扮演着主角。
本书强调了统计推断在故事中作为乌龟的一方。过去的几十年一直是统计学方法论的黄金时代,但它还不是统计推断的一个黄金时代,也不是一个黑暗的时代。蓬勃发展的新算法推动了统计推断的进化(尽管这不是革命),统计学家从各种涌现出来的新算法之中做出相应理论的进化。这本书追溯了自20世纪50年代以来,方法论和推断之间的相互作用,这是统计学科计算机时代的开始。在结束本章之前,我们将通过两个简单的例子来描述从传统统计时代到计算机时代的过渡。

1.1 一个回归的例子

图1.1涉及肾功能的研究。数据点(xi,yi)观测自n=157名健康的志愿者,其中xi是第i个志愿者的年龄,单位是年,yi是对整体功能的综合测量“tot”。肾功能通常随着年龄的增长而下降,这从样本点的向下散布趋势中可以明显看出。肾功能下降的速度是肾移植的一个重要问题,在过去,60岁以上的潜在捐助者被禁止捐献,但由于捐赠者人数不足,这一规定已不再执行。

image.png

图1.1中的实线是一个线性回归模型image.png
它用最小二乘法来拟合数据,即选择使得偏差的平方和

image.png

最小的(β0,β1)。最小二乘算法可以追溯到高斯和勒让德在19世纪初给出的最小二乘估计β0=2.86和β1=-0.079。我们可以从拟合出的直线上读出任何所选年龄对应的肾健康的估计值。表1.1的第一行显示20岁时的估计值为1.29,80岁时的估计值为-3.43。
这些估计有多准确?这是引入推断的地方。公式(1.2)的扩展版本也可以回溯到19世纪,它提供了这一估计的标准误差,如表1.1的第2行所示。图1.1中的垂直条是正负两倍的标准误差,在每个年龄约有95%的可能包含tot真实的期望值。

image.png

这个95%的覆盖率取决于线性回归模型(1.3)的有效性。我们还可以尝试二次回归image.png,或者三次回归等,这些都在计算机时代之前的统计理论的范围内。
现代计算机算法lowess在图1.2中产生了有些颠簸的回归曲线。lowess算法将其注意力沿着x轴移动,将不同阶的局部多项式曲线拟合到(x,y)点附近。(出现在lowess(x,y,1/3)中的1/3决定了局部的定义。)在x轴上重复通过可以改善拟合,减少偶尔异常点的影响。图1.2中的拟合曲线在右边几乎是线性的,但在左边的点更密集的情况下更为复杂。拟合曲线在25岁到35岁之间是平坦的,与图1.1中描绘的均匀下降有潜在的重要区别。

image.png

没有形如(1.2)的公式可推导出lowess曲线的准确性。作为替代,自助法这一计算机密集型推断引擎,曾被用来计算图1.2中的误差条。一个自助数据集是通过对原来的157对样本(xi,yi)进行替换来重新采样的。所以也许(x1,y1)在自助样本中出现两次,但(x2,y2)可能会丢失,而(x3,y3)只出现一次。将lowess应用到自助样本会生成原始计算的一个自助复制。
图1.3显示了图1.2中在原始曲线周围弹跳的前25个(共250个)自助lowess复制图。对任何一个年龄下的复制图的可变性,自助标准差都决定了原始曲线的准确性。第10章讨论了自助法的工作机制和原理。无论算法有多么复杂,自助法都在评估该算法估计精度方面,具有巨大优势。然而,代价是计算量增加百倍或者千倍。这在1930年是不可想象的,但现在则很常见。

image.png

表1.1的底部两行展现了lowess估计值和它们的标准误差。lowess的标准误差大约是线性回归的2倍,这是我们为增加lowess的灵活性所付出的代价。

1.2 假设检验

我们的第二个例子涉及假设检验而不是估计的方法论和推断的推进:72名白血病患者中,47名患有ALL(急性淋巴细胞白血病),25名患有AML(急性髓样白血病,预测更差)。每位患者均具有针对7128个基因组的测量的遗传活性。图1.4中的直方图比较了两组中基因136的遗传活性。

image.png

AML组似乎显示出更大的活性,其均值为image.png我们所感知的差异是真实的,还是像人们喜欢说的那样,是“统计的侥幸”?这个问题的经典答案是通过一个两样本t-统计量。image.png其中sd是分子标准差的估计。
除以sd可使我们(在第5章讨论的高斯假设下)将t的观测值与标准“零”分布进行比较,在这种情形中,“零”分布是一个自由度为70的学生t分布。我们从(1.6)中得到t=3.01,这通常被认为是强有力的证据,证明(1.5)中呈现的差异是真实的;在标准术语中,描述为“双侧显著性水平为0.0036”。
一个小的显著性水平(或“p-值”)是对统计意外的表述:如果事实上ALL和AML患者之间的基因136表达水平没有差异,则已发生非常不寻常的事情。如果基因136仅仅是可能产生“有趣”结果的成千上万个候选者之一,我们就不会对t=3.01感到惊讶。
在此情况就是这样。图1.5显示了7128个基因的两样本t-统计量的直方图。现在t=3.01看起来没那么不常见,其他t超过3.01的400个基因,约占总体的5.6%。

image.png

这并不意味着基因136在“0.056水平上是显著的”。这里存在两个强大的复杂因素:
1.大量的候选者,在这里指7128个基因,将产生一些大的t值,即使ALL和AML患者之间的基因表达确实没有差异。
2.直方图意味着在这项研究中,理论零分布是有问题的(“学生t的自由度为70”),即图1.5中的平滑曲线存在问题。这个中心太狭窄了,据推测大多数基因报告的结果并不显著。
我们将在第15章中看到,在ALL/AML研究中,低的错误发现率,即一个无害的基因被错误地识别为有害的概率较低,需要t超过6.16。7128个基因中只有47个进行切割。错误发现率理论在统计推断中是一个令人印象深刻的进步,它融合了贝叶斯、频率论和经验贝叶斯(第6章)元素。这是科学世界的一个必要的进步,在这个世界里,基于计算机的技术经常呈现数以千计的比较结果。
关于算法/推断统计循环还有一件事要说明。重要的新算法经常出现在专业统计学家的世界之外:神经网络、支持向量机和提升算法是三个著名的例子。这一切都不奇怪。新的数据来源,例如卫星图像或医学微阵列,激发观察科学家产生新方法。早期的文献倾向属于较热情的一类,这类文献会声称它所提出的方法具有巨大的适用性和力量。
在第二阶段,统计学家试图将新的方法定位在统计理论框架内。换句话说,他们执行循环的统计推断部分,将新方法置于已知的贝叶斯和频率论方面的性能极限之内。(提升算法提供了一个很好的例子,见第17章。)这是一个健康的连锁事件,对于统计专业的混合活力和算法技术的进一步发展都是好事。

1.3 注释

勒让德在1805年发表了最小二乘算法,高斯说他从1795年以来一直使用该方法进行天文轨道拟合。鉴于高斯在重大数学进展方面的惊人成就,这说明了最小二乘思想的重要性。第8章介绍了其通常的代数表达式,以及标准误差(表1.1的第2行)的高斯公式。
我们在算法和推断之间的划分让人想起图基的解释/确认系统。然而,目前的算法世界比“探索性”这个词所表达的意思更大胆,而在我们的思维中,“推断”则表达了比单纯的确认更丰富的东西。
注释
1.Lowess是由William Cleveland(Cleveland,1981)设计的,并且可用R统计计算语言实现。它被应用于Efron(2004)的肾脏数据。肾脏数据起源于斯坦福大学Brian Myers博士的肾脏病学实验室。

相关文章
C4.
|
2月前
|
存储 算法 C语言
关于c语言用计算机语言表示算法
关于c语言用计算机语言表示算法
C4.
17 1
|
3月前
|
算法 测试技术 C++
【动态规划】【图论】【C++算法】1575统计所有可行路径
【动态规划】【图论】【C++算法】1575统计所有可行路径
|
3月前
|
人工智能 算法 测试技术
【动态规划】【二分查找】C++算法 466 统计重复个数
【动态规划】【二分查找】C++算法 466 统计重复个数
|
8天前
|
缓存 算法
LRU(Least Recently Used)算法是一种常用的计算机缓存替换算法
【5月更文挑战第4天】LRU算法是基于页面使用频率的缓存策略,优先淘汰最近最久未使用的页面。实现可采用双向链表或数组,前者灵活,后者时间复杂度低。优点是利用时间局部性提高命中率,简单易实现;缺点是占用空间,对循环访问和随机访问场景适应性不佳。
26 0
|
25天前
|
存储 分布式计算 负载均衡
分布式(计算机算法)
分布式(计算机算法)
|
1月前
|
算法 测试技术 C#
【字典树】【KMP】【C++算法】3045统计前后缀下标对 II
【字典树】【KMP】【C++算法】3045统计前后缀下标对 II
|
2月前
|
自然语言处理 算法 搜索推荐
用计算机语言表示算法
在计算机科学中,算法是解决问题的核心步骤和方法的描述。然而,算法本身并不直接执行;它们需要被转换成计算机可以理解和执行的指令,这通常是通过编写代码来实现的。不同的计算机语言提供了不同的方式来表示和实现算法。本文将讨论如何使用计算机语言来表示算法,并通过一个具体示例来展示这个过程。
14 0
|
3月前
|
人工智能 算法 测试技术
【字符串】【C++算法】828.统计子串中的唯一字符
【字符串】【C++算法】828.统计子串中的唯一字符
|
4月前
|
存储 算法 JavaScript
TypeScript算法专题 - blog9 - 单链表统计 : 返回指定值在单链表结点中的出现次数
TypeScript算法专题 - blog9 - 单链表统计 : 返回指定值在单链表结点中的出现次数
26 0
|
4月前
|
人工智能 算法 测试技术
【动态规划】【二分查找】C++算法 466 统计重复个数
【动态规划】【二分查找】C++算法 466 统计重复个数