Problema 2: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:

θ1ˆ=(X1+X2)/6+(X3+X4)/3

θ2ˆ=(X1+2X2+3X3+4X4)/5

θ3ˆ=(X1+X2+X3+X4)/4

θ4ˆ=(min{X1,X2,X3,X4}+max{X1,X2,X3,X4})/2

Paso 1: Configuración de la simulación

Suponemos que 𝜃=2. Para cada tamaño de muestra (𝑛=20,50,100,1000), se genera 𝐵=10000 muestras aleatorias de tamaño 𝑛=4 de una distribución exponencial con parámetro 𝜃=2.

set.seed(123)
theta <- 2
B <- 10000

# Función para generar las estimaciones
generate_estimates <- function(n, theta) {
  estimates <- matrix(0, nrow = B, ncol = 4)
  
  for (i in 1:B) {
    X <- rexp(n = 4, rate = 1 / theta)
    
    # Estimadores
    estimates[i, 1] <- ((X[1] + X[2]) / 6 + (X[3] + X[4]) / 3)
    estimates[i, 2] <- (X[1] + 2 * X[2] + 3 * X[3] + 4 * X[4]) / 5
    estimates[i, 3] <- mean(X)
    estimates[i, 4] <- (min(X) + max(X)) / 2
  }
  
  return(estimates)
}

# Evaluar para diferentes tamaños de muestra
sizes <- c(20, 50, 100, 1000)
results <- lapply(sizes, generate_estimates, theta = theta)

# Evaluar insesgadez, eficiencia y consistencia
calculate_bias <- function(estimates, theta) {
  mean_est <- colMeans(estimates)
  bias <- mean_est - theta
  return(bias)
}

calculate_variance <- function(estimates) {
  var_est <- apply(estimates, 2, var)
  return(var_est)
}

calculate_mse <- function(estimates, theta) {
  mean_est <- colMeans(estimates)
  bias <- mean_est - theta
  var_est <- apply(estimates, 2, var)
  mse <- bias^2 + var_est
  return(mse)
}

# Calcular sesgo, varianza y MSE para los diferentes tamaños de muestra
bias_results <- sapply(results, calculate_bias, theta = theta)
variance_results <- sapply(results, calculate_variance)
mse_results <- sapply(results, calculate_mse, theta = theta)

# Nombrar las columnas para una mejor interpretación
colnames(bias_results) <- paste("n =", sizes)
colnames(variance_results) <- paste("n =", sizes)
colnames(mse_results) <- paste("n =", sizes)

# Mostrar resultados
list(Bias = bias_results, Variance = variance_results, MSE = mse_results)
## $Bias
##           n = 20       n = 50      n = 100     n = 1000
## [1,] 0.003001170 -0.010236885 -0.008280991 -0.000778728
## [2,] 2.010835586  1.982017869  1.976419934  2.000618003
## [3,] 0.004764511 -0.009618049 -0.009748135 -0.008837961
## [4,] 0.340572440  0.330866844  0.325392578  0.318033043
## 
## $Variance
##         n = 20    n = 50   n = 100 n = 1000
## [1,] 1.0906134 1.0913699 1.1044568 1.119383
## [2,] 4.7706272 4.7188134 4.7485026 4.837563
## [3,] 0.9763895 0.9767685 0.9864238 1.007155
## [4,] 1.5844184 1.5760002 1.5739270 1.603394
## 
## $MSE
##         n = 20   n = 50   n = 100 n = 1000
## [1,] 1.0906224 1.091475 1.1045254 1.119384
## [2,] 8.8140870 8.647208 8.6547383 8.840035
## [3,] 0.9764122 0.976861 0.9865189 1.007234
## [4,] 1.7004080 1.685473 1.6798073 1.704539

Análisis de los resultados.

1. Insesgadez La insesgadez se refiere a si el estimador, en promedio, produce valores cercanos al verdadero valor del parámetro (θ=2).

Al revisar los valores de sesgo para cada estimador, podemos observar lo siguiente:

Estimador 𝜃^3(media de 𝑋1,𝑋2,𝑋3,𝑋4) tiene un sesgo muy cercano a cero en todos los tamaños de muestra, lo que indica que es insesgado. Los otros estimadores presentan un sesgo más significativo, lo que sugiere que 𝜃^3 es el más insesgado de todos.

2. Eficiencia.

La eficiencia de un estimador se mide por su varianza. Un estimador más eficiente tiene una varianza menor.

Observando los resultados de la varianza:

El estimador 𝜃^3 nuevamente se destaca con una varianza baja en comparación con otros estimadores, especialmente a medida que aumenta el tamaño de la muestra. Los otros estimadores tienen varianzas más altas, especialmente 𝜃^2 y 𝜃^4, lo que los hace menos eficientes.

3. Consistencia. Un estimador es consistente si, a medida que aumenta el tamaño de la muestra, el estimador se acerca al verdadero valor del parámetro (esto se observa mediante la disminución del sesgo y la varianza).

Observación de Consistencia:

Al comparar los valores del sesgo y la varianza a través de diferentes tamaños de muestra:

El estimador 𝜃^3 muestra que su sesgo y varianza disminuyen con el aumento del tamaño de la muestra, indicando que es consistente. Los demás estimadores también muestran cierta consistencia, pero menos pronunciada que 𝜃^3

Diagramas de cajas

El diagrama de cajas nos permite visualizar la distribución de cada estimador a través de diferentes tamaños de muestra.

Se observa que elestimador 𝜃^3 muestra una menor dispersión y valores más cercanos a 𝜃=2 en comparación con otros estimadores. En tamaños de muestra más grandes, la dispersión de 𝜃^3 disminuye significativamente, lo que refuerza su consistencia.

data_for_plotting <- data.frame()

for (i in 1:length(sizes)) {
  estimates <- results[[i]]
  for (j in 1:4) {
    temp_data <- data.frame(
      Estimator = rep(paste0("θ̂", j), B),
      Value = estimates[, j],
      Sample_Size = rep(paste("n =", sizes[i]), B)
    )
    data_for_plotting <- rbind(data_for_plotting, temp_data)
  }
}


if (!require("ggplot2")) install.packages("ggplot2")
## Cargando paquete requerido: ggplot2
library(ggplot2)


data_for_plotting$Sample_Size <- factor(data_for_plotting$Sample_Size, 
                                        levels = paste("n =", sort(sizes)))

ggplot(data_for_plotting, aes(x = Estimator, y = Value, fill = Sample_Size)) +
  geom_boxplot() +
  labs(title = "Diagrama de Cajas de Estimadores para Diferentes Tamaños de Muestra",
       x = "Estimadores",
       y = "Valor Estimado",
       fill = "Tamaño de Muestra") +
  theme_minimal() +
  scale_fill_brewer(palette = "Set3")