注:
本文是对《IPython Interactive Computing and Visualization Cookbook》一书中第七章【Introduction to statistical data analysis in Python – frequentist and Bayesian methods】的简单翻译和整理,这部份内容主要将对统计学习中的频率论方法和贝叶斯统计方法进行介绍。
本文将介绍如何洞察现实世界的数据,以及如何在存在不肯定性的状况下作出明智的决定。
统计数据分析的目的是经过一部分不肯定的观测现象了解一个复杂的,真实世界。数据的不肯定性致使了咱们得到的关于现象知识的不肯定。该理论的一个主要目标是量化这种不肯定性。
统计推理(Statistic inference)包括经过部分的不肯定的观察数据获取一个关于未知过程的信息。特别是,估计(Estimation)承担着获取用于描述该过程的数学变量的大体度量。
决策理论(Decision theory)使咱们可以经过随机的观测样本,以一个可以控制的风险,对一个未知过程进行决策。
对于不肯定性的度量至少有两种不一样的考虑方式,这致使了两种不一样类型的推理/决策方法/其余统计问题,咱们称之为频率论(frequentist)和贝叶斯方法(Bayesian methods)。
频率论方法经过大量独立实验将几率解释为统计均值(大数定律) ;贝叶斯方法则将几率解释为信念度(degree of belief)(不须要大量的实验) 。当考虑的试验次数很是少的时候,贝叶斯方法的解释很是有用。此外,贝叶斯理论将咱们对于随机过程的先验知识归入考虑,当咱们得到的数据愈来愈多的时候,这个先验的几率分布就会被更新到后验分布中。
频率论和贝叶斯方法都各有其优劣的地方。例如,频率论方法比贝叶斯方法更容易实施,然而却更难解释。对于频率论应用的典型错误能够参看:《Statistics Done Wrong》。
在许多状况下,咱们的分析是基于几率模型,这个模型描述了数据是如何产生的。几率模型没有实体(reality),它仅仅是一个用来指导分析的数学对象。一个好的模型可能很是有用,而一个很差的模型可能会误导你。
使用参数推理方法,能够认为模型属于已知的某个几率分布簇(family of probability distributions),该模型有一个或多个有待估计的数值参数。
使用非参数推理方法,在模型中不须要进行这样的假设,这使得模型的创建很是灵活。然而这种方法一般在实施和解释的时候会更加复杂。
统计假设检验容许咱们在数据不完整的状况下作出决策,固然从定义上说,这些决策是不肯定的。统计学家已经制定了严格的方法来评估这种风险。然而,在进行决策的过程当中总会涉及一些主观性。理论只是在不肯定的世界中帮助咱们进行决策的一种工具。
在进行假设检验时许多频率论的方法大体上包含如下步骤:
一、 写出假设,尤为是零假设(Null hypothesis),它与咱们要(以必定的置信度)证实的假设相反。
二、 计算检验统计量,这是一个数学公式,取决于检验的类型,模型,假设和数据。
三、 使用计算出的值接受假设,或者拒绝假设,或者未能得出结论。
咱们将一枚硬币抛掷次,观察到正面的次数是
次。咱们想知道这枚硬币是不是公平的(零假设)。这个例子很是简单可是对于教学来讲至关不错,此外,它仍是许多复杂方法的基础。
l 为0(硬币是反面)的几率是
l 为1(硬币是正面)的几率是
下面是进行简单的统计Z检验所需的步骤:
一、 咱们假设通过次投掷硬币后,出现正面的次数是
。咱们选择显著性水平为0.05,这枚硬币是否公平?咱们的零假设是:这枚硬币是公平的(
)。
二、 咱们开始计算z-score,它是由下面的公式定义的(xbar是对分布平均的估计):
四、 这个比0.05小,所以咱们拒绝零假设而且得出结论:这枚硬币多是不公平的。
这个抛掷硬币的实验被模拟成个独立同分布的随机变量
,它们都服从伯努利分布
。每一个
表明一次硬币抛掷。实验结束后,咱们从这些变量中获得了真实的值(样本)。一个不一样的概念一般用来区分随机变量(几率对象)和实际的值(样本)。
下面的公式给出了样本均值的定义(这里是硬币正面出现的比例):
已知伯努利分布的指望
和方差
,咱们来计算:
z检验(z-test)是对进行的标准化(减去均值,除以它的标准差,使得造成的变量均值为0,标准差为1)。
根据零假设,获取的z-test比指定的高的几率是什么?这个几率就被称做是(双侧)
。根据中心极限定理(Central Limit Theorem),对于比较大的
来讲,z-test近似的服从一个标准正态分布,所以咱们能够获得:
在上面的公式中,是标准正态分布的累计分布函数(cumulative distribution function)。在SciPy中,能够经过scipy.stats.norm.cdf来计算它。所以,给定一个从数据中计算获得的z-test值,咱们就能够经过该函数来计算其
。在零假设下,观察到z-test的几率应该远远大于给定的置信度。
若是比5%(在实验开始时选择的显著性水平)小,咱们能够得出结论:
l 零假设是不正确的,也就是说硬币是不公平的;
l 或者零假设是正确的,获得这样的是因为运气太差了,所以咱们不能得出结论。
在这种框架下咱们没法消除这两种选择的歧义,但一般状况下都会选择第一种结论。这是这种方法的一个缺陷,虽然也可使用一些其余的方法来解决这个问题(例如,咱们能够分别独立进行屡次不一样实验来观察它们的结果)。
许多统计检验都使用上述这个模式来检验数据中存在的各类特性,《Statistical hypothesis testing》中给出了一些常见的统计假设检验。
因为解释起来并不容易,即便在同行评审(peer-reviewed)的科学出版物中,仍然可能会出现错误的结论。 《Statistics Done Wrong》中给出了关于该问题的一些深刻话题。
上一节中,咱们使用了频率论的方法来对不完整的数据进行假设检验。本节中,咱们将介绍另外一种基于贝叶斯理论的方法。其主要思想是将未知参数看成是随机变量,就像描述试验时使用的变量同样。关于参数的先验知识被集成到模型中,随着观察到的数据愈来愈多,这些知识会被一直更新。
频率论方法和贝叶斯方法对于几率的解释不太同样。频率论认为几率是当样本的数量趋近于无穷时(样本出现)频率的极限。贝叶斯方法将其解释为一种信念(belief),它将会随着观测数据的增长而不断被更新。
这里,咱们将使用贝叶斯方法从新进行以前的硬币抛掷实验
具体作法:
咱们将定义为观察到硬币正面的几率。在上一节中
只是一个固定的数字,然而此处咱们将其看做是一个随机变量。最初,这个变量遵循一种称之为先验分布(prior distribution)的分布,它表明了在开始进行抛掷硬币以前咱们对于
的知识。咱们将会在每次试验以后更新这个分布(后验分布,posterior distribution)。
一、 首先,咱们假设是一个在[0,1]上服从均匀分布的随机变量。这就是咱们的先验分布:对于全部的
来讲,
。
二、 而后,咱们开始抛掷次硬币,将
定义为第
次抛掷硬币试验的结果(反面是0,正面是1)。
三、 当观测到后
的几率分布变为何?贝叶斯公式使咱们能够计算后验几率分布:
四、 咱们在Python中根据上述数学公式定义后验分布,咱们将这个式子定义为二项分布的几率论密度函数(Probability Mass Function, pmf)的倍:
五、 在观测到次正面和总次数
时咱们对这个分布的图像进行绘制:
这条曲线表明了在观测到61次正面后,对于参数的信念。
在这节中咱们将会解释贝叶斯定理,而后解释这个例子背后的数学细节。
贝叶斯定理:
使用一个数学模型来对数据进行解释是数据科学中很是通用的一个想法,这被定义为一个单向的过程:。一旦这个模型被肯定,数据科学家的任务就变为利用数据恢复关于该模型的信息。换句话说,咱们想对原始的过程进行反转:
。
在一个几率集合中,上述正向的过程被表示为一个条件几率,这是模型被彻底指定后观测数据出现的几率。与此相同的,反向的过程也能够表示为一个条件几率
,这在获得观测数据(咱们进行试验后能够获得的数据)后提供了关于(咱们正在寻找的)模型的信息。
贝叶斯定理是对几率过程进行反转的通用框架的核心。它能够被定义为:
当咱们获得了观测数据后,这个公式提供了关于模型的信息。贝叶斯公式被普遍的应用于信号处理,统计,机器学习,反向问题(inverse problems)和许多其余的科学应用。
在贝叶斯公式中,反映了咱们对于模型的先验知识。
是数据的分布,它一般被描述为对
的积分。
总之来讲,贝叶斯公式为咱们提供了一个关于数据推断的通用路线图:
一、 为正向过程(数据推理过程)指定一个数学模型(
);
二、 为模型指定先验知识();
三、 为求解公式进行分析或者数值运算;
在这个例子中,咱们能够经过贝叶斯定理获得后验分布服从下面的公式:
因为是相互独立的,所以咱们能够获得(
是正面向上的次数):
此外,咱们能够分析计算以下积分(使用分部积分推导):
最终,咱们将获得:
咱们能够从后验分布中进行点估计。例如,对于这个分布中的q做最大后验估计(maximum a posteriori(MAP) estimation)。
这里咱们能够经过对后验几率中的求导进行估计,假定
能够获得: