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:
Inicialmente se definió \(θ = 5\), posteriormente se calcularon los 4 estimadores de \(θ\) con 4 números aleatorios, esto se realiza para \(n=20, 50, 100\) y \(1000\) veces.
## Punto 2
set.seed(10)
# Definimos el theta
thetass <-5
# Función para generar 4 registros y calcular el theta con los 4 estimadores, n veces
estimaciones <- function(n,theta){
theta1 <- 0
theta2 <- 0
theta3 <- 0
theta4 <- 0
for (i in 1:n){xs<-rexp(4,rate=1/theta)
theta1[i] <- ((xs[1]+xs[2])/6) + ((xs[3]+xs[4])/3)
theta2[i] <- (xs[1]+(2*xs[2]) + (3*xs[3])+(4*xs[4]))/5
theta3[i] <- (xs[1]+xs[2]+ xs[3]+xs[4])/4
theta4[i] <- (min(xs[1],xs[2], xs[3],xs[4]) + max(xs[1],xs[2], xs[3],xs[4]))/2
}
thetas <-data.frame(theta1,theta2,theta3,theta4)
return(thetas)
}
# Usamos la función creada para realizar el proceso n veces
thetascon20 <- estimaciones(20,thetass)
thetascon50 <- estimaciones(50,thetass)
thetascon100 <- estimaciones(100,thetass)
thetascon1000 <- estimaciones(1000,thetass)
Posteriormente, se calcularon los indicadores de estimación para cada número de iteraciones.
# funcion para calcular los indicadores
calcular_propiedades <- function(x) {
media <- colMeans(x)
varianza <- apply(x, 2, var)
sesgo <- abs(media - thetass)
num_registros <- nrow(x)
prom <- paste("promedio_", num_registros, "_registros", sep = "")
var <- paste("varianza_", num_registros, "_registros", sep = "")
ses <- paste("sesgo_", num_registros, "_registros", sep = "")
estadisticas <- data.frame(prom = media, var = varianza, ses = sesgo)
names(estadisticas) <- c(prom, var, ses)
return(estadisticas)
}
# Calculamos las propiedades para cada bd de diferentes tamaños
CaracteristicasCon20 <- t(calcular_propiedades(thetascon20))
CaracteristicasCon50 <- t(calcular_propiedades(thetascon50))
CaracteristicasCon100 <- t(calcular_propiedades(thetascon100))
CaracteristicasCon1000 <- t(calcular_propiedades(thetascon1000))
# Concatenamos las tablas
tabla_resumen <- CaracteristicasCon20
tabla_resumen <- rbind(tabla_resumen, CaracteristicasCon50)
tabla_resumen <- rbind(tabla_resumen, CaracteristicasCon100)
tabla_resumen <- rbind(tabla_resumen, CaracteristicasCon1000)
# Seleccionamos los indicadores
promedios <- subset(tabla_resumen, grepl("^prom", rownames(tabla_resumen)))
varianzas <- subset(tabla_resumen, grepl("^var", rownames(tabla_resumen)))
sesgos <- subset(tabla_resumen, grepl("^ses", rownames(tabla_resumen)))
Para analizar la insesgadez realizamos el cálculo del sesgo, el cual corresponde a la diferencia entre el promedio y el valor de \(θ\) en valor absoluto.
promedios
## theta1 theta2 theta3 theta4
## promedio_20_registros 5.039966 10.32136 5.156248 6.157068
## promedio_50_registros 5.113241 10.26082 5.194307 5.761364
## promedio_100_registros 5.087954 10.21856 5.021620 5.684475
## promedio_1000_registros 5.052701 10.09740 5.011697 5.895128
sesgos
## theta1 theta2 theta3 theta4
## sesgo_20_registros 0.03996649 5.321360 0.15624786 1.1570683
## sesgo_50_registros 0.11324135 5.260816 0.19430678 0.7613637
## sesgo_100_registros 0.08795441 5.218557 0.02161969 0.6844745
## sesgo_1000_registros 0.05270096 5.097398 0.01169738 0.8951284
Si analizamos por cada número de iteraciones identificamos que para \(n=20\) y \(50\), el estimador más insesgado es el \(\hatθ_1\), mientras que para \(n=100\) y \(1000\) el estimador mas insesgado es el \(\hatθ_3\).
Por otro lado, al ser datos aleatorios se observa que para los Thetas más insesgados (\(\hatθ_1\) \(\hatθ_3\)) el sesgo con \(50\) repeticiones es más alto que en el resto de las repeticiones, incluso mayor al de \(20\) repeticiones.
Para realizar el análisis de eficiencia calculamos la variabilidad de los indicadores a distintos niveles de repeticiones.
varianzas
## theta1 theta2 theta3 theta4
## varianza_20_registros 1.235178 4.613591 1.597221 3.180371
## varianza_50_registros 8.078750 33.580561 7.113301 9.791504
## varianza_100_registros 7.933104 33.810911 7.075735 9.703586
## varianza_1000_registros 7.151786 30.036477 6.287518 10.832149
library(ggplot2)
library(tidyr)
#### prueba para comparar graficamente los indicadores
# Lista de dataframes
lista_dataframes <- list(thetascon20, thetascon50, thetascon100, thetascon1000)
# Obtener el número de registros del dataframe actual
for (i in seq_along(lista_dataframes)) {
num_registros <- nrow(lista_dataframes[[i]])
lista_dataframes[[i]]$num_registros <- num_registros
}
# Concatenar los dataframes
df_concatenado <- do.call(rbind, lista_dataframes)
datos_long <- gather(df_concatenado, key = "Thetha", value = "Valor", -num_registros)
# Crear el boxplot
ggplot(datos_long, aes(x = factor(num_registros), y = Valor, fill = Thetha)) +
geom_boxplot() +
labs(title = "Valores por Número de registros y Estimador",
x = "Número de Registros",
y = "Valor",
fill = "Thetha") +
scale_x_discrete(labels = paste("Registros:", levels(factor(datos_long$num_registros)))) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
geom_hline(yintercept = 5, linetype = "dashed", color = "red")
Para cada número de iteraciones identificamos que con \(n=20\), el estimador con menos variabilidad es el \(\hatθ_1\) ya que tiene el valor de la varianza más bajo y el tamaño de la caja del gráfico es el más pequeño, mientras que para \(n=50\), \(100\) y \(1000\) el estimador con menos variabilidad es el \(\hatθ_3\) en comparación con los otros estimadores.
Por otro lado, se identificó que el estimador con mayor variabilidad corresponde al \(\hatθ_2\), esto lo evidenciamos en sus valores altos de las varianzas y en los tamaños mas grandes de las cajas en el gráfico.
promedios
## theta1 theta2 theta3 theta4
## promedio_20_registros 5.039966 10.32136 5.156248 6.157068
## promedio_50_registros 5.113241 10.26082 5.194307 5.761364
## promedio_100_registros 5.087954 10.21856 5.021620 5.684475
## promedio_1000_registros 5.052701 10.09740 5.011697 5.895128
# Crear el gráfico de densidad
ggplot(datos_long, aes(x = Valor, fill = Thetha)) +
geom_density(alpha = 0.5) +
theme_minimal() +
labs(title = "Diagrama de Densidad para Estimadores",
x = "Valor",
y = "Densidad") +
scale_fill_manual(values = c("theta1" = "blue", "theta2" = "red", "theta3" = "green", "theta4" = "black")) +
xlim(-5, 37)+
geom_vline(xintercept = 5, linetype = "dashed", color = "red") +
facet_wrap(~ factor(num_registros), ncol = 1) +
theme_minimal()
Se identifica que los estimadores \(\hatθ_1\) y \(\hatθ_3\) son los mas consistentes y a medida que se incrementar el número de repeticiones se obtiene una estimación del valor \(θ\) más precisa. Validando las gráficas se identifica que los valores se van acumulando cerca del promedio en los estimadores \(\hatθ_1\) y \(\hatθ_3\).
De acuerdo a lo observado en las tres propiedades, el mejor estimador seria el \(\hatθ_3\) seguido por el \(\hatθ_1\). Ya que los estimadores \(\hatθ_2\) y \(\hatθ_4\) no cumplen con todas las propiedades analizadas a diferentes niveles de repeticiones.