Problema 2

Christian David Vera Mendivelso
Paula Vidal Godoy

MĂ©todos y SimulaciĂ³n estadĂ­stica
MaestrĂ­a en Ciencia de Datos
Pontificia Universidad Javeriana de Cali


Propiedades de los estimadores.

La simulaciĂ³n ayuda a entender y validar las propiedades de los estimadores estadĂ­sticos, como son la insesgadez, eficiencia y 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 \(X_1\), \(X_2\), \(X_3\) y \(X_4\), una muestra aleatoria de tamaño \(n = 4\) cuya poblaciĂ³n la conforma una distribuciĂ³n exponencial con parĂ¡metro \(\theta\) desconocido. Determine las caracterĂ­sticas de cada uno de los estimadores propuestos.

  1. \(\hat{\theta}_1 = \frac{X_1 + X_2}{6} + \frac{X_3 + X_4}{3}\)
  2. \(\hat{\theta}_2 = \frac{X_1 + 2X_2 + 3X_3 + 4X_4}{5}\)
  3. \(\hat{\theta}_3 = \frac{X_1 + X_2 + X_3 + X_4}{4}\)
  4. \(\hat{\theta}_4 = \frac{\min\{X_1, X_2, X_3, X_4\} + \max\{X_1, X_2, X_3, X_4\}}{2}\)

Valor esperado y varianza de la funciĂ³n exponencial.

\({E}[X] = \theta\\\) \(\text{Var}(X) = \theta^2\)

Para comprender los conceptos de insesgadez, eficiencia y consistencia, se calcularĂ¡ el valor esperado y la varianza de los cuatro estimadores cuando n = 4, los cuales se usaran para determinar las propiedades de insesgadez y eficiencia junto con simulaciones de cada uno.

Valor esperado \(\hat{\theta}_1\)

\(\mathbb{E}[\hat{\theta}_1] = \frac{\mathbb{E}[X_1] + \mathbb{E}[X_2]}{6} + \frac{\mathbb{E}[X_3] + \mathbb{E}[X_4]}{3}\)

\(\mathbb{E}[\hat{\theta}_1] = \frac{\theta + \theta}{6} + \frac{\theta + \theta}{3} = \frac{2\theta}{6} + \frac{2\theta}{3} = \frac{\theta}{3} + \frac{2\theta}{3} = \theta\)

Varianza \(\hat{\theta}_1\)

\(\text{Var}(\hat{\theta}_1) = \text{Var}\left(\frac{X_1 + X_2}{6} + \frac{X_3 + X_4}{3}\right)\)

\(\text{Var}(\hat{\theta}_1) = \text{Var}\left(\frac{X_1 + X_2}{6}\right) + \text{Var}\left(\frac{X_3 + X_4}{3}\right)\)

\(\text{Var}(\hat{\theta}_1) = \frac{1}{36} \text{Var}(X_1 + X_2) + \frac{1}{9} \text{Var}(X_3 + X_4)\)

\(\text{Var}(\hat{\theta}_1) = \frac{1}{36} \cdot 2\theta^2 + \frac{1}{9} \cdot 2\theta^2 = \frac{2\theta^2}{36} + \frac{2\theta^2}{9} = \frac{\theta^2}{18} + \frac{2\theta^2}{9} = \frac{5\theta^2}{18}\)


Valor esperado \(\hat{\theta}_2\)

\(\mathbb{E}[\hat{\theta}_2] = \frac{\mathbb{E}[X_1] + 2\mathbb{E}[X_2] + 3\mathbb{E}[X_3] + 4\mathbb{E}[X_4]}{5}\)

\(\mathbb{E}[\hat{\theta}_2] = \frac{\theta + 2\theta + 3\theta + 4\theta}{5} = \frac{10\theta}{5} = 2\theta\)

Varianza \(\hat{\theta}_2\)

\(\text{Var}(\hat{\theta}_2) = \text{Var}\left(\frac{X_1 + 2X_2 + 3X_3 + 4X_4}{5}\right)\)

\(\text{Var}(\hat{\theta}_2) = \frac{1}{25} \text{Var}(X_1 + 2X_2 + 3X_3 + 4X_4)\)

\(\text{Var}(X_1 + 2X_2 + 3X_3 + 4X_4) = \theta^2 + 4\theta^2 + 9\theta^2 + 16\theta^2 = 30\theta^2\)

\(\text{Var}(\hat{\theta}_2) = \frac{30\theta^2}{25} = \frac{6\theta^2}{5}\)


Valor esperado \(\hat{\theta}_3\)

\(\mathbb{E}[\hat{\theta}_3] = \frac{\mathbb{E}[X_1] + \mathbb{E}[X_2] + \mathbb{E}[X_3] + \mathbb{E}[X_4]}{4}\)

\(\mathbb{E}[\hat{\theta}_3] = \frac{\theta + \theta + \theta + \theta}{4} = \frac{4\theta}{4} = \theta\)

Varianza \(\hat{\theta}_3\)

\(\text{Var}(\hat{\theta}_3) = \text{Var}\left(\frac{X_1 + X_2 + X_3 + X_4}{4}\right)\)

\(\text{Var}(\hat{\theta}_3) = \frac{1}{16} \text{Var}(X_1 + X_2 + X_3 + X_4)\)

\(\text{Var}(\hat{\theta}_3) = \frac{4\theta^2}{16} = \frac{\theta^2}{4}\)


Valor esperado y varianza \(\hat{\theta}_4\)

Debido a la dificultad para calcular estos valores de manera analĂ­tica, se usaran las simulaciones para estimar estos valores.

Ahora se determinarĂ¡ las propiedades de insesgadez, eficiencia y consistencia para cada uno de los 4 estimadores fijando como parĂ¡metro \({\theta}=5\) y generando la semilla 123 para evitar que los resultados varĂ­en.

#Se calcula la funciones de los estimadores y la funciĂ³n con la cual se hacen las simulaciones

# ParĂ¡metro y semilla
theta <- 5
set.seed(123)

# Funciones para los estimadores
estimador1 <- function(X) {
  return((X[1] + X[2]) / 6 + (X[3] + X[4]) / 3)}

estimador2 <- function(X) {
  return((X[1] + 2*X[2] + 3*X[3] + 4*X[4]) / 5)}

estimador3 <- function(X) {
  return((X[1] + X[2] + X[3] + X[4]) / 4)}

estimador4 <- function(X) {
  return((min(X) + max(X)) / 2)}

# FunciĂ³n para simular datos y calcular estimadores
#cada muestra tiene un tamaño de 4
simular_estimadores <- function(n, theta) {
  muestras <- matrix(rexp(4*n, rate = 1 / theta), ncol = 4)
  estimadores <- data.frame(
    Estimador1 = apply(muestras, 1, estimador1),
    Estimador2 = apply(muestras, 1, estimador2),
    Estimador3 = apply(muestras, 1, estimador3),
    Estimador4 = apply(muestras, 1, estimador4)
  )
  return(estimadores)
}

# Simular datos para diferentes tamaños

muestras_20 <- simular_estimadores(20, theta)
muestras_50 <- simular_estimadores(50, theta)
muestras_100 <- simular_estimadores(100, theta)
muestras_1000 <- simular_estimadores(1000, theta)

Insesgadez.

Un estimador se considera insesgado si \(E[\hat{\theta}] = \theta\), la Tabla 1 muestra el promedio para cada estimador con 20, 50, 100 y 1.000 simulaciones de una muestra aleatoria de tamaño 4, \(X_1\), \(X_2\), \(X_3\) y \(X_4\). A continuaciĂ³n se menciona la insesgadez de cada estimador con base en la Tabla 1 y el valor esperado calculado para cada uno.


Tabla 1. Media de cada estimador por cantidad de simulaciones.

library(knitr)
library(kableExtra)
library(reshape2)

# FunciĂ³n para calcular la insesgadez
calcular_insesgadez <- function(estimadores, theta) {
  colMeans(estimadores)
}

# Obtener la insesgadez para diferentes tamaños de muestra
insesgadez_20 <- calcular_insesgadez(muestras_20, theta)
insesgadez_50 <- calcular_insesgadez(muestras_50, theta)
insesgadez_100 <- calcular_insesgadez(muestras_100, theta)
insesgadez_1000 <- calcular_insesgadez(muestras_1000, theta)

# Crear un data.frame con insesgadez
insesgadez_df <- data.frame(
  Tamano = rep(c(20, 50, 100, 1000), each = 4),
  Insesgadez = c(insesgadez_20, insesgadez_50, insesgadez_100, insesgadez_1000),
  Estimador = rep(c("Estimador 1", "Estimador 2", "Estimador 3", "Estimador 4"), times = 4)
)

# Convertir el data.frame a formato ancho
insesgadez_crosstab <- dcast(insesgadez_df, Tamano ~ Estimador, value.var = "Insesgadez")

# Mostrar la tabla usando kable y kableExtr.

kable(insesgadez_crosstab, format = "html", digits = 6) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = F, position = "center")
Tamano Estimador 1 Estimador 2 Estimador 3 Estimador 4
20 5.177122 10.21979 5.085644 6.003939
50 5.156130 10.32388 5.107465 5.685169
100 4.989776 10.10940 4.982349 5.844113
1000 5.019668 10.02908 5.025265 5.874587

La tabla 1 reafirma la propiedad de insesgadez de \(\hat{\theta}_1\) y \(\hat{\theta}_3\), pues se aprecia que entre mayor sea el nĂºmero de simulaciones se aproxima mĂ¡s al valor real.Mientras que para \(\hat{\theta}_2\) y \(\hat{\theta}_4\) no se cumple esta afirmaciĂ³n, pues la cantidad de simulaciones no tienen efecto en el promedio calculado.

Eficiencia.

La eficiencia de un estimador hace referencia a la varianza de su distribuciĂ³n. Se dice que es mas eficiente si tiene una varianza menor respecto a los demĂ¡s estimadores insesgados. Teniendo en cuenta que \(\hat{\theta}_1\) y \(\hat{\theta}_3\) son estimadores insesgados, se procederĂ¡ a hallar la varianza de ambos para determinar cual es mas eficiente.

\(\text{Var}(\hat{\theta}_1) = \frac{5\theta^2}{18}\) y \(\text{Var}(\hat{\theta}_3)= \frac{\theta^2}{4}\)

Esto indica que \((\text{Var}(\hat{\theta}_1)\) > \(\text{Var}(\hat{\theta}_3))\), por lo que \((\hat{\theta}_3)\) tiene una menor varianza y, por lo tanto, es mĂ¡s eficiente que \((\hat{\theta}_1)\).Esta afirmaciĂ³n se ve respaldada por los resultados de la Tabla 2 y la Figura 1. Esto tiene relaciĂ³n con el estimador de mĂ¡xima verosimilitud de una distribuciĂ³n exponencial que es el promedio muestral, puesto que \(\hat{\theta}_3\) utiliza el promedio.


Tabla 2. Varianza de cada estimador por cantidad de simulaciones.

library(knitr)
library(kableExtra)
library(reshape2)

# FunciĂ³n para varianza de los estimadores
calcular_varianza <- function(estimadores) {
  apply(estimadores, 2, var)
}

# Se calculan las distintas varianzas
varianza_20 <- calcular_varianza(muestras_20)
varianza_50 <- calcular_varianza(muestras_50)
varianza_100 <- calcular_varianza(muestras_100)
varianza_1000 <- calcular_varianza(muestras_1000)

# Crear un data frame con las varianzas
varianza_df <- data.frame(
  Tamano = rep(c(20, 50, 100, 1000), each = 4),
  Varianza = c(varianza_20, varianza_50, varianza_100, varianza_1000),
  Estimador = rep(c("Estimador 1", "Estimador 2", "Estimador 3", "Estimador 4"), times = 4))

# Convertir el data frame a formato ancho usando reshape2
varianza_crosstab <- dcast(varianza_df, Tamano ~ Estimador, value.var = "Varianza")

# Mostrar la tabla usando kable y kableExtra

kable(varianza_crosstab, format = "html", escape = FALSE, digits = 6) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),full_width = FALSE, position = "center")
Tamano Estimador 1 Estimador 2 Estimador 3 Estimador 4
20 6.803333 21.92193 4.964954 13.018168
50 5.079508 21.18270 4.394524 6.360973
100 6.791158 27.55937 6.004551 8.874438
1000 7.352848 31.80251 6.877106 10.572378
#Se realiza un grafico interactivo usando ggploty de las varianzas por cantidad de simulaciones para ver la eficiencia de manera sencilla.

library(ggplot2)
library(plotly)

# Crear el grĂ¡fico con ggplot2
p <- ggplot(varianza_df, aes(x = Tamano, y = Varianza, color = Estimador, shape = Estimador)) +
  geom_line() +
  geom_point(size = 3) + 
  scale_x_log10() + 
  scale_y_log10() + 
  labs(
    x = "Tamaño de Muestra",
    y = "Varianza"
  ) +
  theme_minimal() +
  theme(
    legend.position = "bottom", 
    axis.title = element_text(size = 9), 
    axis.text = element_text(size = 9), 
    plot.title = element_blank() 
  )

ggplotly(p)

Fig 1. Varianza de los estimadores por cantidad de simulaciones.

Consistencia.

La propiedad de consistencia de un estimador hace referencia a la propiedad que describe la capacidad de un estimador de aproximarse al valor verdadero del parĂ¡metro a medida que el tamaño de la muestra crece. Se dice que un estimador es consistente si a medida que aumenta el tamaño de la muestra tiende al valor del parĂ¡metro y su varianza tiende a cero.

A continuaciĂ³n se realizarĂ¡ la generalizaciĂ³n de los estimadores iniciales para cualquier tamaño de muestra n, esto con el objetivo de calcular su consistencia.

\(\hat{\theta}_1 = \frac{1}{2(n-1)} \sum_{i=1}^{\frac{n}{2}} X_i + \frac{1}{n-1} \sum_{i=\frac{n}{2} + 1}^{n} X_i\)

\(\hat{\theta}_2 = \frac{\sum_{i=1}^{n} C_i \cdot X_i}{n+1}\)

\(\hat{\theta}_3 = \frac{1}{n} \sum_{i=1}^{n} X_i\)

\(\hat{\theta}_4 = \frac{\text{min}(X_i) + \text{max}(X_i)}{2}\)


#Se realizan las funciones para generalizar los estimadores y ver su consistencia.

# Estimador 1 generalizado
estimador1a <- function(X) {
  n <- length(X)
  n_mitad <- n / 2
  
  # Calcular las sumas de los bloques
  bloque1 <- sum(X[1:n_mitad]) / (2 * (n - 1))
  bloque2 <- sum(X[(n_mitad + 1):n]) / (n - 1)
  
  # Sumar ambos bloques para obtener el estimador final
  return(bloque1 + bloque2) }

#
estimador2a <- function(X) {
  n <- length(X)
  coeficientes <- 1:n
  return(sum(coeficientes * X) / (1+n))}

# Estimador 3 generalizado (media muestral)
estimador3a <- function(X) {
  return(mean(X)) }

# Estimador 4 generalizado (promedio del mĂ­nimo y mĂ¡ximo)
estimador4a <- function(X) {
  return((min(X) + max(X)) / 2) }

# FunciĂ³n para simular datos y calcular estimadores
# `n` es el nĂºmero de muestras, `size` es el tamaño de cada muestra
simular_estimadores <- function(n, size, theta) {
  muestras <- matrix(rexp(size * n, rate = 1 / theta), ncol = size)

  pesos1 <- rep(1, size)
  pesos2 <- 1:size
  
  estimadores <- data.frame(
    Estimador1 = apply(muestras, 2, estimador1a),
    Estimador2 = apply(muestras, 2, estimador2a),
    Estimador3 = apply(muestras,2,estimador3a),
    Estimador4 = apply(muestras, 1, estimador4a)
  )
  
  return(estimadores)
}

# Simular 
muestras_20a <- simular_estimadores(20, 10000, theta)
muestras_50a <- simular_estimadores(50, 10000, theta)
muestras_100a <- simular_estimadores(100, 10000, theta)
muestras_1000a <- simular_estimadores(1000, 10000, theta)

Tabla 3. Varianza para distintos tamaños de muestra y 10.000 simulaciones.

#Se calculan las varianzas para la generalizaciĂ³n de los estimadores para evidenciar la propiedad de consistencia.

calcular_varianza <- function(estimadores) {
  apply(estimadores, 2, var)
}


# Obtener varianzas
varianza_20a <- calcular_varianza(muestras_20a)
varianza_50a <- calcular_varianza(muestras_50a)
varianza_100a <- calcular_varianza(muestras_100a)
varianza_1000a <- calcular_varianza(muestras_1000a)

# Crear un data.frame con varianza
varianza_df <- data.frame(
  Tamano = rep(c(20, 50, 100, 1000), each = 4),
  Varianza = c(varianza_20a, varianza_50a, varianza_100a, varianza_1000a),
  Estimador = rep(c("Estimador1", "Estimador2", "Estimador3", "Estimador4"), times = 4)
)

# Convertir el data.frame a formato ancho
varianza_crosstab <- dcast(varianza_df, Tamano ~ Estimador, value.var = "Varianza")

# Mostrar la tabla cruzada en formato kable
kable(varianza_crosstab, format = "html", table.attr = "style='width:50%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                font_size = 12, 
                position = "center")
Tamano Estimador1 Estimador2 Estimador3 Estimador4
20 0.8571036 162.8809 1.2184126 12.382892
50 0.3204755 406.5021 0.4926747 12.161861
100 0.1600932 819.6182 0.2493378 14.476345
1000 0.0155735 8291.8879 0.0247583 9.934573

Como se evidencia en la Tabla 3, los estimadores consistentes son \(\hat{\theta}_1\) y \(\hat{\theta}_3\) pues su varianza a medida que aumenta el numero de muestras es cercana a cero.

Boxplot por iteraciones de cada estimador.

Finalmente la figura 2 muestra como a medida que se aumenta la cantidad de simulaciones, la mediana de los estimadores se sitĂºa mas cerca del valor real al tiempo que su varianza se ve reducida. Los estimadores que disponen de un mejor sesgo son \(\hat{\theta}_1\) y \(\hat{\theta}_3\), al igual que el que presenta mayor variaciĂ³n

library(ggplot2)
library(plotly)
library(reshape2)

# Crear un data frame que contenga todas las muestras
muestras_totales <- rbind(
  data.frame(Tamano = "n = 20", muestras_20),
  data.frame(Tamano = "n = 50", muestras_50),
  data.frame(Tamano = "n = 100", muestras_100),
  data.frame(Tamano = "n = 1000", muestras_1000)
)

# Convertir el data frame a formato largo para ggplot
muestras_largas <- melt(muestras_totales, id.vars = "Tamano", variable.name = "Estimador")

# Cambiar los nombres de las etiquetas de los estimadores
muestras_largas$Estimador <- factor(muestras_largas$Estimador, 
                                    levels = c("Estimador1", "Estimador2", "Estimador3", "Estimador4"),
                                    labels = c(expression("Est.1"),
                                               expression("Est.2"),
                                               expression("Est.3"),
                                               expression("Est.4")))

# Crear el boxplot usando ggplot2
p <- ggplot(muestras_largas, aes(x = Estimador, y = value, color = Estimador)) +
  geom_boxplot() +
  facet_wrap(~ Tamano, scales = "free") + 
  labs(
    x = "Estimadores",
    y = "Valor"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.title = element_text(size = 9),
    axis.text = element_text(size = 9, angle = 0, hjust = 1),
    strip.text = element_text(size = 10),
    panel.spacing = unit(2, "lines")  # Espacio entre paneles
  ) +
  geom_hline(yintercept = theta, color = "red", linetype = "dashed")

# Convertir a plotly para hacerlo interactivo.
ggplotly(p)

Fig.2 Varianzas por estimador por nĂºmero de simulaciones.