如何在R中调用winbugs,请教R中运行WINbugs问题

2021-01-05 07:02:08 字数 7367 阅读 6511

1楼:匿名用户

以下例子有如何用r调用winbugs,如果是openbugs需要加载另外一个包

> # r code with inte***ce to winbugs

>> library(r2winbugs)

> y<-read.table("d:/bugs/jump.dat",header=true) #import data#

> n<-length(y)

> xi0<-rep(0,n) # give initial values to state variables#

> j0<-rep(0,n)

> data<-list("n","y")

> # give initial values to the parameters for winbugs #

> inits <-function()

> parameters<- c("sigma","jsigma","mu","jmu","lamda","xi","j")

> # quote the winbugs#

> jump.sim<-bugs (data, inits=inits, parameters, "model.bug", n.

chains=3, n.iter=1000,debug=true,

+ dic=true,bugs.directory = "d:/program files/winbugs14/",working.

directory = "d:/bugs")

错误于is.finite(x) : 没有为'list'类型实现默认的方法

请教r中运行winbugs问题

2楼:匿名用户

语法及prior distributions有错的地方, 都已帮你更正. a2=0,表示有误,请自行更改. 运行结果如下:

inference for bugs model at "rabbit.bug", fit using winbugs, 1 chains, each with 13000 iterations (first 3000 discarded) n.sims = 10000 iterations saved mean sd 2.

5% 25% 50% 75% 97.5% a 1.001 0.

001 1.000 1.000 1.

000 1.001 1.002 b 4.

979 0.021 4.924 4.

971 4.985 4.994 5.

000 p 4.976 0.025 4.

911 4.966 4.983 4.

993 4.999 q 3.002 0.

002 3.000 3.001 3.

002 3.003 3.008 k 1.

002 0.002 1.000 1.

001 1.001 1.003 1.

007 logl -1876.811 2.236 -1882.

000 -1878.000 -1876.000 -1875.

000 -1873.000 a2 0.000 0.

000 0.000 0.000 0.

000 0.000 0.000 deviance 5227.

280 4.458 5221.000 5224.

000 5227.000 5230.000 5238.

000 dic info (using the rule, pd = dbar-dhat) pd = 0.0 and dic = 5227.3 dic is an estimate of expected predictive error (lower deviance is better).

ps: prior distributions dunif() 的范围请自行更改决定 以上仅供参考 rabbit.bug

r软件中调用 winbugs总是出现错误 求助

3楼:匿名用户

语法及prior distributions有错的地方,

都已帮你更正.

a2=0,表示有误,请自行更改.

运行结果如下:

inference for bugs model at "rabbit.bug", fit using winbugs,

1 chains, each with 13000 iterations (first 3000 discarded)

n.sims = 10000 iterations saved

mean sd 2.5% 25% 50% 75% 97.5%

a 1.001 0.001 1.000 1.000 1.000 1.001 1.002

b 4.979 0.021 4.924 4.971 4.985 4.994 5.000

p 4.976 0.025 4.911 4.966 4.983 4.993 4.999

q 3.002 0.002 3.000 3.001 3.002 3.003 3.008

k 1.002 0.002 1.000 1.001 1.001 1.003 1.007

logl -1876.811 2.236 -1882.000 -1878.000 -1876.000 -1875.000 -1873.000

a2 0.000 0.000 0.000 0.000 0.000 0.000 0.000

deviance 5227.280 4.458 5221.000 5224.000 5227.000 5230.000 5238.000

dic info (using the rule, pd = dbar-dhat)

pd = 0.0 and dic = 5227.3

dic is an estimate of expected predictive error (lower deviance is better).

ps:prior distributions dunif()

的范围请自行更改决定

以上仅供参考

rabbit.bug

如何在js中调用class的方法调用

4楼:育知同创教育

function fun()

//那么类版中其他函数都可以权直接通过func1()的形式调用//如果函数是共有的,即用this定义,如下this.func2 = function()/*则需要得到func对像的引用,即fun中的this(注意:是fun中的).

然而到了调用者函数(如下的caller)内部时,this指的是caller函数而不再是fun,所以可以考虑在fun中定义一个私有变量 var _this = this 来保证指向的是fun

*///例子:在this.caller中调用类中的其他函数this.caller = function()}

如何使用winbugs做贝叶斯统计

5楼:苍茫中的尘埃

1. 点选 图示,进入winbugs,开启 (1)新的程式编辑视窗or (2)已存在的程式功能表列:file-new 功能表列:file-open

2. 撰写程式:程式包含三部份.

(1) model:建构贝氏统计模式,设定各参数的prior distribution及各参数间的关系等.

(2) data:以list指令起始,列出各参数的样本观察值及样本个数(n= ).

(3) initial value:同样运用list指令,列出各参数的起始值.

ps:上述三大部份的程式撰写顺序并不会影响程式执行结果

例:seeds: random effects logistic regression (下图为winbugs examples中seeds的例子)

model:

ri ~ binomial(pi, ni)

logit(pi) = α0 + α1x1i + α2x2i + α12x1ix2i + bi

bi ~ normal(0, τ)

在功能表列选取file → save as 即可将程式储存於指定的档案夹内

这是状态列

initial value

data

bayesian model

prior distribution的设定

3. 执行程式

step 1 在功能表列中点选:model → specification,开启specification tool 视窗

step 2 check model:

选取model程式中的关键字"model ",按下specification tool视窗的check model

键,若此部份程式的语法及定义无误,则:

(1) specification tool 视窗的 ***pile 及 load data 键将会浮现,即可供执行

点选;(2) winbugs左下角的状态列将会显示'model is syntactically correct'

step 3 load data:

选取data程式中的关键字" list ",按下specification tool视窗的 load data 键

若资料型式无误,则winbugs左下角的状态列将会显示' data loaded '

可选择一次simulate数个chains

step 4 ***pile model:

直接按下specification tool视窗的 ***pile 键,若程式无误,则winbugs左

下角的状态列将会显示' model ***piled '

step 5 load initial values:

选取initial value程式中的关键字" list ",按下 load inits 键,若winbugs

左下角的状态列显示:

(1) ' initial values loaded: model initialized ' 表示资料型式无误,接续step6.

(2) ' initial values loaded: model contains uninitialized nodes ' 若程式没有缺

漏,会出现这样的讯息,则有两种可能:

(ⅰ) 当只simulate一个chain时,出现上述的讯息表示程式中尚有一些参数

还未定义起始值,会发生这样的状况,有时是因为未提供起始值之参数

(如seeds例子中的:sigma) 与其他参数间 (如:tau) 具有函数对应关

系,(如:sigma <- 1 / sqrt(tau));在此情况下,须再按下 gen inits 键,

让winbugs依参数间的对应关系,自动为剩馀未定义起始值的参数生

成一个起始值,执行後,winbugs左下角的状态列将会显示' initial

values generated: model initialized '.

(ⅱ) 当simulate 两个以上的chains时,这个讯息代表至少有一个chains 的

参数尚未定义起始值;同样地,亦可按下 gen inits 键,自动生成起

始值,或者回到程式,自行定义起始值.

step 6 关闭specification tool视窗

4. monitor 感兴趣的参数

step 1 在功能表列中点选:inference → samples,开启sample monitor tool 视窗

step 2 在node方块中输入想要monitor的参数,如:在seeds范例中,欲generate posterior

samples的参数为:alpha0,alpha1,alpha2,alpha12,tau,sigma,此步骤便是

在node方块中输入这些参数名称,每输入一个参数名称,便按一次 set 键,

待完全键入後,关闭此视窗.

ps:由於此步骤之作用仅在monitor参数,视窗中之beg,end,thin或chains皆

不会有任何作用,亦即更改其中的数值皆不会对output有任何影响,在此先

省略不谈,之後在simulated value时将会对这些指令之功用提出简略的说明.

……5. update the model

step 1 在功能表列中点选:model → update,开启update tool 视窗

step 2 在update方块中键入想要generate posterior samples的样本数,如:3000笔,按

下 update 键,则iteration将由0 run 至3000,winbugs左下角的状态列将会

显示generate posterior samples所需的时间,如:' updates took 1 s ',执行完後

关闭update tool 视窗. refresh=100 表示在iteration方块中,将会以100为单位,显示正在update

的进度,refresh值愈小,将愈加重其显示的量,则update速度会变慢.

若thin方块中之数值改为5,表示每隔5笔收一笔资料,共收3000笔,以整

个markov chain来看,winbugs会保留的样本是第5, 10, 15,…, 15000笔资料

6. 显示simulated values (posterior samples)

step 1 在功能表列中点选:inference → samples,开启sample monitor tool 视窗

step 2 sample monitor tool视窗内各个选项的执行程序与作用:

(1) 由於之前曾在此视窗中monitor各个参数,因而现在若欲同时显现所有

monitor 参数的结果,则可在node 方块中键入'*',以代表全体参数;

若仅需部分参数的posterior samples及其统计推论结果,则在node方块中输

入该参数名即可.

(2) burn in:为降低起始值的影响,选取递回後较稳定的资料,因此在分析时

常常需要burn in 前面较不稳定的资料。

在教学中如何运用感知觉的规律,如何在教学中运用感知觉的规律以及如何

1楼 匿名用户 数学是研究客观事物的空间形式与数量关系的科学。它不受任何时间和空间的限制,强烈地显现这一本质属性。然而,在古代各个时期不同的文化传统中,数学的表现形式往往也不尽相同,各自呈现出自己的特征。 比如中国古典数学在表现形式 思维模式 与社会实际的关系 研究的中心以及发展的历程等许多方面与其...

在自然教学中如何运用“做中学”科学教育理论

1楼 中国科普 做中学 科学教育改革计划,是中国教育部与法国科学院合作开展的,是在借鉴法国 动手做 科学教育成功经验的基础上制定的。 做中学 科学教育就是让所有学前和小学阶段的儿童有机会以符合其年龄特点,符合其认知需要,符合科学 规律的方式,亲历 自然的过程。在观察 提问 设想 动手实验 表达 交流...

如何在教育中使用3d打印技术解决问题的方法

1楼 匿名用户 1 工程设计系的学生可以用它打印出自己设计的原型产品。 2 建筑系的学生可以用它方便的打印出自己设计的建筑实体模型。 3 历史系的学生可以用它来复制有考古意义的物品,方便进一步的观察。 4 平面设计系的学生可以用它来制作3d版本的艺术品。 5 地理系的学生可以用它来绘制真实的地势图,...