Из " Книга ошибок: практическое введение в байесовский анализ " Я нашел простой пример, который, возможно, знают все вы;«предвзятая монета» (стр. 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)}
}