Objetivo

Interpretar teorema de límite central

Descripción

Se interpreta el teorema de límite central

Desarrollo

Cargar librerías

library(cowplot) # Gráficos
library(ggplot2) # Gráfico
library(mosaic)
library(dplyr)  # Para procesar filtrar ordenar con arrange
library(knitr)

Crear datos de Población

Crear datos que no son distribución normal. Es un Población.

set.seed(2021)
personas <- data.frame(edad = sample(x = 18:40, size = 100, replace = TRUE))

personas$edad
##   [1] 24 23 31 24 29 37 23 23 23 31 22 32 24 26 40 29 36 35 20 31 25 21 22 39 33
##  [26] 19 36 21 38 39 22 26 23 35 28 35 23 39 23 32 19 39 35 33 32 34 34 23 22 37
##  [51] 21 25 36 20 19 34 25 26 34 26 28 34 21 23 31 32 35 26 36 33 29 19 22 27 39
##  [76] 29 39 23 29 30 18 31 38 36 30 28 26 40 28 39 21 31 33 24 18 36 30 34 21 26
stem(personas$edad)
## 
##   The decimal point is at the |
## 
##   18 | 000000
##   20 | 00000000
##   22 | 000000000000000
##   24 | 0000000
##   26 | 00000000
##   28 | 000000000
##   30 | 000000000
##   32 | 00000000
##   34 | 00000000000
##   36 | 00000000
##   38 | 000000000
##   40 | 00

Análisis descriptivo de la pobación

summary(object = personas$edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   23.00   29.00   28.89   34.00   40.00

MEdia de la pobación

MEdia de la edad

p.media <- mean(personas$edad)
p.media
## [1] 28.89

Graficar los datos

Preparamos una función

f.graf.hist.dens <- function (datos, media) {
  g <- ggplot(data = datos, aes(x = datos[,1])) +
  geom_histogram(aes(y = ..density..),
                 colour = 1, fill = "lightblue") +
  geom_density(lwd = 1.2,
               linetype = 2,
               colour = 2) +
  ggtitle(label = "Distribución", subtitle = paste("Media", media))
  g
}

Histograma de la población

g <- f.graf.hist.dens(personas, p.media)
# g

Determinar una muestra m1

m1 <- data.frame(edad = sample(personas$edad, size = 20, replace = FALSE))
# m1

Media de m1

m1.media <- mean(m1$edad)
m1.media
## [1] 28.4

Error muestral

La diferencia entre media poblacional y media muestral.

err.muestral <- p.media - m1.media
err.muestral
## [1] 0.49

Gráfica la muestra

g1 <- f.graf.hist.dens(m1, m1.media)

Determinar una muestra m2

m2 <- data.frame(edad = sample(personas$edad, size = 20, replace = FALSE))
m2
##    edad
## 1    31
## 2    22
## 3    32
## 4    24
## 5    40
## 6    26
## 7    36
## 8    31
## 9    24
## 10   33
## 11   24
## 12   33
## 13   30
## 14   34
## 15   23
## 16   34
## 17   39
## 18   23
## 19   27
## 20   22

Media de m2

m2.media <- mean(m2$edad)
m2.media
## [1] 29.4

Error muestral

La diferencia entre media poblacional y media muestral.

err.muestral <- p.media - m2.media
err.muestral
## [1] -0.51

Gráfica la muestra

g2 <- f.graf.hist.dens(m2, m2.media)

Determinar una muestra m3

m3 <- data.frame(edad = sample(personas$edad, size = 20, replace = FALSE))
m3
##    edad
## 1    28
## 2    39
## 3    23
## 4    37
## 5    20
## 6    38
## 7    29
## 8    24
## 9    40
## 10   23
## 11   36
## 12   30
## 13   28
## 14   35
## 15   20
## 16   23
## 17   39
## 18   36
## 19   23
## 20   19

Media de m3

m3.media <- mean(m3$edad)
m3.media
## [1] 29.5

Error muestral

La diferencia entre media poblacional y media muestral.

err.muestral <- p.media - m3.media
err.muestral
## [1] -0.61

Gráfica la muestra

g3 <- f.graf.hist.dens(m2, m3.media)

Histogramas de población y muestras

plot_grid(g, g1, g2, g3, nrow = 2, ncol=2)

Media de las tres muestras

c(m1.media, m2.media, m3.media)
## [1] 28.4 29.4 29.5
sum(m1.media, m2.media, m3.media)
## [1] 87.3
mean(c(m1.media, m2.media, m3.media))
## [1] 29.1

Distribución muestral de la media

Significa muchas muestras, tantas como resulte de las combinaciones tal vez infinito, para determinar la media de todas las medias de las muestras y acerca a la media de la población.

Determinar 100 muestras

nm <- 100
n <- 25

Hacerlo por un for mediante una lista

lista.muestras = as.list(NULL)
for (i in 1:nm) {
    lista.muestras[[i]] <- sample(x = personas$edad, size = n, replace = FALSE)
    
}

Convertir la lista a un dataframe

muestras <- data.frame(lista.muestras)

muestras <- data.frame(t(muestras)) # reng a columnas

colnames(muestras) <- paste0("X", 1:n)
rownames(muestras) <- paste0("M", 1:nm)

# muestras

Agregar media de cada muestra

muestras <- cbind(muestras, medias = apply(X =  muestras, 2, mean))

muestras <- cbind(muestras, err.muestral = (p.media - muestras$medias))

kable(head(muestras, 10), caption = "Distribución de muestras")
Distribución de muestras
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 medias err.muestral
M1 33 24 39 34 38 36 38 25 36 20 26 21 26 22 28 28 21 39 21 33 19 35 23 33 26 28.71 0.18
M2 23 39 23 19 38 21 22 28 33 18 36 32 24 39 35 26 34 21 21 27 21 22 33 22 26 29.34 -0.45
M3 31 23 25 39 30 19 33 23 30 35 36 23 21 37 29 22 31 40 38 35 40 36 34 21 18 27.67 1.22
M4 20 39 36 26 23 23 22 24 33 23 23 29 21 29 28 33 24 22 37 34 39 21 37 28 36 28.63 0.26
M5 29 30 30 32 34 32 21 31 18 22 35 40 24 35 32 22 34 31 22 23 20 23 37 26 21 28.81 0.08
M6 23 36 20 39 34 27 30 31 28 35 26 26 19 34 33 26 21 29 24 28 29 23 19 32 33 28.28 0.61
M7 29 23 19 34 33 29 33 28 25 22 37 21 35 26 31 36 26 30 39 31 33 19 31 28 28 28.30 0.59
M8 23 40 33 31 29 23 36 34 28 37 35 39 36 38 21 30 23 23 22 22 33 39 19 39 33 28.03 0.86
M9 24 34 18 37 33 39 19 38 31 31 34 36 28 28 36 20 19 24 30 39 26 31 18 39 21 29.05 -0.16
M10 36 26 40 21 39 23 30 37 26 31 39 22 39 33 32 31 33 21 35 21 24 35 23 22 31 28.05 0.84

Media de todas las muestras

medias.muestrales <- mean(muestras$medias)
medias.muestrales
## [1] 28.666

Histograma de la distribución de medias

g.dist <- f.graf.hist.dens(datos = data.frame(muestras$medias), media = medias.muestrales
)

g.dist
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.