Проверка гипотез с использованием Winbugs - PullRequest
0 голосов
/ 14 февраля 2019

Из " Книга ошибок: практическое введение в байесовский анализ " Я нашел простой пример, который, возможно, знают все вы;«предвзятая монета» (стр. 95):

r <- 15; n <- 20        # data
r        ~ dbin (p,n)   # likelihood
p        <- theta[pick]
pick     ~ dcat(q[])    # 2 if biased, 1 otherwise
q[1]     <- 0.9         # prior probability of coin unbiased
q[2]     <- 0.1         # prior probability of coin biased
theta[1] <- 0.5         # effect when unbiased
theta[2] ~ dunif(0,1)   # effect when biased
biased   <- pick-1

Мне трудно применить это к моему собственному примеру.В моем случае « вероятность успеха » является переменной отклика, которая условно зависит от разных ковариат (которые в свою очередь условно зависят от других).Здесь вы можете увидеть графическую структуру: байесовская графическая сеть . Моя цель - проверить следующую гипотезу :

P (Успех | X1 = 1, X2 = 0)> P (Успех | X1 = 0, X2 = 1) илиH1 более вероятно, чем H2

X1 и X2 - два ковариатических пути вверх в графической структуре.На старте они одинаково вероятны: априорные вероятности p (H1) и p (H2) = 0,5 или

q[1] and q[2] = 0.5

Теперь моя проблема. Я не уверен, как реализовать предложенный метод из книги.Как мне реализовать тэту, эффект H1 и H2 на Success , в моем случае (см. Код ниже)?И как я могу использовать опцию theta [pick] , чтобы изменить значение p для H1 и H2 (в моем случае, p = z [i] (логистическая регрессия ковариат).

Или это не способ сделать это?Должен ли я просто посчитать, сколько раз P (Успех | X1 = 1, X2 = 0) и P (Успех | X1 = 0, X2 = 1) произойдет (таблица непредвиденных обстоятельств)?


model <- function(){ 
  # likelihoods
  for (i in 1:Nr){ 
    Success[i] ~ dbern(z[i])
    logit(z[i]) <- alpha[1] + alpha[2]*RT[i] + alpha[3]*Zaltrap[i]+ alpha[4]*stadium[i]

    stadium[i] ~ dgamma(gamma1[i],0.5)
    gamma1[i] <- beta1[1]+ beta1[2]*WHO[i] + beta1[3]*totaltum[i] + beta1[4]*N[i] + beta1[5]*T[i]                         # Latent variable

    Zaltrap[i] ~ dbern(gamma2[i])
    logit(gamma2[i])<- beta2[1]+ beta2[2]*beta2[3][i] + beta2[3]*Folfox[i]

    Folfiri[i] ~ dbern(tau1[i])
    logit(tau1[i]) <- delta1[1]+ delta1[2]*XX[i] + delta1[3]*BC[i] + delta1[4]*Erbitux[i] + delta1[5]*Vectibix[i]       # Latent variable 

    Folfox[i] ~ dbern(tau2[i])
    logit(tau2[i]) <- delta2[1]+ delta2[2]*XA[i] + delta2[3]*BC[i] + delta2[4]*Erbitux[i] + delta2[5]*Vectibix[i]       # Latent variable
  }
  # priors
  for (i in 1:4) { alpha[i] ~dnorm(0.001,0.0001)}
  for (i in 1:5) { beta1[i] ~dgamma(1,5)}
  for (i in 1:3) { beta2[i] ~dnorm(0.001,0.0001)}
  for (i in 1:5) { delta1[i] ~dgamma(1,5)}
  for (i in 1:5) { delta2[i] ~dgamma(1,5)}
}
...