Simular el teorema del límite central.
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.
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
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
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
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
media.pob <- mean(edad.poblacion)
desv.std <- sd(edad.poblacion)
media.pob; desv.std
## [1] 35.00221
## [1] 5.014388
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")
| 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")
| 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")
| 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 |
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).
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
#factorialMpfr(N) / (factorialMpfr(n) * (factorialMpfr(N-n)))
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
n.combinaciones <- factorialMpfr(N) / (factorialMpfr(n) * (factorialMpfr(N-n)))
as.integer(n.combinaciones)
## [1] 45
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")
| 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 |
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"
para poblacion de 1 millon, tenemos una media de 35 es la edad que la mayoria de la poblacion tiene, y tenemos una desviacion conforme a las edades de un valor en 5.
y precisando la poblacion nos quedan resultados iguales a los que teniamos anteriormente lo que nos indica que los resultados estan correctos.
Tenemos para poblacion de 10 personas, una media de 35.5 que nos dice que las edades de las personas estan entre los 35 y 36 años, y una desviacion de 4.94 que nos dice que tanta variacion hay entre los datos.
Comparando la media con la poblacion, no hay diferencia alguna ya que la media es 35.5 y la media en distribucion muestral tambien es 35.5, por lo tanto esta correcto el ejercicio.