winbugs操作方法(已翻译)_第1页
winbugs操作方法(已翻译)_第2页
winbugs操作方法(已翻译)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、例例 (引自于w inbugs软件帮助手册中的volum i) : george et al (1993)讨论了分层模型的贝叶斯分析(bayesian analysis of hierarchical mod2els)。其中,第一层采用了共轭先验分布。该例考虑了相关的10个发电站的水泵,假设发生故障的水泵个数服从poisson分布,即xipoisson (iti) , i = 1, 2,10.其中,i表示水泵i的发生故障率, ti表示水泵运行时间的长度(单位:千小时) ,数据见下表:故障率的共轭先验分布假设为igamma (,) , i = 1, 2,10.george et al (1993

2、)对超参数 和 先验假设为 exponential (1. 0) gamma (0. 1, 1. 0)他们给出了 的后验分布,但 的标准后验分布无法给出。因而,他们使用gibbs samp ler模拟得到 的后验密度。以上表达式可用贝叶斯图建模方法表示成如下有向关系图(图1) ,在winbugs中称作doodle模型。(注意: 用alpha表示, xi用x i 表示,i用lambda i 表示,其余类似。启动w inbugs14,会出现两个窗口,关闭其中一个(l icence agreement窗口) ,你会看到如下win2bugs主窗口(图2) :窗口简单明了,w inbugs主窗口和w i

3、ndows常用窗口结构类似,关闭、最小化等基本操作相同。winbugs主窗口最上面一行为标题栏( heading line ) ,下一行是菜单栏(menuheading line )有file, tools, edit, attributes,info, model, inference, op tions, doodle,map,window, help12个菜单,最下面一行是状态栏( status line)。步骤步骤1: doodle模型的建立和检验模型的建立和检验 1 建立doodle模型在w inbugs的使用中,doodle模型非常特别,它以节点( nodes)、箭头( edges

4、)和平板( plates)等图形方式出现(对应图1:包含alpha的小椭圆形和包含t i 的小矩形都为节点;箭头分实线箭头和双线空心箭头;右侧和下侧边线较粗的大矩形称为“平板”) ,可以用图形的方式来构建模型。模型的每个节点,都含有特定的属性,如名称、类型、分布或逻辑函数的定义等( name, type, distribution, orlogical function definition)。以下我们按照图1的形状,以从上到下、从左至右的顺序,利用doodle菜单构建doodle模型。(1)打开doodle菜单,选择new (新建)命令,可以打开一个名为 “new doodle” 的对话框。

5、 键入200、150和20,作为编辑窗口的显示宽度、显示高度和节点的宽度。这三个选项控制编辑窗口和节点的大小,输入数值的大小应与模型相适合。点击ok,一个无标题名( untitled1)的doodlebugs编辑窗口就产生了。(注:可以按默认值打开,窗口大小可以按调节windows窗口的一般方法调节)。(2)在此doodlebugs编辑窗口( untitled1)中的空白处单击(左键,下同)鼠标,会自动产生一个椭圆形节点( node) (注:在此窗口中,不能按习惯任意点击,因为一点就会出现一个节点。 多余节点删除与一般删除不同,先用鼠标将需删除的节点点击选中,然后按住ctrl键不放,再按下de

6、lete键或backspace键删除) ,窗口左上方也会同时出现七个蓝色的标题,分别为name (名称) , type(类型) ,density (密度) , mean (均值) , p recision (精度) ,lower bound (下界) , upper bound (上界) ,光标在第一个名称栏( name)内闪烁,节点可以用鼠标点中后随意拖动。在名称栏( name)内,输入“alpha”(表示)作为此节点的名称。然后, name右侧的是类型栏( type) ,单击( type)不放它会自动出现下拉菜单,菜单中有三个选项:随机、逻辑和常量( stochastic,logical,

7、 and constant) ,第一项是默认值。由于alpha是随机变量,故选择默认值;再往右是密度栏( density) ,单击此栏会出现16种分布的下拉菜单栏(默认值是正态分布dnorm)。因为假设alpha服从exponential指数分布,所以选择dexp (表示exponential分布)密度。接下来,在scale框中输入数值1. 0 ( exponential ( 1. 0) )。对于下界和上界( lower bound and upper bound)栏,不用输入数值,因为不需要对此节点的数值范围加以限制。这样,就完成了对模型中参数 的节点属性定义。在窗口中的其它位置重新再点击鼠

8、标,生成一个新的节点,命名为beta (表示)。这个新的节点的颜色相比会显得“高亮”( highlighted) ,称之为选中状态。(注:节点只有处于选中状态时,才能对节点的属性进行修改和编辑) 。参照以上方法对此节点按假设条件( gamma(0. 1, 1. 0) )进行属性设置。 类型栏( type)中默认stochastic,在密度( densi2ty)类型中按要求选择dgamma分布,在形状参数框( shape)中输入0. 1,在尺度参数框( scale)中输入1. 0。 创建一个新的节点theta i , name 后输入theta i , type中默认stochastic , d

9、ensity中按要求选择dgamma分布。注意,对于此节点, shape和scale中不用输入值,因为按假设它们分别为alpha和beta(igamma ( , ) ) ,通过下面箭头关系的操作,程序会自动生成shape和scale中的值。保持节点theta i 处于选中状态,按住ctrl键不放,点击alpha节点(内部) ,这时会在两个节点之间产生一个实线箭头(表示随机节点到随机节点) ,箭头的方向从alpha 节点指向theta i 节点将父节点与子节点进行连接这时,在形状框( shape)中就会自动出现alpha。 同样操作,建立从beta节点指向theta i 节点的实线箭头,这时,在

10、尺度框( scale)中就会自动出现beta。为了以后的应用,先将怎样进行箭头移动和删除的方法进行说明,想移动箭头,不要去点击箭头,通过移动节点,箭头会随着自动调整。要想删除箭头,先选中子节点(箭头所指) ,然后按住ctrl键不放,再次点击父节点(箭尾) ,箭头删除要注意次序,否则会加上一个新箭头。按照以上方式继续进行下去,创建节点t i 。对这个节点, 选择它的类型( type ) 为常数( con2stant) ,这时,你会发现节点t i 的形状会变成矩形。 (注意:属性栏也随之发生变化) 。 接着创建并定义一个新的节点,命名为lambda i ,选择它的类型( type)为逻辑logic

11、al,在value栏中,输入逻辑表达式theta i *t i 。 按前述方法创建从父节点theta i 到子节点lambda i 的箭头,注意,这次显示的箭头与以前有区别,呈双线空心箭头,这种箭头表示随机变量到逻辑变量之间的联系,区别于两个随机变量之间联系的实线箭头。同理,也可建立从父节点t i 到子节点lambda i 的双线空心箭头。最后,根据条件xipoisson (iti) ,创建节点x i , density中选择密度为dpois (表示poisson 分布) ,创建从父节点lambda i 到它的箭头,父节点的名称lambda i会自动出现在mean栏中。(3)建立矩形“平板”(

12、p lates)。按下ctrl键不放,在doodle窗口内的空白处点击鼠标,就可创建一个矩形“平板”。用鼠标点击“平板”右侧或下侧较粗的边线,就可选中激活它,并且可以对它进行移动。 想对 “平板” 的大小进行调整,将鼠标点击 “平板” 的右下角顶点进行拖动(如同对一般窗口调整大小) 。想删除“平板”,选中(点击“平板”右侧或下侧较粗的边线) ,按住ctrl键不放,再按下delete键或backspace键删除。此例中,将创建的“平板”的大小调整到如图1所示,包含下半部分的四个节点。当一个“平板”被选中后(点击“平板”右侧或下侧较粗的边线) ,窗口的左上方会出现三个蓝色的标题:指标、起始和结束(

13、 index, from, up to) 。首先在指标文本框( index)中输入指标名称,它表示一列整数序列数值,从from中的数值到up to中的数值,在此例中, index中输入i, from中输入1, up to中输入n。这样就完成了例子的全部doodle模型的构建。这时比较明智的选择应该是把刚才辛苦的工作保存下来,在file菜单中,选择save as命令,然后在对话框中,输入便于记忆的文件名(用英文) ,winbugs会自动在文件名之后加上后缀名. odc,选择合适的目录保存,便于以后使用。 2 对doodle模型进行检验( check)构建完doodle模型后,下一步是对此模型进行

14、检验,检验winbugs对它是否识别,检验模型在程序语法上是否正确。在modle菜单中选specifi2cation命令,会出现一个标题为“specification tool”的对话窗口 (用完后不要关闭,以下步骤还需使用) 。在窗口中点击“check model”按钮,如果你建立的doodle模型正确,在w inbugs主窗口的左下角的状态栏( status line)上就会出现一条信息“model is syntactically correct”。否则,你必须对你的doodle模型的每一个节点、每一个箭头和每一块平板进行检查,耐心检查它们的名称和属性,改正错误的地方。 然后,重新对模型

15、进行检验,直到w inbugs 宣布 “model issyntacticallycorrect”。步骤步骤2:数据输入、模型编译和初始值设定数据输入、模型编译和初始值设定 1 输入数据( data loaded)模型检验合格后,需要对数据进行定义和输入。 例中的数据可以按以下方式进行定义list ( t = c ( 94. 3, 15. 7, 62. 9, 126, 5. 24,31.4, 1. 05, 1. 05, 2. 1, 10. 5) ,x = c (5, 1,5, 14, 3, 19, 1, 1, 4, 22) ,n = 10)这种数据的表示格式被称为s - plus格式。观测值t

16、和x被定义成数组(如有缺失数据,用na表示)。在file菜单中选择new命令。出现的窗口可以对文本进行编辑。将数据在英文输入状态下按以上形式分两行输入。输入完毕,检查确定无误后,选中输入内容(将光标点中以上输入内容中任意位置即可) ,然后在 “specification tool” 对话窗口中点击 “load data” 按钮。 信息 “data loaded”将会在状态栏显示。 2 对模型进行编译( comp ile)继续在“specification tool”的对话窗口中通过“comp ile”按钮完成。在对模型进行编译之前,注意在“comp ile”按钮右边上的文本框中的正整数应大于或

17、等于默认值1 (这个数字表示使用者希望同时模拟互相独立的链的个数)。 模型的编译需要运行gibbs samp ing,模型需要对数据的完整性和一致性进行检验。当模型编译成功后,信息“model comp iled”会出现在状态栏中(如果你输入数据有误,需要从模型检验( check)步骤开始重做)。 3 对模型进行初始值设定( load inits)在编译好的模型真正运行之前,还需要对模型进行初始值设定( load inits)。以下的语句可以执行这项任务。list ( alpha = 1, beta = 1 )注意,这只是模拟的初始值,并不需要一定要与我们实际期望的参数值很接近。 将这条命令继

18、续输入到数据窗口中(可换行,在刚才输入的两行数据下输入) ,选中这个语句,按“specificationtool”的对话窗口中的“load inits”按钮,状态栏中会出现信息“thisinitial value does not correspond to astochastic node”。这时,“specification tool”的对话窗口中的 “gen inits” 按钮将被激活,按下 “gen inits” 按钮,状态栏上会出现信息 “initial values generated,model initialized”。步骤步骤3:变量监控和模型迭代变量监控和模型迭代 1 对变

19、量进行监控设置(monitor)打开inference菜单,选择samp les命令。会产生一个名为“samp le monitor tool” 的对话窗口,在node框中输入alpha,然后按下 “set”;输入beta,按下 “set”;输入theta 1 ,按下“set”,再输入theta 2 ,w inbugs可以同时控制多个变量,但必须分别输入变量名和依次进行“set”操作。进行以上操作后,winbugs会在运行时,对输入的控制变量的运行过程及结果进行存储。 2 模型迭代运行( iterations, or updates)当以上步骤完成之后,就可以对模型进行迭代运行了。在model

20、菜单中选择update命令,会出现一个“update tool”的对话窗口(图8) ,输入需要迭代( iterations/updates)的次数,按“update”按钮开始执行。迭代的速度非常的快,对此模型进行10000次迭代运算,在150mhz pentium lap top的pc上需要5秒,而在a dual 200mhz pentium pro的机器上只需2秒钟。步骤步骤4:模拟结果输出和收敛性判别模拟结果输出和收敛性判别再次选中 “samp le monitor tool” 的对话窗口,在node框中,可以按需要输入你想观测的变量(节点)的名称(步骤3中已输入的控制变量) ,也可以输入万能替代符“*”来表示“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论