LAAN
El objetivo de esta presentación es definir funciones de máxima verosimilitud de diferentes distribuciones:
Para cada distribución, se simularán en primera instancia 1000 observaciones de la distribución; después, se definirá la función de verosimilitud apropiada y finalmente se estimará la función de verosimilitud usando la función mle() de la libreria stats4
Simulamos 1000 valores de una distribución normal, con media 1 y desviación estándar 3:
x = rnorm(1000,1,3)
La distribución normal depende de dos parámetros poblacionales \( \mu \), \( \sigma^2 \).
lnormal = function(media, desvest){
s = dnorm(x,media, desvest)
-sum(log(s))
}
library(stats4)
mle(lnormal, start = list(media = 4, desvest = 5))
Call:
mle(minuslogl = lnormal, start = list(media = 4, desvest = 5))
Coefficients:
media desvest
1.121095 3.096180
Simulamos 1000 observaciones tomadas de una distribución exponencial com \( tasa = 5 \):
x = rexp(1000,5)
Nótese que \( tasa = 1/\beta \).
lexpo = function(tasa){
s = dexp(x,tasa)
-sum(log(s))
}
library(stats4)
mle(lexpo, start = list(tasa = 10))
Call:
mle(minuslogl = lexpo, start = list(tasa = 10))
Coefficients:
tasa
5.226148
Simulamos 1000 observaciones de una distribución gamma con \( \alpha=3.8 \), \( \beta = 4.5 \):
x = rgamma(1000,3.8,4.5)
lgamma = function(a,b){
s = dgamma(x,a,b)
-sum(log(s))
}
library(stats4)
mle(lgamma, start = list(a = 1, b = 2))
Call:
mle(minuslogl = lgamma, start = list(a = 1, b = 2))
Coefficients:
a b
3.838453 4.594182
Simulamos 1000 observaciones de una distribución \( \chi^2 \) con 10 grados de libertad:
x = rchisq(1000,10)
lchi = function(gl){
r = dchisq(x,gl)
-sum(log(r))
}
library(stats4)
mle(lchi, start = list(gl = 1))
Call:
mle(minuslogl = lchi, start = list(gl = 1))
Coefficients:
gl
9.862445
Generamos 1000 observaciones tomadas de una distribución binomial con \( n=100 \) y \( p=.3 \):
x = rbinom(1000,100,.3)
lbinom = function(proba){
r = dbinom(x,100,proba)
-sum(log(r))
}
library(stats4)
mle(lbinom, start = list(proba = .91))
Call:
mle(minuslogl = lbinom, start = list(proba = 0.91))
Coefficients:
proba
0.3004495
Simulamos 1000 observaciones con \( p=.25 \):
x = rgeom(1000,.25)
lgeom = function(proba){
r = dgeom(x,proba)
-sum(log(r))
}
library(stats4)
mle(lgeom, start = list(proba=.98))
Call:
mle(minuslogl = lgeom, start = list(proba = 0.98))
Coefficients:
proba
0.2543081
Simulamos 1000 observaciones con \( \lambda = 6 \)
x = rpois(1000,6)
lpois = function(lambda){
r = dpois(x,lambda)
-sum(log(r))
}
library(stats4)
mle(lpois, start = list(lambda=1))
Call:
mle(minuslogl = lpois, start = list(lambda = 1))
Coefficients:
lambda
6.04