Em inferência Bayesiana combina-se uma distribuição à priori com a verossimilhança para se obter a distribuição à posteriori que é utilizada para fazermos inferências sobre o(s) parâmetro(s) de interesse.
Na Aula 1 vimos como podemos usar as distribuições de probabilidades incluídas no programa R para calcular probabilidades, quantis, densidade e/ou obter amostras de uma certa distribuição.
Vamos ver agora como podemos fazer gráficos da função de verossimilhança.
Seja o vetor
uma amostra aleatória de uma distribuição normal de média
e variância conhecida e igual a
.
O objetivo é fazer um gráfico da função de log-verossimilhança.
Solução:
Vejamos primeiro os passos da solução analítica:
Vamos ver agora uma primeira possível forma de fazer a função de verossimilhança no R.
> x <- c(12, 15, 9, 10, 17, 12, 11, 18, 15, 13)
> sx2 <- sum(x^2) > sx <- sum(x)
mean(x)
) e portanto vamos definir tomar valores ao redor deste ponto.
> mu.vals <- seq(11, 15, l=100)
> lmu <- -5 * log(8*pi) - (sx2 - 2*mu.vals*sx + 10*(mu.vals^2))/8
> plot(mu.vals, lmu, type='l', xlab=expression(mu), ylab=expression(l(mu)))
![]() |
Entretanto podemos obter a função de verossimilhança no R de outras forma mais geral e menos trabalhosas.
Sabemos que a função dnorm
calcula a densidade da distribuição normal e
podemos usar este fato para evitar a digitação da expressão acima.
> loglik <- function(mu, dados){ sum(dnorm(dados, mean = mu, sd = 2, log = TRUE)) }
> mu.vals <- seq(11, 15, l=100) > mu.vals > lmu <- sapply(mu.vals, loglik, dados = x) > lmuNote na sintaxe acima que a função
sapply
aplica a função loglik
anteriormente definida em cada elemento do vetor mu.vals
.
> plot(mu.vals, lmu, type='l', xlab=expression(mu), ylab=expression(l(mu)))
Para encerrar este exemplo vamos apresentar uma solução ainda mais genérica que consiste em criar uma função que vamos chamar de lik.norm.v4
para cálculo da verossimilhança de distribuições normais com =4.
Esta função engloba os comandos acima e pode ser utilizada para obter o gráfico da log-verossimilhança para o parâmetro
para qualquer amostra obtida desta distribuição.
> lik.normal.v4 <- function(mu, dados){ loglik <- function(mu, dados) sum(dnorm(dados, mean = mu, sd = 2, log = TRUE)) sapply(mu, loglik, dados = dados) } > curve(lik.normal.v4(x, dados = x), 11, 15, xlab=expression(mu), ylab=expression(l(mu)))