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.
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:
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.