Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Junho, 2012
Preliminares
O WinBugs e OpenBugs so softwares livres que permitem simular de disa tribuioes a posteriori atravs do uso de algoritmos MCMC. A linguagem c ` e utilizada similar a do R, mas o WinBugs/OpenBugs tem a seguinte estrue ` tura: Especicaao da distribuiao da varivel resposta c c a Especicaao das distribuioes a priori para os parmetros c c ` a Leitura do banco de dados Especicaao dos valores iniciais (optativo) c
Preliminares
Entre as distribuioes que esto dispon c a veis no WinBugs/OpenBugs esto as a seguintes: Distribuioes discretas univariadas c
Bernoulli Binomial Categrica o Binomial Negativa Poisson
Preliminares
Preliminares
Por exemplo, se Yi N (, ), i = 1, . . . , n, ento a especicaao do modelo a c e for(i in 1:n) { y[i] ~ dnorm(mu,tau) } IMPORTANTE: N (, ) no WinBugs/OpenBugs especica a distribuiao c Normal de mdia e preciso . A varincia dada por 2 = 1/ . Sempre e a a e bom vericar a parametrizaao utilizada pelo programa atravs do menu e c e help/distributions.
Se no modelo anterior quisermos uma covarivel xi , fazemos a i = 0 + xi 1 , Nesse caso, a especicaao do modelo c e for(i in 1:n) { mu[i]<-beta0+x[i]*beta1 y[i] ~ dnorm(mu[i],tau) } i = 1, . . . , n.
Outro exemplo: Se Yi uma varivel binria com probabilidade de sucesso e a a p, ento a especicaao do modelo a c e for(i in 1:n) { y[i] ~ dbern(p) }
Se quisermos introduzir uma covarivel xi , esta podem ser inclu atravs a da e do parmetro p usando (entre outras) uma das seguintes ligaoes: a c logito: logito(pi ) = 0 + 1 xi . probito: probito(pi ) = 0 + 1 xi . complemento log-log: cloglog(pi ) = 0 + 1 xi . Por exemplo, para o caso de usar a ligao logito, tem-se que a especicaao ca c do modelo e for(i in 1:n) { logit(p[i])<-beta0+beta1*x[i] y[i] ~ dbern(p[i]) } Similarmente, as funoes probito e complemento log-log esto implementadas c a em WinBugs, probit e cloglog respectivamente.
Um caso mais geral: Suponha que estamos trabalhando com um modelo cuja distribuiao no encontramos nas opoes oferecidas com o WinBugs/OpenBugs, c a c mas sabe-se que a contribuiao de cada indiv c duo na funao de verossimilc hana dada por log fi , em que fi o ncleo da distribuiao da varivel c e e u c a resposta. Uma forma (no a unica) de programar esse modelo no Wina e Bugs/OpenBugs a seguinte: e c<-10000 for(i in 1:n) { logvero[i]<-logfi (especificar a forma de log fi) zeros[i]<-0 aux[i]<--logvero[i]+c zeros[i] ~ dpois(aux[i]) } Neste caso, zeros e aux so vetores auxiliares. a
Por exemplo: Em anlise de sobrevivncia, suponha que observado Zi = a e e m i , Ci ) e i = I(Ti Ci ) para i = 1, . . . , n. Se assumirmos que Ti n(T Exp(), ento tem-se que a contribuiao na log-verossimilhana de cada oba c c servaao c e log fi = zi + i log , i = 1, . . . , n. Portanto, neste caso a especicaao do modelo c e c<-10000 for(i in 1:n) { logvero[i]<--z[i]*lambda+delta[i]*log(lambda) zeros[i]<-0 aux[i]<--logvero[i]+c zeros[i] ~ dpois(aux[i]) }
A especicaao das distribuioes a priori bastante simples. Basta utilizar c c ` e alguma das distribuioes dispon c veis no WinBugs/OpenBugs. Para 0 e 1 no modelo linear com covariveis, podemos usar distribuioes que assumam a c valores nos reais. Alguns exemplos: N (0, 10) beta0~dnorm(0,0.1) beta1~dnorm(0,0.1) t5 (0, 1) beta0~dt(0,1,5) beta1~dt(0,1,5) Priori Uniforme na reta. beta0~dflat() beta1~dflat() Esta ultima representa a distribuiao uniforme na reta real e s pode ser c o utilizada para parmetros que assumem valores em (, ). a
No mesmo modelo linear, e como positivo, podem ser usadas as seguintes e distribuioes a priori. c ` Gama(1,1) tau~dgamma(1,1) Log-Normal(0,1) tau~dlnorm(0,1) NT(0,1,0) (Normal Padro Truncada em zero) a tau~dnorm(0,1)I(0,) Para simular o efeito de uma distribuiao imprpria para um parmetro c o a positivo, pode ser utilizada uma distribuiao prpria com uma varincia c o a grande. Por exemplo, se Gama(0.001,0.001), ento a priori E( ) = 1 a e V ar( ) = 1000.
A leitura do banco de dados deve ser feita dentro do mesmo cdigo do Wino Bugs/OpenBugs, pois trabalhando diretamente com ele, no pode ser lido a um banco de dados desde um arquivo externo. Sero exemplicadas duas a formas de ler o banco de dados no WinBugs/OpenBugs. Uma primeira opao atravs do formato de lista. Por exemplo, no caso c e e do modelo linear com uma covarivel, os dados podem ser lidos da seguinte a forma: list(n=10,x=c(15,24,14,30,24,21,13,14,17,18), y=c(5,3,2.5,2,1.2,6.7,4,3.4,2.9,1))
Em modelos complexos, a especicao de valores iniciais pode ajudar a ca ` convergncia das cadeias. Mas, este passo totalmente optativo no programa, e e pois podem ser usados valores iniciais gerados aleatoriamente. Por exemplo, no modelo linear com uma covarivel, podem ser especicados 0 = 0, 1 = 0 a e = 1. list(beta0=0,beta1=0,tau=1)
Agora que j sabemos a estrutura para utilizar o WinBugs/OpenBugs, vea remos como ele utilizado. Tomaremos como exemplo, o modelo linear com e uma covarivel. a
Agora podemos pedir um resumo para cada parmetro da amostra simulada. a Na janela SAMPLE MONITOR TOOL clicamos em stats e aparecer uma a janela como a seguinte:
Na janela SAMPLE MONITOR TOOL, clicamos em density e sero propora cionados os grcos das densidades a posteriori marginais estimadas em base a ` as amostras simuladas. `
Na janela SAMPLE MONITOR TOOL, clicamos em history e sero propora cionados os grcos das series de valores simuladas para cada parmetro. a a
Na janela SAMPLE MONITOR TOOL, clicamos em autocor e sero propora cionados os grcos de autocorrelaoes parciais das series para cada parmetro. a c a
Dentro da mesma janela SAMPLE MONITOR TOOL, aparecem outras opoes para a nossa amostra a posteriori simulada. Algumas delas so: c ` a history: mostra a serie de todos os valores simulados para cada parmetro. a accept: mostra a serie com a probabilidade de aceptao para iteraao. ca c auto cor: faz o grco de autocorrelaao parcial da serie dos valores a c simulados para cada parmetro. Util para avaliar a dependncia em a e cada uma das series simuladas. coda: entrega os valores simulados para cada um dos parmetros em a cada iteraao. Util para utiliz-los em outros programas. c a
Algumas dicas
Quando especicar o tamanho de amostra para a simulaao, tenta aumentar c o valor da opao thin para diminuir a correlaao da amostra simulada. Por c c exemplo, thin=10 indica que por cada 10 valores simulados, s considerado oe 1 e os outros 9 so descartados. a
Algumas dicas
As vezes, alm de estar interessados em fazer inferncia sob os parmetros do e e a modelo, tambm estamos interessados em alguma combinaao dos parmetros. e c a Por exemplo, nos poderia interessar o valor esperado para um indiv duo com covarivel xi = 15. Nesse caso, E(Yi ) = 0 + 151 . Portanto, para obter vaa lores simulados da distribuio a posteriori de E(Yi ), basta com denir um ca n adicional imediatamente depois de especicar as prioris. o
Algumas dicas
Se estivermos interessados na varincia de Y em vez da preciso, tambm a a e podemos denir o n 2 = 1/ . o
No esquecer de incluir estas variveis no monitor do sample para que depois a a aparea o resumo delas, suas distribuioes, correlaoes, etc. c c c
L()
i=1 n
ezi i
i=1
Portanto, a contribuiao da i-sima observaao na verossimilhana ezi i . c e c c e Isso implica que cada observao contribui na log-verossimilhana a quantica c dade zi + i log , como mencionado anteriormente.
Referncias e