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)))