Problema 2 - Propiedades de los estimadores

Para la resolución de este problema se siguió la siguiente aproximación:

Interpretaciones

Muestra n = 20

Para el primer caso vemos cómo los estimadores T1 y T3 son los más cercanos a ser insesgados al ser los de menor distancia con la media real a pesar de pecar de sobrestimación. Así mismo, parecen ser los más eficientes debido a su baja varianza, por lo cuál se podrían considerar, a pesar de la poca evidencia de la consistencia debido al tamaño de la muestra, como aquellos con las propiedades más robustas. El estimador T4 que parece tener potencial debido a su insesgadez pero tiene problemas de alta varianza. Por úlitmo, tenemos el estimador T2 que tiene una sobrestimación totalmente distorsionada del valor real.

library(ggplot2)
library(reshape2)

# Parámetros
m <- 20
lambda <- 50

# Generar los datos
set.seed(2)
X1 <- rexp(m, 1/lambda)
X2 <- rexp(m, 1/lambda)
X3 <- rexp(m, 1/lambda)
X4 <- rexp(m, 1/lambda)

data <- data.frame(X1, X2, X3, X4)

# Cálculo de los estimadores
T1 <- (X1 + X2) / 6 + (X3 + X4) / 3
T2 <- (X1 + 2 * X2 + 3 * X3 + 4 * X4) / 5
T3 <- (X1 + X2 + X3 + X4) / 4
minx <- apply(data, 1, min)
maxx <- apply(data, 1, max)
T4 <- (minx + maxx) / 2

# Crear el data frame de los estimadores
dataT <- data.frame(T1, T2, T3, T4)

# Calcular medias, varianzas y sesgo
medias <- apply(dataT, 2, mean)
varianzas <- apply(dataT, 2, var)
sesgo <- lambda - medias

library(kableExtra)

# Crear la tabla con las medias, varianzas y sesgos
resultados <- data.frame(
  Estimador = c("T1", "T2", "T3", "T4"),
  Media = medias,
  Varianza = varianzas,
  Sesgo = sesgo,
  row.names = NULL
)

# Mostrar la tabla con formato mejorado usando kableExtra
resultados %>%
  kbl(caption = "Tabla de resultados n = 20: Medias, varianzas y sesgos de los estimadores") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = TRUE, 
                position = "center")
Tabla de resultados n = 20: Medias, varianzas y sesgos de los estimadores
Estimador Media Varianza Sesgo
T1 53.51541 618.9673 -3.515413
T2 104.72595 2981.6264 -54.725952
T3 53.13409 612.0700 -3.134091
T4 62.98271 1085.0040 -12.982713
# Convertir dataT para ggplot2
dataT_long <- melt(dataT, variable.name = "Estimador", value.name = "Valor")

# Crear el boxplot con ggplot2
ggplot(dataT_long, aes(x = Estimador, y = Valor, fill = Estimador)) +
  geom_boxplot() +
  geom_hline(yintercept = lambda, linetype = "dashed", color = "red") +
  stat_summary(fun = "mean", geom = "point", shape = 18, size = 3, color = "black") +
  ggtitle("n = 20 | Distribución de los estimadores") +
  ylab("Estimaciones") +
  xlab("Estimadores") +
  theme_bw() +
  theme(legend.position = "none") +
  labs(caption = "Línea roja indica el valor verdadero de lambda")

Muestra n = 50

Para la segunda muestra vemos el mismo comportamiento de los estimadores teniendo a T1 y T3 como aquellos, aún en este caso, con una mejor insesgadez aunque con menor eficiencia que en la muestra anterior. El estimador T4 parece ajustarse mejor a esta muestra que a la anterior pero aún sigue teniendo problemas de sobrestimación.

# Parámetros
m <- 50
lambda <- 50

# Generar los datos
set.seed(2)
X1 <- rexp(m, 1/lambda)
X2 <- rexp(m, 1/lambda)
X3 <- rexp(m, 1/lambda)
X4 <- rexp(m, 1/lambda)

data <- data.frame(X1, X2, X3, X4)

# Cálculo de los estimadores
T1 <- (X1 + X2) / 6 + (X3 + X4) / 3
T2 <- (X1 + 2 * X2 + 3 * X3 + 4 * X4) / 5
T3 <- (X1 + X2 + X3 + X4) / 4
minx <- apply(data, 1, min)
maxx <- apply(data, 1, max)
T4 <- (minx + maxx) / 2

# Crear el data frame de los estimadores
dataT <- data.frame(T1, T2, T3, T4)

# Calcular medias, varianzas y sesgo
medias <- apply(dataT, 2, mean)
varianzas <- apply(dataT, 2, var)
sesgo <- lambda - medias

library(kableExtra)

# Crear la tabla con las medias, varianzas y sesgos
resultados <- data.frame(
  Estimador = c("T1", "T2", "T3", "T4"),
  Media = medias,
  Varianza = varianzas,
  Sesgo = sesgo,
  row.names = NULL
)

# Mostrar la tabla con formato mejorado usando kableExtra
resultados %>%
  kbl(caption = "Tabla de resultados n = 50: Medias, varianzas y sesgos de los estimadores") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = TRUE, 
                position = "center")
Tabla de resultados n = 50: Medias, varianzas y sesgos de los estimadores
Estimador Media Varianza Sesgo
T1 53.64300 603.0559 -3.643005
T2 107.89327 2902.5452 -57.893271
T3 52.81637 517.4492 -2.816367
T4 63.68101 828.4095 -13.681012
# Convertir dataT para ggplot2
dataT_long <- melt(dataT, variable.name = "Estimador", value.name = "Valor")

# Crear el boxplot con ggplot2
ggplot(dataT_long, aes(x = Estimador, y = Valor, fill = Estimador)) +
  geom_boxplot() +
  geom_hline(yintercept = lambda, linetype = "dashed", color = "red") +
  stat_summary(fun = "mean", geom = "point", shape = 18, size = 3, color = "black") +
  ggtitle("n = 50 | Distribución de los estimadores") +
  ylab("Estimaciones") +
  xlab("Estimadores") +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(caption = "Línea roja indica el valor verdadero de lambda")

Muestra n = 100

En esta muestra podemos proponer dos conclusiones preliminares: los estimadores T1 y T3 definitivamente son, para este tipo de escenarios con distribución exponencial, los mejores del grupo en cuanto insesgadez y eficiencia pero parece que pecan de consistencia debido a que el aumento en el tamaño de la muestra ha ido aumentando su varianza (y por tanto reduciendo su eficiencia); al punto que en este escenario se acercan a los niveles del T4, por lo menos en el caso de T1. Por otro lado, el T2 no solo se ve limitado en sus insesgadez y eficiencia sino que además es totalmente inconsistente con el crecimiento de las muestras.

# Parámetros
m <- 100
lambda <- 50

# Generar los datos
set.seed(2)
X1 <- rexp(m, 1/lambda)
X2 <- rexp(m, 1/lambda)
X3 <- rexp(m, 1/lambda)
X4 <- rexp(m, 1/lambda)

data <- data.frame(X1, X2, X3, X4)

# Cálculo de los estimadores
T1 <- (X1 + X2) / 6 + (X3 + X4) / 3
T2 <- (X1 + 2 * X2 + 3 * X3 + 4 * X4) / 5
T3 <- (X1 + X2 + X3 + X4) / 4
minx <- apply(data, 1, min)
maxx <- apply(data, 1, max)
T4 <- (minx + maxx) / 2

# Crear el data frame de los estimadores
dataT <- data.frame(T1, T2, T3, T4)

# Calcular medias, varianzas y sesgo
medias <- apply(dataT, 2, mean)
varianzas <- apply(dataT, 2, var)
sesgo <- lambda - medias

library(kableExtra)

# Crear la tabla con las medias, varianzas y sesgos
resultados <- data.frame(
  Estimador = c("T1", "T2", "T3", "T4"),
  Media = medias,
  Varianza = varianzas,
  Sesgo = sesgo,
  row.names = NULL
)

# Mostrar la tabla con formato mejorado usando kableExtra
resultados %>%
  kbl(caption = "Tabla de resultados n = 100: Medias, varianzas y sesgos de los estimadores") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = TRUE, 
                position = "center")
Tabla de resultados n = 100: Medias, varianzas y sesgos de los estimadores
Estimador Media Varianza Sesgo
T1 51.64623 939.2009 -1.646232
T2 104.24066 4034.7789 -54.240664
T3 51.93877 772.0182 -1.938765
T4 59.13545 1099.1176 -9.135449
# Convertir dataT para ggplot2
dataT_long <- melt(dataT, variable.name = "Estimador", value.name = "Valor")

# Crear el boxplot con ggplot2
ggplot(dataT_long, aes(x = Estimador, y = Valor, fill = Estimador)) +
  geom_boxplot() +
  geom_hline(yintercept = lambda, linetype = "dashed", color = "red") +
  stat_summary(fun = "mean", geom = "point", shape = 18, size = 3, color = "black") +
  ggtitle("n = 100 | Distribución de los estimadores") +
  ylab("Estimaciones") +
  xlab("Estimadores") +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(caption = "Línea roja indica el valor verdadero de lambda")

Muestra n = 1000

Con esta muestra podemos concluir definitivamente que el estimador T3 puede ser el más recomendado para abordar este tipo de muestras bajo la consideración que la aleatoriedad usada lleva a que no sea posible garantizar que se mantenga esta consistencia en otros escenarios. Adicionalmente, y teniendo en cuenta los cuatros escenarios, el estimador T1 es el segundo en la línea de potencial uso de estimación aunque expresa una menor consistencia.

De cualquier manera, en todos los casos al parecer hubo problemas de sobrestimación aunque en esta última muestra se redujeron casi al valor real.

El estimador T4 tiene consistencia bajo sus propios niveles de insesgadez y eficiencia que suelen ser altos pero equilibrados. El estimador T4 nunca logró expresar buenas propiedades y parece siempre que en sus muestras hubo múltiples valores extremos y un profundo sesgo positivo.

# Parámetros
m <- 1000
lambda <- 50

# Generar los datos
set.seed(2)
X1 <- rexp(m, 1/lambda)
X2 <- rexp(m, 1/lambda)
X3 <- rexp(m, 1/lambda)
X4 <- rexp(m, 1/lambda)

data <- data.frame(X1, X2, X3, X4)

# Cálculo de los estimadores
T1 <- (X1 + X2) / 6 + (X3 + X4) / 3
T2 <- (X1 + 2 * X2 + 3 * X3 + 4 * X4) / 5
T3 <- (X1 + X2 + X3 + X4) / 4
minx <- apply(data, 1, min)
maxx <- apply(data, 1, max)
T4 <- (minx + maxx) / 2

# Crear el data frame de los estimadores
dataT <- data.frame(T1, T2, T3, T4)

# Calcular medias, varianzas y sesgo
medias <- apply(dataT, 2, mean)
varianzas <- apply(dataT, 2, var)
sesgo <- lambda - medias

library(kableExtra)

# Crear la tabla con las medias, varianzas y sesgos
resultados <- data.frame(
  Estimador = c("T1", "T2", "T3", "T4"),
  Media = medias,
  Varianza = varianzas,
  Sesgo = sesgo,
  row.names = NULL
)

# Mostrar la tabla con formato mejorado usando kableExtra
resultados %>%
  kbl(caption = "Tabla de resultados n = 1000: Medias, varianzas y sesgos de los estimadores") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = TRUE, 
                position = "center")
Tabla de resultados n = 1000: Medias, varianzas y sesgos de los estimadores
Estimador Media Varianza Sesgo
T1 50.12424 730.9149 -0.1242380
T2 100.23270 3202.6313 -50.2326979
T3 50.03163 623.6363 -0.0316303
T4 58.57322 989.5843 -8.5732236
# Convertir dataT para ggplot2
dataT_long <- melt(dataT, variable.name = "Estimador", value.name = "Valor")

# Crear el boxplot con ggplot2
ggplot(dataT_long, aes(x = Estimador, y = Valor, fill = Estimador)) +
  geom_boxplot() +
  geom_hline(yintercept = lambda, linetype = "dashed", color = "red") +
  stat_summary(fun = "mean", geom = "point", shape = 18, size = 3, color = "black") +
  ggtitle("n = 1000 | Distribución de los estimadores") +
  ylab("Estimaciones") +
  xlab("Estimadores") +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(caption = "Línea roja indica el valor verdadero de lambda")