Kra*_*ntz 9 r bayesian winbugs rstan
我想将权重结合到WINBUGS模型brms用权重做的可能性中.
通常的BUGS方法来实现这一目标dnorm并且dpois不起作用dbin.
正如@ paul.buerkner 在这里所说的那样,这是用这样的Stan代码完成的:
vector[N] weights; \\ model weights
target += weights[n] * neg_binommial_2_log_lpmf(Y[n] | mu[n], shape);
Run Code Online (Sandbox Code Playgroud)
当我在我的BUGS模型中实现这种方法时,我得到下面的详细错误(参见编辑).
以下是数据和模型:
library(R2WinBUGS)
dat <- data.frame(
A = c(1, 1, 0, 0), B = c(1, 0, 1, 0),
Pass = c(278, 100, 153, 79), Fail = c(743, 581, 1232, 1731), Weights= c(3, 1, 12, 3))
N <- length(dat$Pass)
case <- dat$Pass
nn <- dat$Fail+dat$Pass
A <- dat$A
B <- dat$B
data <- list (N = N, case = case, A = A, B = B, nn = nn)
weights <- dat$Weights
data.weighted <- list (N = N, case = case, A = A, B = B, nn = nn, weights = weights)
model {
for (i in 1:N){
pp[i] <- exp(a0) * (1 + a1*A[i] + a2*B[i] + a3*A[i]*B[i])
case[i] ~ dbin(pp[i], nn[i])}
a0 ~ dnorm(0, 5)
a1 ~ dnorm(0, 5)
a2 ~ dnorm(0, 5)
a3 ~ dnorm(0, 5)
ones <- 1
ones ~ dbern(C1)
C1 <- step(0 - a0)*step(1 + a1)*step(exp(- a0) - 1 - a1)*step(1 - a2)*
step(exp(-a0) -1 - a2)*step(1 + a1 + a2 + a3)*step(exp(- a0) - 1 - a1 - a2 - a3)}
inits <- function(){list(a0=-4,a1=0,a2=0, a3=0)}
sim1 <- bugs(data, inits=inits, model.file = "C:/.../bug/regi1.bug",
parameters = c("a0", "a1", "a2", "a3"),
n.chains = 4, n.burnin = 500000, n.iter = 1000000,
bugs.directory = "C:/.../winbugs14_unrestricted/WinBUGS14", debug=FALSE)
print(sim1)
Run Code Online (Sandbox Code Playgroud)
预先感谢您的任何帮助.
编辑:当我实现像brms中使用的解决方案时,我收到错误:
不兼容的副本
BugsCmds.TextError [000003A1H] .beg INTEGER 1670313368 .END INTEGER 44779932.名称ARRAY 256煤焦"C:/用户/.../应用程序数据/本地/" ... .POS INTEGER 144的.text TextModels.Model [02AB7940H] .v Views.View [02AB8C80H]
BugsCmds.Parse [00000470H] .name ARRAY 256 OF CHAR"C:/ Users /.../ AppData/Local /"... .s BugsScanners.Scanner Fields StdInterpreter.CallProc [0000047AH] .a BOOLEAN FALSE .b BOOLEAN FALSE .c BOOLEAN FALSE .i Meta.Item Fields.imported ARRAY 256 OF CHAR""... .importing ARRAY 256 OF CHAR""... .mn Meta.Name"BugsCmds".mod StdInterpreter.Ident"BugsCmds".object ARRAY 256 OF CHAR""
... .ok BOOLEAN TRUE .parType INTEGER 3 .pn Meta.Name"Parse".proc StdInterpreter.Ident"Parse"... .res INTEGER 0 .v StdInterpreter.ProcVal场.vi的StdInterpreter.ProcIVal场.vii StdInterpreter.ProcIIVal场.vr StdInterpreter.ProcRVal场.vri StdInterpreter.ProcRIVal场.vrii StdInterpreter.ProcRIIVal场.vrr StdInterpreter.ProcRRVal场.vrri StdInterpreter.ProcRRIVal˚F ields .vrrii StdInterpreter.ProcRRIIVal Fields .vrs StdInterpreter.ProcRSVal Fields .vrsi StdInterpreter.ProcRSIVal Fields .vrsii StdInterpreter.ProcRSIIVal Fields .vs StdInterpreter.ProcSVal Fields .vsi StdInterpreter.ProcSIVal Fields .vsii StdInterpreter.ProcSIIVal Fields .vsr StdInterpreter.ProcSRVal Fields. vsri StdInterpreter.ProcSRIVal Fields .vsrii StdInterpreter.ProcSRIIVal Fields .vss StdInterpreter.ProcSSVal Fields .vssi StdInterpreter.ProcSSIVal Fields .vssii StdInterpreter.ProcSSIIVal Fields StdInterpreter.Command
[0000131CH] .left StdInterpreter.Ident"BugsCmds".ptype INTEGER 3 .right StdInterpreter .Ident"Parse"...... StdInterpreter.CallHook.Call [00001441H] .ch CHAR 0X .e ARRAY 64 OF CHAR""...... .errorMsg ARRAY 1 OF CHAR"".f ARRAY 64 OF CHAR""...... .g ARRAY 64 OF CHAR""...... .hook StdInterpreter.CallHook [02B00050H] .i INTEGER 83 .i0 INTEGER 0 .i1 INTEGER 0 .id StdInterpreter.Ident"Parse"... .par0 Dialog.String"". .. .par1 Views.Title""...... .proc ARRAY 240 OF CHAR" BugsCmds.Parse('C:/ Users/..."... .res INTEGER 0 .s0 Dialog.String"C:/ Users /.../ AppData/Local /"... .s1 Dialog.String" "... .type INTEGER 3 .x INTEGER 0 Dialog.Call [00002FC8H] .errorMsg ARRAY 1 OF CHAR"".proc ARRAY 240 OF CHAR"BugsCmds.Parse('C:/ Users/..."... .res INTEGER 0 BugsScript.Call [00000130H] .bugsCommands ARRAY 240 OF CHAR"BugsCmds.SetOK; BugsCmds.Clear; "...... .i INTEGER 114 .item Meta.Item Fields .j INTEGER 82 .ok BOOLEAN FALSE .par Dialog.Par Fields .pos INTEGER -1 .res INTEGER 0 .s ARRAY 240 OF CHAR"BugsCmds.Parse('C :/ Users/..."... .scriptCommand ARRAY 240 OF CHAR"#Bugs:check"... .start INTEGER 77 .v BugsScript.RECORD Fields BugsScript.Action.Do [0000062FH] .a BugsScript.Action [ 02C72400H] .argNum INTEGER 0 .bugsCommands ARRAY 240的CHAR "BugsCmds.SetOK; BugsCmds.Clear;"
...的.p ARRAY 3,120 CHAR元素.S BugsScanners.Scanner字段.scriptCommand阵列240 CHAR"#Bugs作者:检查" ...... .vectorName布尔值false Services.Exec [00000136H] .A Services.Action [02C72400H] .T指针[67400170H] Services.IterateOverActions [000002F4H] .P Services.Action [02C72400H] .T指针NIL.时间LONGINT 36194437 Services.StdHook.Step [0000034DH] .H Services.StdHook [02ABE380H] HostWindows.Idle [00004A86H] .focus BOOLEAN FALSE .tick Controllers.TickMsg字段.W HostWindows.Window NIL HostMenus.TimerTick [00003422H] .lParam INTEGER 0.运营公司 ntrollers.PollOpsMsg字段.wParam INTEGER 1 .wnd INTEGER 4395250 Kernel.Try [00003A61H] .a INTEGER 4395250 .b INTEGER 1 .c INTEGER 0 .h PROCEDURE HostMenus.TimerTick HostMenus.ApplWinHandler
[00003841H] .Proc PROCEDURE NIL .hit BOOLEAN FALSE .lParam INTEGER 0 .message INTEGER 275个.RES INTEGER 0 .S ARRAY 256的SHORTCHAR "OEV" ...... .W INTEGER 1825694848 .wParam INTEGER 1 .wnd INTEGER 4395250(PC = 7697BF1AH,FP = 0061FAB0H)(PC = 769783E9H, FP = 0061FB98H)(PC = 76977C9DH,FP = 0061FC14H)(PC = 7696CDCFH,FP = 0061FC1CH)HostMenus.Loop [00003BDEH] .done BOOLEAN FALSE .F SET {0..5} .N INTEGER 0 .RES INTEGER 0. w HostWindows.Window NIL Kernel.Start [00002B8CH] .code PROCEDURE HostMenus.Loop