Distribución elegida: de Poisson
Primerante debemos definir las fórmulas con las que trabajaremos, antes de avanzar a la generación de datos, la distribución de Poisson fue la elegida esta se trabaja con la siguiente fórmula:
Ahora a partir de esta se debe generar la función de verosimilitud, también conocida como Likelihood Function:
Una vez concluimos tenemos la función de
verosimilitud procedemos a la generación de datos. Primero debemos
definir un N que será el tamaño de la muestra, luego un lambda el cual
puede variar dependiendo la aproximación, para este ejercicio será igual
a siete lo que significa que nuestro resultado debería ser cercano a
siete, siguiente de esto generamos los datos para finalmente
almacenarlos en data frame.
n = 1000
lambda = 7
data_pois = rpois(n, lambda)
dataf_pois = data.frame(data_pois)
A continuación esta el procedimiento de la derivación de la función previamente mostrada, acompañado de la generación de un gráfico, siguiendo el procedimiento que se muestra en el enunciado principal:
pois_func_deriv = function(n, lambda, x){
value1 = sum(log(factorial(x)))
value2 = log(lambda)*sum(x)
value3 = -n*lambda
value=value1+value2-value3
finalvalue=-(value)
return(finalvalue)
}
values = seq(1,15)
plot(values,
pois_func_deriv(n,values,dataf_pois),
xlab = "Lambda",
ylab = "Log de λ",
type='o',
main = "Poisson likelihood function, lambda = 7", col="red")
A continuación se ocupa la función optim, la función resultante nos entregará el valor lambda. El uso de optim permite optimizar la función creada en el paso anterior. Además se obtiene el valor sd.
Debido a problemas netamente relacionados con el computador en el que se realizó este informe el uso optim abajo no fue posible pero de llevarse a cabo el procedimiento sería el siguiente:
#```{r}
Abajo la función optimizada estima_MLE = optim(fn=pois_func_deriv, par=c(1), inf = -Inf, sup = Inf, hessian=TRUE, method=“L-BFGS-B”, n = 1000, x = dataf_pois)
Resultado N°1 -> par_MLE = estima_MLE$par
Resultado N°2 -> se_MLE = sqrt(diag(solve(estima_MLE$hessian)))
cat(“El valor inicial de lambda era:”, lambda)
cat(“Utilizando función de verosimilitud, la estimación de lambda es:”, par_MLE)
cat(“Con la estimación tenemos un sd asociado de:”, se_MLE) # ``` Como resultado tenemos una aproximación al valor real de lambda.
Debido que este gráfico está relacionado con el paso anterior su visualización no es posible.
#```{r} graph <- function(x = dataf_pois, n = n) { lambda = par_MLE value = -n * lambda + sum(x) * log(lambda) - sum(log(factorial(x))) return (value) } graph <- Vectorize(graph)
graph_lambda = ggplot(data = data.frame(lambda = 0), mapping = aes(lambda = lambda)) + stat_function(fun = graph) + xlim(0,40) + theme_bw() +xlab(“lambda”) + ylab(“Log”)
graph_lambda # ```