1楼:趾高气扬
语法及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
如何使用winbugs做贝叶斯统计
2楼:苍茫中的尘埃
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 前面较不稳定的资料。
对于winbugs的结果怎么进一步**
3楼:匿名用户
从图中neural***work可以看出,你的网络结构是两个隐含层,2-3-1-1结构的网络,算法是traindm,显示出来的误差变化为均方误差值mse。经过482次迭代循环完成训练,耗时5秒。相同计算精度的话,训练次数越少,耗时越短,网络结构越优秀。
达到设定的网络精度0.001的时候,误差下降梯度为0.0046,远大于默认的1e-5,说明此时的网络误差仍在快速下降,所以可以把训练精度目标再提高一些,比如设为0.
0001或者1e-5。
用matlab怎么对矩阵求导,Matlab中如何求导?
1楼 匿名用户 本来就可以对矩阵求导。例如 syms x a sin x 2 x log x x 2 diff a matlab中如何求导? 2楼 张宇 操作方法如下 1 打开matlab软件 2 输入指令clear clc 清空工作空间 3 输入指令sy x定义一个符号 变量,如图所示 4 输入指...
求助:Winbugs编程中,如何表示逆伽马分布?例如,t I
1楼 匿名用户 winbugs中没有直接生成逆伽马分布的函数,需要利用伽马分布和逆伽马分布的关系,若x gamma alpha beta ,则1 x inverse gamma alpha beta 。 t ig 0 001 1000 转换成 tt dgamma 1 0e 3 1 0e3 t 1 t...
如何用matlab传递函数离散化
1楼 匿名用户 把传递函数离散化 dsys c2d sys ts method 传函离散 num den tfdata dsys v 离散后提取分子分母 这里面的method有好多种 zoh 零阶保持, 假设控制输入在采样周期内为常值,为默认值。 foh 一阶保持器,假设控制输入在采样周期内为线性。...