Descripción del fichero

En este documento se presenta una simulación en R cuyo objetivo es analizar el comportamiento de la media muestral como estimador de la media poblacional. Para ello, se genera una población artificial con distribución normal conocida y se extraen múltiples muestras de tamaño fijo, calculando la media de cada una. A partir de estas medias muestrales se estudia su distribución y se construye una sucesión de medias progresivas, que permite observar empíricamente cómo, al aumentar la cantidad de muestras consideradas, el promedio de las medias muestrales se aproxima a la media de la población. El análisis ilustra de manera sencilla y visual la idea de insesgadez de la media muestral y su vínculo con la ley de los grandes números.

Implementación

Comenzamos definiendo las variables que estarán involucradas en nuestro problema: el tamaño de la población, la cantidad de muestras que vamos a extraer, el tamaño de cada muestra y la población simulada, que en este caso seguirá una distribución normal.

set.seed(1)

tamano_poblacion  <- 10000
cantidad_muestras <- 500
tamano_muestra    <- 50
poblacion         <- rnorm(tamano_poblacion, mean = 5, sd = 1)
media_poblacional <- mean(poblacion)
print(paste("Media poblacional:", media_poblacional))
## [1] "Media poblacional: 4.99346296053834"

En este experimento, la población simulada tiene media verdadera igual a 5, pero la media muestral de la población generada, media_poblacional, resulta ser aproximadamente 4.993463. Este será el valor de referencia frente al cual compararemos las medias de las muestras.

A continuación, generamos muchas muestras de la población y calculamos su media. Para ello usamos la función replicate(), que permite repetir una misma instrucción varias veces y devolver el resultado en un vector.

media_muestras <- replicate(
  cantidad_muestras,
  mean(sample(poblacion, size = tamano_muestra))
)

# Comparamos el promedio de las medias muestrales con la media poblacional
mean(media_muestras)
## [1] 4.997245

El valor mean(media_muestras) es el promedio de las medias muestrales. En un experimento de este tipo esperamos que sea cercano a media_poblacional, lo que es coherente con que la media muestral sea un estimador insesgado de la media poblacional.

Si exploramos los datos de las medias muestrales, podemos ver cómo se distribuyen alrededor de la media poblacional.

hist(
  media_muestras,
  main = "Distribución de las medias muestrales",
  xlab = "Media muestral"
)
abline(v = media_poblacional, col = "red", lwd = 2)

En el histograma observamos que las medias muestrales se concentran alrededor de 4.993. La línea roja marca el valor de la media poblacional. Esto ilustra que, si bien cada media muestral es aleatoria, en promedio se ubican alrededor de la verdadera media de la población.

Ahora queremos analizar cómo se comporta el promedio de las medias muestrales a medida que aumentamos la cantidad de muestras consideradas. Para ello construimos lo que llamaremos una media progresiva.

El vector media_progresiva se define de la siguiente manera:

En términos matemáticos, si denotamos por \(\bar X_1, \bar X_2, \dots, \bar X_k\) las medias muestrales, definimos la sucesión \[ M_k = \frac{1}{k}\sum_{i=1}^k \bar X_i. \] Si la media muestral es un buen estimador, esperamos que \(M_k\) se acerque a la media poblacional a medida que \(k\) crece. Esta idea está vinculada con la ley de los grandes números.

Construimos esta sucesión de manera vectorizada usando cumsum() (suma acumulada) y seq_along() (índices de las posiciones del vector).

media_progresiva <- cumsum(media_muestras) / seq_along(media_muestras)
head(media_progresiva)
## [1] 4.941085 4.992469 4.925269 4.970234 4.943859 4.959121
tail(media_progresiva)
## [1] 4.997375 4.996827 4.996665 4.996722 4.996977 4.997245

La función cumsum(media_muestras) devuelve un vector donde cada posición contiene la suma de las medias muestrales hasta ese punto. Al dividir cada una de esas sumas acumuladas por el índice correspondiente (seq_along(media_muestras)), obtenemos el promedio de las medias muestrales hasta ese instante.

Representamos gráficamente la sucesión \(M_k\) y la comparamos con la media poblacional.

plot(
  media_progresiva,
  type = "l",
  xlab = "Número de muestras acumuladas (k)",
  ylab = "Media progresiva M_k",
  main = "Convergencia de la media progresiva a la media poblacional"
)
abline(h = media_poblacional, col = "red", lwd = 2)

En el gráfico se aprecia que la media progresiva comienza con cierta variabilidad, pero se va estabilizando en torno al valor 4.993 a medida que aumenta el número de muestras consideradas. Esto ilustra empíricamente que:

  1. La media muestral se distribuye alrededor de la media poblacional (no presenta sesgo sistemático).
  2. A medida que usamos más información (más muestras), el promedio de las medias muestrales se aproxima al valor verdadero de la media de la población, reduciendo la variabilidad.

En conjunto, esta simulación apoya la idea de que la media muestral es un buen estimador de la media poblacional: es insesgado y, al aumentar el tamaño de la muestra o la cantidad de muestras, las estimaciones se concentran cada vez más cerca del valor verdadero.