开放的科研分享 http://blog.sciencenet.cn/u/chuchj 生态学 兰州大学

博文

频度与贝叶斯――白猫黑猫?(修正版)

已有 10398 次阅读 2009-5-1 21:57 |个人分类:生活点滴|系统分类:科研笔记| 贝叶斯, 频度, 等级模型, 层次模型

频度与贝叶斯――白猫黑猫?(修正版)
储诚进
兰州大学
 
以下所记,只是自己在学习贝叶斯期间的灵光闪现的心得与感受,混杂了频度统计与贝叶斯统计,或对或错,故放亮你的眼睛,呵呵。侧重于粗略的线条,具体细节未述。
主要从下面几个方面,大概的介绍相关的东东:一般认识;点估计;区间估计;模型选择;等级(层次)贝叶斯模型;MCMC。
 
1.         一般认识
贝叶斯理论的基础是什么?据传18世纪英国一个名为Bayes的家伙在摆弄条件概率公式时发现,该公式具有完美的对称性。大家还记得那个公式吗?不记得没关系,它就在下面
         P(C and D)=P(C|D)P(D)                       (1)
也可以写成
          P(C and D)=P(D|C)P(C)                      (2)
对称不?对称!把公式(1)和(2)放到一起
          P(D|C)=P(C|D)P(D)/P(C)                     (3)
把 D 想象成参数或者模型,C 想象成你所得的实验数据,发现什么了没?P(C|D)就成了似然函数,即在 D 这个模型为真或者说在 D 参数的情况下,能得到数据 C 的可能性。同样,P(D|C)就可以说成:在当前的数据条件下,得到模型为真的概率,或者说取得参数数值为 D 的概率。好了,我们现在把公式(3)抽象以下,转化为贝叶斯术语
        posterior-prior + data
        当前的实验数据(data)更新了你现有的对某方面的认识(prior),从而达到一个更高的水平(posterior);如此循环往复,不断接近事实(但你永远都不知道你是否真的就到达事实了)。
这就是基础知识,简单不?简单!
另外,贝叶斯对先验和后验都是以概率分布的形式给出。
 
2.         点估计
点估计实际上应该是频度统计里的概念,但无所谓了,知道是怎么回事就成,呵呵。等等,继续之前,我先申明一句:统计到底是干什么的?大部分的情况是从样本来对总体进行估计!因为绝大部分情况下,你是不可能得到总体的,我们所能做的,只是从总体中抽样。既然是“估计”,就存在着估计的准确性的问题,就会存在着误差。点估计是怎么回事呢?比如从样本中(实验)估计平均出平均水平:某种树木的平均高度、世界上男人的平均寿命、女人的平均寿命等等(注意了,我们不可能对所有的某种树木比如油松都进行测量,我们也不可能汇总世界上所有男人女人的年龄来计算平均寿命,我们只是在“取样”)。除了平均值,另外一个常见的点估计就是方差估计。平均值说的是平均状态,而方差表明的是与平均状态的偏离程度。
正如我们之前说到的,“估计”是存在着不确定性的,所以单纯的点估计毫无意义(“纯粹的”)。必须把与其挥之不去的不确定性给出来,这就是区间估计,下一节的内容。那么贝叶斯的点估计和频度的点估计有什么区别呢?记住一点就可以了:频度估计给出的是“最可能的值”,而贝叶斯给出的是“平均值”。为什么说频度的是“最可能的值”呢?转下节。
 
3.         区间估计
在频度统计里,有不同的方法可以得到区间估计。但意义是一样的:因为是对“总体”的估计,所以要给出一个范围,以免太绝对,太自信。在频度统计中,最基本也是最核心的就是似然函数(其实贝叶斯也是),最常用就是最大似然估计(MLE)和似然比例检验(LRT)。仔细读“最大似然估计”,看出来了没,是“最大似然”,说明是使取得当前数据的可能性最大的参数值。这也是上面我们说频度统计的点估计得到的是“最可能的值”。
贝叶斯统计同样用到似然函数,但没有MLE和LRT,贝叶斯里的似然函数的作用是抽提你的实验数据里的信息,可以说用其校正你当前对某方面的认识;这也是数据进入的唯一的途径。得到的结果是参数的一个概率分布,能从中得到平均值与区间估计。 
在无先验信息的情况下,频度与贝叶斯方法得到的点估计和区间估计在数值上没有什么本质的区别,大家都差不多。所以用谁也无所谓。有人可能要说了,我频度得到的平均值是5,贝叶斯得到的是4.5,那哪个对?都对都不对!“真值”我们永远都不知道,所以说5可以,说4.5也可以;但二者毕竟又都不是“真值”,所以又都不对。
 
4.         假说检验与模型选择
在这之前,先闲话两句我们大家熟悉的不能再熟悉的神奇的“p”值。p貌似是统计泰斗Fisher造出来的,也是随意而为之,Fisher本身可能也没想到其即兴之p却有如此大的影响力。这也反应了统计的一个无奈的地方:总得找个标准来衡量我们的实验吧。频度统计在一定程度上是在攻击“纸老虎”:先竖一个无效假说,通过实验来验证在这个无效假说的情况下能否得到当前数据(这一点肯定有异议,对此我保留意见)。但凡有处理的(比如施肥),一般都会有效果,一般都能够拒绝无效假说而接受备择假说。也就是说,频度统计的“力”不是直接作用在“处理”上,而是转了个弯,打在了这个“纸老虎”上面,通过否定“纸老虎”来肯定备择假说。
频度的假说检验就是通过p来实现的,这里用到了之前提到的LRT。详细的就不说了。(贝叶斯实质上应该说没有假说检验,有的只是模型选择)。频度的模型选择一般用的是AIC指标,而贝叶斯的是DIC(BIC)。贝叶斯另外一个选择标准是通过预测分布来实现的:结合后验分布和数据。关于模型选择,贝叶斯理论还没有一个大家都能接受的指标来衡量,不同的指标各有优缺点。换句话说,还在发展之中。
频度假说检验的不足的地方在于不好处理多于两个选择的情况下,而贝叶斯则无所谓,多少个假说,其都能给出一个概率值,而且其不限于嵌套假说。
除了模型选择之外(选择),另外一个就模型的平均化(不是非此即彼,而是大家都来,中和一下)。
 
5.         等级贝叶斯
终于说到贝叶斯方法的强项了。等级、多层次的模型是贝叶斯为我所喜爱的最大的原因(实际上,等级或者说层次模型不限于贝叶斯统计,频度统计里的等级模型的历史更加悠久,相关的文献更加丰富,比如重复测量的方差分析、时间序列分析等;只是贝叶斯的框架更加直观,更加流畅)。在同一个模型中,你可以考虑群落水平、种群水平和个体水平,这不,“层次”不就出来了吗?能包含多种不同的不确定性,能包含测量误差(这家伙非常重要,特别是在种群观察方面,比如鸟类,鱼类,你是数不明白到底有多少的),包含个体的异质性。同时,它能综合不同来源的数据。能够包容差不多一切。
等级贝叶斯的经典结构:三部曲――数据模型、过程模型与参数模型(超参数模型)。这差不多是所有贝叶斯等级模型的基础。所有这三部分都可以以概率的形式给出,即三部分都可以包含进不确定性。
举几个生态学上的应用:1) 如何估计一棵树的种子数目?难住你了吧。你总不能把所有的树都砍倒,一粒一粒的数吧。Clark(duke的环境学院的教授)结合种子雨数据与观察到的树的成熟状态可以估计; 2) 测度物种分布,记得是Gelfand(duke统计系的头头)做的;3) 种群的时间序列分析,采用state space model;4) 生态群落的高维度共存,Clark做的。
 
6.         MCMC
贝叶斯分析如何得到后验概率分布?这是最核心的内容。怎么得到?对于简单的贝叶斯分析,一般都能直接得到后验分布的(通过设置似然和先验共轭)。对于等级模型就有一些复杂。等级模型里面会涉及到很到的参数(绝大部分参数都是没有实际用处的,估计它们是为了得到你所感兴趣的参数),参数与参数之间是彼此相关的,无法直接得到某个参数的概率分布。怎么办?MCMC!马尔科夫链蒙特卡罗。参数之间彼此相关也可说成是彼此“条件”独立,这一点很重要,通过条件独立,可以为一些参数写出条件后验分布(共轭的),通过Gibbs取样得到链;对于不能写出条件后验的,就通过Metropolis-Hastings(或Metropolis,或其他的)得到链。总之,我们总是可以得到我们想要的。
 
以上大概的对贝叶斯和频度作了个比较。说了好多贝叶斯的好处,下面搜罗搜罗它的缺点:
 
1.         先验
这是贝叶斯受到诟病最多的。把主观的东西考虑进统计模型,合理吗?不合理吗?
2.         收敛性
MCMC常常要经过很长的时间很多的步骤才能收敛,如何判断收敛了是一个很大的问题。你能信任和想象比如说模拟了200万步得到的结果吗?
3.         软件
用贝叶斯的人比频度的人相对来说要少很多,所以相应的软件也比较少。BUGS系列在推广贝叶斯的使用方面功不可没。建议使用BUGS与R结合,BUGS对于构建贝叶斯模型是很方便的,而R可以很好的把你的结果呈现出来。当然了,牛人一般都是用R自己写,一个模型几百几千行。用BUGS的另外一个好处是:软件相对成熟,出错误的可能性要小一些。自己写的往往有bug存在其中(之前在一个大牛的code里就找出了一个bug)。此外,R里现在有越来越多的包都实现了贝叶斯方法,但总体感觉不太好用,做一个东西有时要找很多个不同的包。
4.         通用性
由于熟悉贝叶斯的人不多,故在写文章、作报告时需要详细的解释很多东西,比如说什么是先验,什么是后验,后验是怎么得到的,先验的分布,初始值是如何选择的,取样器是如何构建的。。。所以,你会发现,用贝叶斯写得的文章一般都比较长。没办法,因为要发表,总得让人看懂吧。而频度统计的就简单多了,你只要说我采用的是方差分析,别人就知道是怎么回事了,用不着解释。
 
最后一句,不,是两句:
1.         实用就好,不管是频度还是贝叶斯,不管是用BUGS还是自己写程序,能解决你的问题的就是好家伙;
2.         想法第一,软件第二。没有想法,把软件学得顶呱呱、呱呱叫也没有用。软件是用来解决问题的,不要本末倒置。
备注:
        非常感谢许多认识和不认识的朋友提出的很多很有建设性的建议,让我学到了很多,也再一次证实了“知识无止境”这句话。自己学到的还仅是皮毛。


http://blog.sciencenet.cn/blog-4228-229357.html

上一篇:个体异质性能否促进物种的共存?
下一篇:光竞争与物种多样性降低 (Yann Hautier)

1 xiejunbuaa

发表评论 评论 (4 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-12-5 09:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部