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.
Cargar librerias
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(mosaic)
## Warning: package 'mosaic' was built under R version 4.0.3
## Registered S3 method overwritten by 'mosaic':
## method from
## fortify.SpatialPolygonsDataFrame ggplot2
##
## The 'mosaic' package masks several functions from core packages in order to add
## additional features. The original behavior of these functions should not be affected by this.
##
## Attaching package: 'mosaic'
## The following object is masked from 'package:Matrix':
##
## mean
## The following object is masked from 'package:ggplot2':
##
## stat
## The following objects are masked from 'package:dplyr':
##
## count, do, tally
## The following objects are masked from 'package:stats':
##
## binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
## quantile, sd, t.test, var
## The following objects are masked from 'package:base':
##
## max, mean, min, prod, range, sample, sum
library(readr)
library(ggplot2)
library(knitr)
library(fdth)
##
## Attaching package: 'fdth'
## The following objects are masked from 'package:mosaic':
##
## sd, var
## The following objects are masked from 'package:stats':
##
## sd, var
library(gtools)
##
## Attaching package: 'gtools'
## The following object is masked from 'package:mosaic':
##
## logit
library(Rmpfr)
## Warning: package 'Rmpfr' was built under R version 4.0.3
## Loading required package: gmp
## Warning: package 'gmp' was built under R version 4.0.3
##
## Attaching package: 'gmp'
## The following object is masked from 'package:mosaic':
##
## factorize
## The following objects are masked from 'package:Matrix':
##
## crossprod, tcrossprod
## The following objects are masked from 'package:base':
##
## %*%, apply, crossprod, matrix, tcrossprod
## C code of R package 'Rmpfr': GMP using 64 bits per limb
##
## Attaching package: 'Rmpfr'
## The following object is masked from 'package:gmp':
##
## outer
## The following objects are masked from 'package:stats':
##
## dbinom, dgamma, dnbinom, dnorm, dpois, pnorm
## The following objects are masked from 'package:base':
##
## cbind, pmax, pmin, rbind
Cargar los datos
N=1000000;
edad.poblacion=round(rnorm(N, mean = 35, sd = 5), 0)
summary(edad.poblacion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10 32 35 35 38 59
paste("El valor de edad de una pobacion. Los primeros cincuenta valores ...")
## [1] "El valor de edad de una pobacion. Los primeros cincuenta valores ..."
head(edad.poblacion, 50)
## [1] 40 36 30 32 35 44 37 40 35 34 33 37 39 30 39 32 32 34 37 34 34 37 33 29 32
## [26] 32 29 42 36 31 28 33 44 33 38 28 32 39 34 32 30 37 44 21 34 25 37 32 37 29
paste("El valor de edad de una pobacion. Los últimos cincuenta valores ...")
## [1] "El valor de edad de una pobacion. Los últimos cincuenta valores ..."
tail(edad.poblacion, 50)
## [1] 42 37 43 34 28 35 25 38 35 35 33 30 42 37 34 32 33 39 35 45 32 24 28 37 37
## [26] 34 32 29 35 29 30 34 27 30 36 39 34 34 32 37 40 41 35 29 29 33 36 44 29 41
media.pob=mean(edad.poblacion)
desv.std=sd(edad.poblacion)
paste("Los parámetros de la media y desviación estándard de la población")
## [1] "Los parámetros de la media y desviación estándard de la población"
media.pob; desv.std
## [1] 35.00193
## [1] 5.007664
Determinar medias y desviaciones muestrales.
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 m5
## Min. :22.00 Min. :20.00 Min. :21.00 Min. :20.00 Min. :21.0
## 1st Qu.:32.00 1st Qu.:32.00 1st Qu.:32.00 1st Qu.:32.00 1st Qu.:32.0
## Median :35.00 Median :35.00 Median :35.00 Median :35.00 Median :35.0
## Mean :35.39 Mean :35.01 Mean :35.01 Mean :34.84 Mean :35.1
## 3rd Qu.:39.00 3rd Qu.:38.00 3rd Qu.:38.00 3rd Qu.:38.00 3rd Qu.:39.0
## Max. :52.00 Max. :47.00 Max. :51.00 Max. :50.00 Max. :51.0
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
| 28 |
41 |
37 |
35 |
37 |
| 35 |
41 |
37 |
37 |
34 |
| 41 |
34 |
33 |
32 |
36 |
| 36 |
40 |
34 |
27 |
34 |
| 37 |
32 |
31 |
35 |
37 |
| 37 |
37 |
34 |
37 |
35 |
| 33 |
35 |
25 |
42 |
38 |
| 32 |
43 |
35 |
36 |
32 |
| 37 |
30 |
33 |
41 |
33 |
| 33 |
36 |
44 |
41 |
37 |
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
| 28 |
41 |
37 |
35 |
37 |
| 35 |
41 |
37 |
37 |
34 |
| 41 |
34 |
33 |
32 |
36 |
| 36 |
40 |
34 |
27 |
34 |
| 37 |
32 |
31 |
35 |
37 |
| 37 |
37 |
34 |
37 |
35 |
| 33 |
35 |
25 |
42 |
38 |
| 32 |
43 |
35 |
36 |
32 |
| 37 |
30 |
33 |
41 |
33 |
| 33 |
36 |
44 |
41 |
37 |
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
| 35.00193 |
35.386 |
0.384073 |
| 35.00193 |
35.012 |
0.010073 |
| 35.00193 |
35.012 |
0.010073 |
| 35.00193 |
34.836 |
-0.165927 |
| 35.00193 |
35.096 |
0.094073 |
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")

options(scipen = 999)
N; n;
## [1] 1000000
## [1] 500
options(scipen = 0)
summary(edad.poblacion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10 32 35 35 38 59
media.pob; desv.std
## [1] 35.00193
## [1] 5.007664
N=10; n=2
edad.poblacion=round(rnorm(N, mean = 35, sd = 5), 0)
edad.poblacion
## [1] 35 33 38 36 40 33 34 44 30 39
media.pob=mean(edad.poblacion)
desv.std=sd(edad.poblacion)
media.pob; desv.std
## [1] 36.2
## [1] 4.104198
n.combinaciones <- factorialMpfr(N) / (factorialMpfr(n) * (factorialMpfr(N-n)))
as.integer(n.combinaciones)
## [1] 45
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
| 1 |
1 |
2 |
35 |
33 |
34.0 |
36.2 |
-2.2 |
| 2 |
1 |
3 |
35 |
38 |
36.5 |
36.2 |
0.3 |
| 3 |
1 |
4 |
35 |
36 |
35.5 |
36.2 |
-0.7 |
| 4 |
1 |
5 |
35 |
40 |
37.5 |
36.2 |
1.3 |
| 5 |
1 |
6 |
35 |
33 |
34.0 |
36.2 |
-2.2 |
| 6 |
1 |
7 |
35 |
34 |
34.5 |
36.2 |
-1.7 |
| 7 |
1 |
8 |
35 |
44 |
39.5 |
36.2 |
3.3 |
| 8 |
1 |
9 |
35 |
30 |
32.5 |
36.2 |
-3.7 |
| 9 |
1 |
10 |
35 |
39 |
37.0 |
36.2 |
0.8 |
| 10 |
2 |
3 |
33 |
38 |
35.5 |
36.2 |
-0.7 |
| 11 |
2 |
4 |
33 |
36 |
34.5 |
36.2 |
-1.7 |
| 12 |
2 |
5 |
33 |
40 |
36.5 |
36.2 |
0.3 |
| 13 |
2 |
6 |
33 |
33 |
33.0 |
36.2 |
-3.2 |
| 14 |
2 |
7 |
33 |
34 |
33.5 |
36.2 |
-2.7 |
| 15 |
2 |
8 |
33 |
44 |
38.5 |
36.2 |
2.3 |
| 16 |
2 |
9 |
33 |
30 |
31.5 |
36.2 |
-4.7 |
| 17 |
2 |
10 |
33 |
39 |
36.0 |
36.2 |
-0.2 |
| 18 |
3 |
4 |
38 |
36 |
37.0 |
36.2 |
0.8 |
| 19 |
3 |
5 |
38 |
40 |
39.0 |
36.2 |
2.8 |
| 20 |
3 |
6 |
38 |
33 |
35.5 |
36.2 |
-0.7 |
| 21 |
3 |
7 |
38 |
34 |
36.0 |
36.2 |
-0.2 |
| 22 |
3 |
8 |
38 |
44 |
41.0 |
36.2 |
4.8 |
| 23 |
3 |
9 |
38 |
30 |
34.0 |
36.2 |
-2.2 |
| 24 |
3 |
10 |
38 |
39 |
38.5 |
36.2 |
2.3 |
| 25 |
4 |
5 |
36 |
40 |
38.0 |
36.2 |
1.8 |
| 26 |
4 |
6 |
36 |
33 |
34.5 |
36.2 |
-1.7 |
| 27 |
4 |
7 |
36 |
34 |
35.0 |
36.2 |
-1.2 |
| 28 |
4 |
8 |
36 |
44 |
40.0 |
36.2 |
3.8 |
| 29 |
4 |
9 |
36 |
30 |
33.0 |
36.2 |
-3.2 |
| 30 |
4 |
10 |
36 |
39 |
37.5 |
36.2 |
1.3 |
| 31 |
5 |
6 |
40 |
33 |
36.5 |
36.2 |
0.3 |
| 32 |
5 |
7 |
40 |
34 |
37.0 |
36.2 |
0.8 |
| 33 |
5 |
8 |
40 |
44 |
42.0 |
36.2 |
5.8 |
| 34 |
5 |
9 |
40 |
30 |
35.0 |
36.2 |
-1.2 |
| 35 |
5 |
10 |
40 |
39 |
39.5 |
36.2 |
3.3 |
| 36 |
6 |
7 |
33 |
34 |
33.5 |
36.2 |
-2.7 |
| 37 |
6 |
8 |
33 |
44 |
38.5 |
36.2 |
2.3 |
| 38 |
6 |
9 |
33 |
30 |
31.5 |
36.2 |
-4.7 |
| 39 |
6 |
10 |
33 |
39 |
36.0 |
36.2 |
-0.2 |
| 40 |
7 |
8 |
34 |
44 |
39.0 |
36.2 |
2.8 |
| 41 |
7 |
9 |
34 |
30 |
32.0 |
36.2 |
-4.2 |
| 42 |
7 |
10 |
34 |
39 |
36.5 |
36.2 |
0.3 |
| 43 |
8 |
9 |
44 |
30 |
37.0 |
36.2 |
0.8 |
| 44 |
8 |
10 |
44 |
39 |
41.5 |
36.2 |
5.3 |
| 45 |
9 |
10 |
30 |
39 |
34.5 |
36.2 |
-1.7 |
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: 36.2 y la media de la edad de la distribución muestral es: 36.2"
Interpretacion
Lo primero es cargar las librerias
Para despues cargar los datos para poder experimentar con una población de 1000000 de edades de personas, para sacar el valor de edad de una pobacion. Los primeros cincuenta valores y los ultimos 50.
Para despues sacar los parámetros de la media y desviación estándard de la población.
Despues determinar medias y desviaciones muestrales y sacar las muestras de la población. Los primeros diez de 500 registros y los ultimos 500.
Visualizando la población y la muestra de la edad de las 5 muestras.
Y por ultimo hacer una tabla con los datos siguientes datos “Muestra”, “Pos.1”, “Pos.2”, “Valor.1”, “Valor.2”, “Media muestra”, “Media pob.”, “Error”.
Y sacar La media poblacional es: 33.9 y la media de la edad de la distribución muestral es: 33.9.