Se hará uso de la función exponencial: \[f(x) = \lambda e^{- \lambda x}\]

con la siguiente función de verosimilitud: \[Log(L(P)) = log(\lambda ) * n - \lambda \sum_{i = 1}^{n}x\]

Paso 1: Generar los datos

library(pacman)
## Warning: package 'pacman' was built under R version 4.2.2
p_load(data.table, fixest, lattice, magrittr, ggplot2, kableExtra,dplyr)
N = 500      #tamaño muestra
lambda = 5   #dato a obtener aprox

distribucion = rexp(N, lambda)
datos = data.frame(distribucion)

Paso 2: Derivar la función de verosimilitud

logLikeExp = function(l, x, n){
  return (-(log(l)*n-l*sum(x)))}

x = seq(0, 50)
y = logLikeExp(x, datos, 500)

plot(x, y, type = "o", main = "Función de verosimilitud", ylab = "Log likehood lambda", xlab = "Lambda")

Paso 3: Estimación por máxima verosimilitud

MLE_estimates <- optim(fn= logLikeExp,                
                       par=c(1),                      # Estimación inicial
                       lower = c(-Inf, -Inf),         # Límite inferior de los parámetros
                       upper = c(Inf,Inf),            # Límite superior de los parámetros
                       hessian=TRUE,                  # Devuelve el Hessiano 
                       method = "L-BFGS-B",
                       n = 500,
                       x = distribucion)

# Examinar estimaciones
MLE_par <- MLE_estimates$par
MLE_SE <- sqrt(diag(solve(MLE_estimates$hessian)))
MLE <- data.table("Lambda original" = lambda,
                  "------Estimación" = MLE_par,
                  "------Desviación estándar" = MLE_SE)

kable(MLE)
Lambda original ——Estimación ——Desviación estándar
5 4.745187 0.2122112
error = abs(lambda - MLE_par)
error
## [1] 0.2548134

Paso 4: Graficar estimaciones

log_like_graph <- function(x = distribucion, n = N){
  lambda = MLE_par
  logLikeLambda = n * log(lambda) - lambda * sum(x)
  return(logLikeLambda) 
}

log_like_graph <- Vectorize(log_like_graph)

graficoLambda <- ggplot(data = data.frame(lambda = 0), mapping = aes(lambda = lambda)) + 
    stat_function(fun = log_like_graph) +
    xlim(-40,40) + theme_bw() +xlab("lambda") + ylab("log lik")

graficoLambda

Referencias:

1: Taboga, M. (2021). Exponential distribution - Maximum Likelihood Estimation. https://stat.ethz.ch/R-manual/R-devel/library/stats/html/Exponential.html

2: Singla, A. (2018). An Introductory Guide to Maximum Likelihood Estimation (with a case study in R). Lectures on probability theory and mathematical statistics. https://www.analyticsvidhya.com/blog/2018/07/introductory-guide-maximum-likelihood-estimation-case-study-r/