Propiedades de los estimadores

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:

Desarrollo estimaciones:

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)

Cálculo de los indicadores

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)))

Insesgadez

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.

Eficiencia

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.

Consistencia

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\).

Conclusión final

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.