La simulación ayuda a entender y validad las propiedades de los estimadores estadísticos como son. insesgadez, eficiencia y la consistencia principalmente. El siguiente problema permite evidenciar las principales características de un grupo de estimadores propuestos para la estimación de un parámetro asociado a un modelo de probabilidad.
Sean X1, X2, X3 y X4 , una muestra aleatoria de tamaño n=4 cuya población la conforma una distribución exponencial con parámetro θ desconocido. Determine las características de cada uno de los siguientes estimadores propuestos:
library(ggplot2)
library(reshape2)
# Definimos las funciones para los estimadores
estimador1 <- function(x) { (x[1] + x[2]/6 + x[3] + x[4]/3) }
estimador2 <- function(x) { (x[1] + 2*x[2] + 3*x[3] + 4*x[4]) / 5 }
estimador3 <- function(x) { mean(x) }
estimador4 <- function(x) { (min(x) + max(x)) / 2 }
# Función para calcular sesgo, varianza y ECM
calcular_metricas <- function(estimaciones, theta) {
sesgo <- mean(estimaciones) - theta
varianza <- var(estimaciones)
ecm <- mean((estimaciones - theta)^2)
return(c(sesgo = sesgo, varianza = varianza, ecm = ecm))
}
theta <- 2 # Establecemos un valor para theta
n_simulaciones <- 1000 # Número de simulaciones
tamaños <- c(20, 50, 100, 500, 1000) # Tamaños de muestra
# Preparamos un data frame para almacenar los resultados
resultados_df <- data.frame()
# Realizamos las simulaciones
for (n in tamaños) {
for (i in 1:n_simulaciones) {
muestra <- rexp(n, rate = 1/theta)
estimaciones <- c(estimador1(muestra[1:4]), estimador2(muestra[1:4]), estimador3(muestra), estimador4(muestra[1:4]))
metricas <- sapply(estimaciones, function(est) calcular_metricas(est, theta))
for (j in 1:4) {
resultados_df <- rbind(resultados_df, c(n, paste0('estimador', j), metricas[, j]))
}
}
}
# Ajustamos los nombres y tipos de las columnas
colnames(resultados_df) <- c('tamaño', 'estimador', 'sesgo', 'varianza', 'ecm')
resultados_df <- transform(resultados_df, tamaño = as.factor(tamaño), estimador = as.factor(estimador),
sesgo = as.numeric(sesgo), varianza = as.numeric(varianza), ecm = as.numeric(ecm))
# Generamos los gráficos
ggplot(resultados_df, aes(x = tamaño, y = sesgo, color = estimador)) +
geom_line() +
geom_point() +
ggtitle("Sesgo de los Estimadores") +
xlab("Tamaño de la muestra") +
ylab("Sesgo")
ggplot(resultados_df, aes(x = tamaño, y = varianza, color = estimador)) +
geom_line() +
geom_point() +
ggtitle("Varianza de los Estimadores") +
xlab("Tamaño de la muestra") +
ylab("Varianza")
## Warning: Removed 20000 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 20000 rows containing missing values or values outside the scale range
## (`geom_point()`).
ggplot(resultados_df, aes(x = tamaño, y = ecm, color = estimador)) +
geom_line() +
geom_point() +
ggtitle("Error Cuadrático Medio de los Estimadores") +
xlab("Tamaño de la muestra") +
ylab("ECM")
El estimador 3 se acerca a cero a medida que aumenta el tamaño de la
muestra, esto indica que el estimador asociado es insesgado o
asintóticamente insesgado.
El estimador 1 se mantiene alejado de cero cuando el tamaño de la muestra aumenta, se evidencia que este estimador se encuentra sesgado.
Los estimadores 3 y 4 son consistentes pues la línea que representa su ECM se acerca a cero a medida que el tamaño de la muestra aumenta los estimadores 1 y 2 son mas inconsistentes pues las lineas que representan su ECM se alejan de sero en la medida que la muestra aumenta.