Как включить весовые коэффициенты в вероятность модели WinBUGS? - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу включить весовые коэффициенты в вероятность того, что модель WINBUGS сделает то, что brms делает с весовыми коэффициентами.

Обычные ошибки приближаются для достижения этой цели.для dnorm и dpois не работают для dbin.

В brms, как говорит paul.buerkner здесь , что достигается с помощью кода Stan, подобного этому:

vector[N] weights; \\ model weights 
target += weights[n] * neg_binommial_2_log_lpmf(Y[n] | mu[n], shape);

Когда я реализую этот подход в моей модели 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)

Когда я внедряю решениекак это используется в brms, я получаю ошибку:

Несовместимая копия

 BugsCmds.TextError   [000003A1H]   .beg    INTEGER 1670313368
    .end    INTEGER 44779932    .name   ARRAY 256 OF
CHAR    "C:/Users/.../AppData/Local/"   ...     .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  Fields  .vi StdInterpreter.ProcIVal Fields
    .vii    StdInterpreter.ProcIIVal    Fields
    .vr StdInterpreter.ProcRVal Fields
    .vri    StdInterpreter.ProcRIVal    Fields
    .vrii   StdInterpreter.ProcRIIVal   Fields
    .vrr    StdInterpreter.ProcRRVal    Fields
    .vrri   StdInterpreter.ProcRRIVal   Fields
    .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 OF CHAR   "BugsCmds.SetOK; BugsCmds.Clear; "  
...     .p  ARRAY 3, 120 OF CHAR    Elements    .s  BugsScanners.Scanner    Fields
    .scriptCommand  ARRAY 240 OF CHAR   "#Bugs:check"   ...
    .vectorName BOOLEAN FALSE  Services.Exec   [00000136H] 
    .a  Services.Action [02C72400H]     .t  POINTER [67400170H] 
Services.IterateOverActions   [000002F4H] 
    .p  Services.Action [02C72400H]     .t  POINTER NIL
    .time   LONGINT 36194437  Services.StdHook.Step   [0000034DH] 
    .h  Services.StdHook    [02ABE380H]   HostWindows.Idle   [00004A86H] 
    .focus  BOOLEAN FALSE   .tick   Controllers.TickMsg Fields
    .w  HostWindows.Window  NIL  HostMenus.TimerTick   [00003422H] 
    .lParam INTEGER 0   .ops    Controllers.PollOpsMsg  Fields
    .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
OF SHORTCHAR    "øëv"   ...     .w  INTEGER 1825694848  .wParam INTEGER 1
    .wnd    INTEGER 4395250 <system  (pc=7697BF1AH,  fp=0061FAB0H)
<system  (pc=769783E9H,  fp=0061FB98H) <system  (pc=76977C9DH, 
fp=0061FC14H) <system  (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...