Interpretar teorema de límite central
Se interpreta el teorema de límite central
library(cowplot) # Gráficos
library(ggplot2) # Gráfico
library(mosaic)
library(dplyr) # Para procesar filtrar ordenar con arrange
library(knitr)
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
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 edad
p.media <- mean(personas$edad)
p.media
## [1] 28.89
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
}
g <- f.graf.hist.dens(personas, p.media)
# g
m1 <- data.frame(edad = sample(personas$edad, size = 20, replace = FALSE))
# m1
m1.media <- mean(m1$edad)
m1.media
## [1] 28.4
La diferencia entre media poblacional y media muestral.
err.muestral <- p.media - m1.media
err.muestral
## [1] 0.49
g1 <- f.graf.hist.dens(m1, m1.media)
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
m2.media <- mean(m2$edad)
m2.media
## [1] 29.4
La diferencia entre media poblacional y media muestral.
err.muestral <- p.media - m2.media
err.muestral
## [1] -0.51
g2 <- f.graf.hist.dens(m2, m2.media)
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
m3.media <- mean(m3$edad)
m3.media
## [1] 29.5
La diferencia entre media poblacional y media muestral.
err.muestral <- p.media - m3.media
err.muestral
## [1] -0.61
g3 <- f.graf.hist.dens(m2, m3.media)
plot_grid(g, g1, g2, g3, nrow = 2, ncol=2)
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
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.
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)
}
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
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")
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 |
medias.muestrales <- mean(muestras$medias)
medias.muestrales
## [1] 28.666
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`.