Se tiene la siguiente distribución geometrica \[ f(x) = p(1-p)^{x-1} \] La función de verosimilitud está dada por: \[ L(p) = p(1-p)^{x_{1} - 1}p(1-p)^{x_{2} - 1}p(1-p)^{x_{3} - 1}p(1-p)^{x_{4} - 1}...p(1-p)^{x_{n} - 1} \]

Es decir \[ L(p) = p^{n}(1-p)^{\sum_{i = 1}^{n}x_{i}-n} \]

La función de log-verosimilitud es: \[ log(L(p)) = nlog(p) + log(1-p)\sum_{i = 1}^{n} x_{i}-n \]

Paso 1: Generar los datos

library(pacman)
p_load(data.table, fixest, lattice, magrittr, ggplot2, kableExtra,dplyr)
N = 250
p = 0.4 # Valor arbitrario
data = rgeom(N, p)

Paso 2: Derivar función de verosimilitud

Se debe tener en cuenta que la derivación ya fue realizada más arriba en este documento, por lo tanto queda definirla en una función de R y graficarla

log_like = function(p, x, n){
  return(n*log(p)+log(1-p)*sum(x-n))
}

valores = runif(30, 0, 1) # runif genera valores entre 0 y 1

plot(valores, log_like(valores, data, 250), main = "Función de log verosimilitud")

Paso 3: Estimación por máxima verosimilitud

MLE_estimates <- optim(fn=log_like, par=c(0.1), lower = c(0.2, 0.2), upper = c(Inf, Inf), hessian = TRUE, method = "L-BFGS-B", n = 250, x = data)

MLE_par <- MLE_estimates$par
MLE_SE <- sqrt(diag(solve(MLE_estimates$hessian)))

MLE <- data.table(param = c("p"),
                  estimates = MLE_par,
                  sd = MLE_SE)
kable(MLE)%>%
  kable_styling(full_width = F)
param estimates sd
p 0.2 0.0033184

Paso 4: Graficar estimaciones

log_like_graph <- function(x = data, n = N){
  p = MLE_par
  log_like_g <- n*log(p)+log(1-p)*sum(x-n)
  return (log_like_g)
}
log_like_graph <- Vectorize(log_like_graph)

p_graph <- ggplot(data = data.frame(p = 0), mapping = aes(p = p)) +
  stat_function(fun = log_like_graph) + xlim(0,1) + theme_bw() + xlab("p") + ylab("Log like")

p_graph

Referencias: 1. Seshadri, H. (s. f.). Maximum Likelihood Estimation (MLE) Analysis for various Probability Distributions. Project Rhea. Recuperado 8 de junio de 2022, de https://www.projectrhea.org/rhea/index.php/Maximum_Likelihood_Estimation_Analysis_for_various_Probability_Distributions