A função de verossimilhança é central na inferência estatística. Nesta sessão vamos ver como traçar funções de verossimilhança utilizando o programa R.
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.
> logvero <- 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, logvero, dados = x) > lmuNote na sintaxe acima que a função
sapply aplica a função logvero 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 vero.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.
> vero.normal.v4 <- function(mu, dados){
logvero <- function(mu, dados)
sum(dnorm(dados, mean = mu, sd = 2, log = TRUE))
sapply(mu, logvero, dados = dados)
}
> curve(vero.normal.v4(x, dados = x), 11, 15,
xlab=expression(mu), ylab=expression(l(mu)))