11.07.2015 Views

Tutorial WinBUGS

Tutorial WinBUGS

Tutorial WinBUGS

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introdução• Bayesian Inference Using Gibbs Sampling• BUGS• Análise de Modelos Complexos• Métodos Bayesianos• Simulação via Cadeias de Markov


O Problema Geral em Inferência Bayesiana• Dado: y Parâmetro: θ• p(θ|y) = p(y| θ) p(θ) / p(y)• p(y) = ∫ p(y, θ) dθ =∫ p(y| θ) p(θ) dθ• InteresseE [g(θ)|y] = ∫ g(θ) p(θ|y) dθθ|y


• AnalíticosMétodos Numéricosaproximação pela normalLaplaceQuadratura Gaussiana• Baseados em AmostragemMonte Carlo simplesMonte Carlo por importânciaMonte Carlo via Cadeia de MarkovAmostrador de GibbsMetropolis-HastingsGamerman & Lopes (2006)


• 1993 – Sistema DOS<strong>WinBUGS</strong>• Em torno de 2000 – Versão para Windows• Consiste de um conjunto de funções quepermite a especificação:- do modelo- das distribuições de probabilidade paratodos os seus componentes aleatórios(observações e parâmetros).• Dotado da capacidade de reconhecerformas conjugadas, log-concavidade,distribuições com amplitudes restritas, etc.


<strong>WinBUGS</strong>• Com base nesta classificação, o algoritmo deamostragem mais eficiente é selecionado para asimulação.• Se nenhuma destas propriedades é reconhecida,uma mensagem avisa a incapacidade de escolher ométodo de atualização.• Por exemplo, quando formas conjugadascondicionais são reconhecidas a amostra éeficientemente gerada das distribuiçõescondicionais completas.• método para amostragem é escolhido seguindo umahierarquia.


Características do <strong>WinBUGS</strong>• Linguagem• Similar ao S-plus• Modelagem Gráfica• Doodle BUGS (Grafos)• Permite a Análise de Modelos Complexos• Dados faltantes• Modelos Hierárquicos• Verossimilhança não precisa ter forma fechada• Simples Análise da cadeia geradaS-plusou R


<strong>WinBUGS</strong> – Arquivos e Documentação• <strong>WinBUGS</strong> pode ser obtido no endereço:• http://www.mrc-bsu.cam.ac.uk/bugs/• Registro para acesso a versão completa• Outros programas:• CODA – Convergence Diagnosis and Output Analysis• BOA – Bayesian Output Analysis• Disponíveis no mesmo endereço que o BUGS• Com manuais compreensíveis• Versões para S-plus e R


<strong>WinBUGS</strong> - Arquivos e Documentação• Manuais• <strong>WinBUGS</strong> – disponíveis no “no “help menu”.• Manual para a versão .5 – disponíveldisponível como umarquivo postscript na página do BUGS. Este é o manualcom a mais compreensiva descrição do software.• <strong>WinBUGS</strong> exemplos I, II – disponíveismenu”.disponíveis no “help• Exemplos BUGS .5 – disponíveis na página do BUGS.• Material complementar - exemplosexemplos para a versão .6do BUGS - arquivo postscript.


Exemplo – Regressão Linear Simples• Considere um conjunto de 5 pares deobservações (x, Y) :(1, 1), (2, 3), (3, 3), (4, 3), (5, 5).Ajuste um modelo de regressão linearsimples de Y sobre x,usando a notação:Y i ~ Normal(µi, τ) ; µi = α + β(xi - x.bar)τ =1/varianceAbra um novo arquivo, do “file menu”


Código BUGS – Regressão Linear Simplesmodel{- mean(x[]))}for(i in 1:N){Y[i] ~ dnorm(mu[i], tau)mu[i]


Grafo Acíclico Orientadoindex: i from: 1 up to: Nalphabetataum[i]Y[i]sigmafor(i IN 1 : N)Criar grafo : Barra Menu - Help - Doodle HelpEscrever código: Barra Menu – Doodle- construa o doodle- escolha a opção – Write Code


Exemplo: escrevendo o código BUGS do Grafo (Doodle)


Janela de TextoNote que a distribuição Normal no BUGS é definida como:N (média, precisão) onde precisão = 1/variância


Especificando o modelo1- vá para a barra deferramentas modelmenu e encontraráspecification tool2- No código de texto marque“model” clicando duas vezes.3- Clique sobre a opção checkmodelNote a mensagem no cantoinferior esquerdo da página


orCarregando os Dados1- Formato dos Dados (similar ao Splus):list(x = c(1, 2, 3, 4, 5), Y = c(1, 3,3, 3, 5), N = 5)list( N=5)x[] Y[]1 12 33 34 35 5Note a mensagem no canto inferioresquerdo da página2- marque “list” (duplo3-PressioneLoad dataduplo clique)


Compilando o programa• Escolha o número de cadeias• Pressione compile• constrói as condicionaiscompletas e escolhe ométodo mais adequado degeraçãoNote a mensagem no canto inferioresquerdo da página


Carregando Valores Iniciais•Automaticamente:• Gen inits•Manualmente:• list(alpha = 0, beta = 0, tau = 1)• Marque “list” (duploclique)• Load initsNote a mensagem no canto inferioresquerdo da página


Atualizando o Modelo• Barra Menu - Model - Update• Gerar 1000 iterações da cadeia


Burn In: Aquecimento• Iterações descartadas:eliminar efeito de valores iniciais;fase transiente.• Rodadas de MCMC armazenadas apósos parâmetros de interesse teremsido monitorados.• Valores armazenados são utilizadospara inferência:• Desenho das distribuições;• Medidas resumos.


Monitorando Nós (Parâmetros)• Monitore os parâmetros (nós) de interesse• Barra Menu - Inference - Samples...


Monitorando Nós• Digite o nome do nó “alpha” (ou“beta” ou“tau”) para monitorar• Pressione “setset”


Atualize & Monitore• Update model novamente• 1000 valores rodados de MCMC para “alpha”.


Estatísticas Resumos• Estatísticas resumos• Selecione “alpha” de Sample Monitor Tool• Pressione “stats” (Sample Monitor Tool)• Janela Node statistics


Estatísticas Resumos• Média = 2.97• Mediana = 2.994• Intervalo de Credibilidade de 95% (1.926, 3.97)• Cadeia rodada de tamanho 1000


Série Temporal• Pressione “history” em Sample Monitor Tool


Kernel Density• Pressione “density” em Sample Monitor Tool


Reduzindo Variância• Gere mais 20000 amostras


SínteseCheckModelLoadDataCompileModelInitialValuesUpdateSamplerChecksSyntaxChecksfor errorsStartSampler


2 – Censura e truncamento• Censura é denotada usando a notação I(lower, upper),por exemplo,x ~ ddist(theta)I(lower, upper)É importante notar que esta construção NÃO corresponde adistribuição truncada.3 – Nós Lógicos• Nós lógicos são representados pelo nome do nóseguido por uma seta apontando para esquerda eseguida por uma expressão lógica de seus nósparentes, por exemplo,mu[i]


• Expressões lógicas podem ser construídas usandoos operadores: adição, multiplicação, subtração,divisão.• Existe uma tabela de possíveis funções (vermanual on line):sin, cos , mean, logit, sqrt,…• Uma função de ligação pode também serespecificada, por exemplo,logit(mu[i])


4 - Matrizes e indíces• n:m representa n, n+1 ,..., m .• x[] representa todos os valores do vetorx.• y[,3] indica todos os valores da 3a. colunada matriz y.• Matrizes multidimensionais: sãomanuseadas como matrizesunidimensionais.Exemplo: sum(i,1:4,k).


4 – Transformações nos Dados• Embora transformações nos dados podem sempre serfeitas antes de usar o <strong>WinBUGS</strong>, é conveniente sercapaz de tentar transformações nas variáveisdependentes no ajuste de um modelo.• Por exemplo, pode-se tentar y e sqrt(y) como variáveisdependentes sem criar uma separada variável z =sqrt(y) no conjunto de dados.• A linguagem BUGS permite o seguinte tipo deestrutura:for (i in 1:N){z[i]


5 – Formatando os Dadoslist(xbar = 22, N = 30, T = 5,x = c(8.0, 15.0, 22.0, 29.0, 36.0),Y = structure(.Data =c(151, 199, 246, 283, 320,..........)145, 199, 249, 293, 354,137, 180, 219, 258, 291,153, 200, 244, 286, 324),.Dim = c(30,5) )


Melhorando ConvergênciaA convergência é melhorada reduzindo asautocorrelações entre as amostras nas simulações deMonte Carlo via Cadeia de Markov.Considere o exemplo modelo de regressão linear:(1) Y[i]~N(mu[]~N(mu[i],tau);],tau); mu=beta[1]+beta[2]*x[i]; ];beta[1]~N(0,1.0E-6); beta[2]~N(0,1.0E-6);tau~Ga(1E-3,1.0E-3)3)• Um útil modo de melhorar convergência é centrar x:(2) Y[i]~N(]~N(mu,tau); mu=beta[1]+beta[2]*(x[i]-mean(x[ mean(x[ ])• Outro modo é especificar uma estrutura dedependência entre beta[1] e beta[2]:(3)beta[1:2]~MVN(mu.beta[1:2],omega[ 1:2,1:2])MVN é normal multivariada com média (mu[1],mu[2])’ e matrizde variância e covariância omega[ , ].


model{Código BUGS para o modelo 3for(i in 1:N){Y[i] ~ dnorm(mu[i], tau)mu[i]


Resultados após 1000 amostras ( 1000 de burn in)Modelo 3Modelo 1


Melhorando convergência - conclusão• Erro de Monte Carlo para o modelo 3 (1000amostras):• 0.04664 – beta[1] ; 0.01294 – beta[2]• Erro de Monte Carlo para o modelo 1 (1000amostras):• 0.2226 – beta[1]; 0.06502 – beta[2]Modelo 3 é quase 5 vezes maiseficiente !


Síntese• BUGS é uma poderosa ferramenta• Análise Bayesiana• Ferramenta de Simulação• Modelos Gráficos (GrafosGrafos)• Doodle BUGS• Representação simples do modelo• Fácil de usar!


Vamos ao <strong>WinBUGS</strong>Exemplos:1. Line: Linear Regression2. Rats: a normal hierarchical modelObs: atenção para valores iniciaisdiferentes quando mais de uma cadeiaestão sendo rodadas

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!