Objetivo

Simular el teorema del límite central.

Descripción

Con un conjunto de datos y librerías adecuadas, simular el valor de la media muestral comparado con el valor de la media poblacional asociando con ello con el teorema del límite central.

1.- Cargar librerias

set.seed(2021)
library(dplyr)
library(mosaic)
library(readr)
library(ggplot2)  # Para gráficos
library(knitr)    # Para formateo de datos
library(fdth)     # Para tablas de frecuencias
library(gtools)   # Para combinaciones y permutaciones
library(Rmpfr)    # Para factoriales de números muy grandes

2.- Carga de datos.

Experimentar con una población de 1,000,000 de edades de personas.

  • Se simula una población bajo una condición de distribución normal de N=1000000 (un millón) de personas con media de edad de 35 años y desviación estándar de 5.
  • Se muestran los parámetros principales de la edad de la población.
N <- 1000000; 

edad.poblacion <- round(rnorm(N, mean = 35, sd = 5), 0)

summary(edad.poblacion)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      12      32      35      35      38      59
  • Valores de edades de la poblacion. Los primeros 50 …..
head(edad.poblacion, 50) 
##  [1] 34 38 37 37 39 25 36 40 35 44 30 34 36 43 43 26 43 36 42 43 30 34 29 41 27
## [26] 36 28 33 35 41 25 28 40 28 32 27 29 28 35 38 36 44 33 46 35 31 42 31 37 38
  • Valores de edades de la poblacion. Los ultimos 50 …..
tail(edad.poblacion, 50)
##  [1] 36 38 31 38 34 41 41 30 34 41 42 36 37 36 31 40 35 36 28 41 25 43 30 29 32
## [26] 29 40 32 40 38 29 29 35 32 26 32 39 34 32 36 39 35 42 36 29 32 32 35 39 37
  • Parametros de la media y desviacion estandar de la poblacion.
media.pob <- mean(edad.poblacion)
desv.std <- sd(edad.poblacion)

media.pob; desv.std
## [1] 35.00221
## [1] 5.014388

Determinar medias y desviaciones muestrales.

  • Determinar cinco muestras de n=500 casos por medio de la función sample(), se guardan en un data.frame llamado muestras.
  • Se visualizan los estadísticos principales por medio de la función summary()
  • Se utiliza un ciclo para determinar las medias de cada muestra.
  • Se construye un data frame con los valores de los errores estadísticos
n <- 500
muestras <- data.frame(m1=sample(edad.poblacion, n),
                       m2=sample(edad.poblacion, n),
                       m3=sample(edad.poblacion, n),
                       m4=sample(edad.poblacion, n),
                       m5=sample(edad.poblacion, n))

summary(muestras)
##        m1              m2              m3              m4       
##  Min.   :21.00   Min.   :21.00   Min.   :15.00   Min.   :20.00  
##  1st Qu.:31.00   1st Qu.:32.00   1st Qu.:32.00   1st Qu.:32.00  
##  Median :35.00   Median :36.00   Median :35.00   Median :35.00  
##  Mean   :34.61   Mean   :35.03   Mean   :34.82   Mean   :35.06  
##  3rd Qu.:38.00   3rd Qu.:38.00   3rd Qu.:38.00   3rd Qu.:38.00  
##  Max.   :50.00   Max.   :51.00   Max.   :51.00   Max.   :52.00  
##        m5       
##  Min.   :23.00  
##  1st Qu.:32.00  
##  Median :35.00  
##  Mean   :34.85  
##  3rd Qu.:38.00  
##  Max.   :47.00
kable(head(muestras, 10), caption = "Muestras de la población. Los primeros diez de 500 registros")
Muestras de la población. Los primeros diez de 500 registros
m1 m2 m3 m4 m5
36 35 43 41 42
35 41 31 32 25
33 34 34 35 35
38 37 36 31 35
41 43 26 26 41
38 40 30 33 36
42 30 35 29 33
36 37 44 44 35
36 41 28 33 41
29 38 39 35 34
kable(head(muestras, 10), caption = "Muestras de la población. Los últimos diez de 500 registros")
Muestras de la población. Los últimos diez de 500 registros
m1 m2 m3 m4 m5
36 35 43 41 42
35 41 31 32 25
33 34 34 35 35
38 37 36 31 35
41 43 26 26 41
38 40 30 33 36
42 30 35 29 33
36 37 44 44 35
36 41 28 33 41
29 38 39 35 34
medias <- 0
error <- 0

for(i in 1:5) {
  medias[i] <- mean(muestras[,i])
  error[i] <- medias[i] - media.pob
}

error.muestreo <- data.frame(Media.Poblacion = media.pob, Media.Muestras = medias, Errores = error)

kable(error.muestreo, caption = "Error de media de edad de cada muestra con respecto a la media de la población")
Error de media de edad de cada muestra con respecto a la media de la población
Media.Poblacion Media.Muestras Errores
35.00221 34.610 -0.392206
35.00221 35.028 0.025794
35.00221 34.824 -0.178206
35.00221 35.060 0.057794
35.00221 34.850 -0.152206

Visualizando la poblacion y la muestra.

hist(edad.poblacion, main = "Histrograma de la edad de la población")

hist(muestras$m1, main = "Histrograma de la edad de la muestra 1", ylab = "Edades", xlab="Observacaiones")

hist(muestras$m2, main = "Histrograma de la edad de la muestra 2", ylab = "Edades", xlab="Observacaiones")

hist(muestras$m3, main = "Histrograma de la edad de la muestra 3", ylab = "Edades", xlab="Observacaiones")

hist(muestras$m4, main = "Histrograma de la edad de la muestra 4", ylab = "Edades", xlab="Observacaiones")

hist(muestras$m5, main = "Histrograma de la edad de la muestra 5", ylab = "Edades", xlab="Observacaiones")

Con el ejercicio anterior, anterior se encontró el error de muestreo y se presentaron los resultados de comparar un estadístico para una muestra (como la media de la muestra) con la media de la población; bajo este contexto, cuando se usa la media muestral para estudiar la media de la población, ¿cómo se determina la exactitud de la estimación?, es decir, como saber si la media de la muestra es un estimador real con respecto a la población.

Para responder estas preguntas, primero hay que precisar el concepto de distribución muestral de la media: es la distribución de probabilidad de todas las posibles medias de las muestras de un determinado tamaño muestral de la población (Lind et al., 2015).

  • Se recapitulan los datos iniciales
  • N = 1000000, tamaño de la población
  • n = 500, tamaño de la muestra
  • edad.poblacion es la edad conocida y recabada de las personas.
  • media.pob es la media de toda la población,
  • desv.std es la desviación estándar de toda la población,
options(scipen = 999) # Para mostrar notación normal y no científica en el valor de N: 1e+06
N; n; 
## [1] 1000000
## [1] 500
options(scipen = 0) # Regresa a notación numérica normal 
summary(edad.poblacion)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      12      32      35      35      38      59
media.pob; desv.std
## [1] 35.00221
## [1] 5.014388
  • En el anterior ejercicio se determinaron cinco muestras y cinco errores muestrales, uno de cada muestra.
  • De acuerdo al concepto de distribución muestral de la media,
  • ¿Cual es la cantidad posibles muestras de grupos de 500 que se pueden determinar para una población de 1000000?
  • Se necesita determinar la combinaciones …
#factorialMpfr(N) / (factorialMpfr(n) * (factorialMpfr(N-n)))

Experimentar con una población de 10 de edades de personas.

Para ejemplificar el teorema de límite central se reduce la población a 10 con muestras de 2 personas.

Simulando una nueva población con los mismos valores de media de edad igual a 35 y desviación de 5.

Se determinan los nuevos parámetros de medias y desviaciones estándar de la población. * N = 10, tamaño de la población * n = 2, tamaño de la muestra

N <- 10; n <- 2

edad.poblacion <- round(rnorm(N, mean = 35, sd = 5), 0)

edad.poblacion
##  [1] 36 32 36 38 26 38 35 39 44 31
##..................................##

media.pob <- mean(edad.poblacion)
desv.std <- sd(edad.poblacion)

media.pob; desv.std
## [1] 35.5
## [1] 4.949747
  • De acuerdo al concepto distribución muestral de la media ¿cuál es el número de muestras que hay que determinar en grupos de 2 para una población de 10?
n.combinaciones <- factorialMpfr(N) / (factorialMpfr(n) * (factorialMpfr(N-n)))
as.integer(n.combinaciones)
## [1] 45
  • Ahora bien ¿cuál es el valor estadístico de la media de la edad de la primera muestra, de la segunda, de la tercera y de la 45 ava muestra.
  • Determinando muestras en grupos de 2
muestras <- cbind(1:as.integer(n.combinaciones))

muestras <- cbind(muestras, combinations(N, n, 1:N))

muestras <- cbind(muestras, edad.poblacion[muestras[,2]], edad.poblacion[muestras[,3]])

medias <- 0
error <- 0

for(i in 1:as.integer(n.combinaciones)) {
  medias[i] <- mean(muestras[i,c(4,5)])
  error[i] <- medias[i] - media.pob
}

muestras <- cbind(muestras, medias)
muestras <- cbind(muestras, media.pob)
muestras <- cbind(muestras, error)

muestras <- data.frame(muestras)

colnames(muestras) <- c("Muestra", "Pos.1", "Pos.2", "Valor.1", "Valor.2", "Media muestra", "Media pob.", "Error")

kable(muestras, caption = "Las muestras")
Las muestras
Muestra Pos.1 Pos.2 Valor.1 Valor.2 Media muestra Media pob. Error
1 1 2 36 32 34.0 35.5 -1.5
2 1 3 36 36 36.0 35.5 0.5
3 1 4 36 38 37.0 35.5 1.5
4 1 5 36 26 31.0 35.5 -4.5
5 1 6 36 38 37.0 35.5 1.5
6 1 7 36 35 35.5 35.5 0.0
7 1 8 36 39 37.5 35.5 2.0
8 1 9 36 44 40.0 35.5 4.5
9 1 10 36 31 33.5 35.5 -2.0
10 2 3 32 36 34.0 35.5 -1.5
11 2 4 32 38 35.0 35.5 -0.5
12 2 5 32 26 29.0 35.5 -6.5
13 2 6 32 38 35.0 35.5 -0.5
14 2 7 32 35 33.5 35.5 -2.0
15 2 8 32 39 35.5 35.5 0.0
16 2 9 32 44 38.0 35.5 2.5
17 2 10 32 31 31.5 35.5 -4.0
18 3 4 36 38 37.0 35.5 1.5
19 3 5 36 26 31.0 35.5 -4.5
20 3 6 36 38 37.0 35.5 1.5
21 3 7 36 35 35.5 35.5 0.0
22 3 8 36 39 37.5 35.5 2.0
23 3 9 36 44 40.0 35.5 4.5
24 3 10 36 31 33.5 35.5 -2.0
25 4 5 38 26 32.0 35.5 -3.5
26 4 6 38 38 38.0 35.5 2.5
27 4 7 38 35 36.5 35.5 1.0
28 4 8 38 39 38.5 35.5 3.0
29 4 9 38 44 41.0 35.5 5.5
30 4 10 38 31 34.5 35.5 -1.0
31 5 6 26 38 32.0 35.5 -3.5
32 5 7 26 35 30.5 35.5 -5.0
33 5 8 26 39 32.5 35.5 -3.0
34 5 9 26 44 35.0 35.5 -0.5
35 5 10 26 31 28.5 35.5 -7.0
36 6 7 38 35 36.5 35.5 1.0
37 6 8 38 39 38.5 35.5 3.0
38 6 9 38 44 41.0 35.5 5.5
39 6 10 38 31 34.5 35.5 -1.0
40 7 8 35 39 37.0 35.5 1.5
41 7 9 35 44 39.5 35.5 4.0
42 7 10 35 31 33.0 35.5 -2.5
43 8 9 39 44 41.5 35.5 6.0
44 8 10 39 31 35.0 35.5 -0.5
45 9 10 44 31 37.5 35.5 2.0
  • la media de la distribución muestral comparado con la media poblaciónal
paste("La media poblacional es: ", media.pob, " y la media de la edad de la distribución muestral es: ", mean(muestras$`Media muestra`))
## [1] "La media poblacional es:  35.5  y la media de la edad de la distribución muestral es:  35.5"

Interpretacion del ejercicio individualmente.