Objetivo Simular el teorema del limite central.
Descripcion 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.
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.3
##
## 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)
## Warning: package 'readr' was built under R version 4.0.3
library(ggplot2) # Para gráficos
library(knitr) # Para formateo de datos
## Warning: package 'knitr' was built under R version 4.0.3
library(fdth) # Para tablas de frecuencias
## Warning: package 'fdth' was built under R version 4.0.3
##
## 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) # Para combinaciones y permutaciones
## Warning: package 'gtools' was built under R version 4.0.3
##
## Attaching package: 'gtools'
## The following object is masked from 'package:mosaic':
##
## logit
library(Rmpfr) # Para factoriales de números muy grandes
## 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
N <- 1000000;
edad.poblacion <- round(rnorm(N, mean = 35, sd = 5), 0)
summary(edad.poblacion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8 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] 28 35 31 42 37 36 25 40 25 34 31 34 33 42 39 35 33 33 27 32 39 30 27 38 36
## [26] 40 31 28 38 35 25 34 33 34 30 28 42 40 33 30 36 34 29 32 32 42 36 42 32 39
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] 35 32 30 25 38 42 40 38 30 36 40 37 24 28 33 38 38 41 28 31 30 39 47 41 43
## [26] 34 36 31 38 45 33 32 27 40 27 39 35 38 31 34 38 38 37 45 32 33 36 34 31 39
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.00175
## [1] 5.011395
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. :20.00 Min. :20.00 Min. :23.00 Min. :20.00
## 1st Qu.:31.00 1st Qu.:32.00 1st Qu.:32.00 1st Qu.:31.00
## Median :35.00 Median :35.00 Median :35.00 Median :35.00
## Mean :34.68 Mean :35.01 Mean :35.21 Mean :35.15
## 3rd Qu.:38.00 3rd Qu.:38.00 3rd Qu.:39.00 3rd Qu.:39.00
## Max. :48.00 Max. :48.00 Max. :49.00 Max. :49.00
## m5
## Min. :21.00
## 1st Qu.:31.00
## Median :35.00
## Mean :34.84
## 3rd Qu.:38.00
## Max. :52.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
29 |
36 |
32 |
35 |
37 |
34 |
42 |
32 |
30 |
32 |
31 |
31 |
32 |
39 |
35 |
23 |
30 |
33 |
39 |
35 |
36 |
33 |
33 |
34 |
26 |
41 |
37 |
31 |
44 |
37 |
41 |
36 |
34 |
38 |
34 |
37 |
29 |
30 |
25 |
36 |
29 |
31 |
30 |
33 |
22 |
30 |
38 |
33 |
32 |
40 |
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
29 |
36 |
32 |
35 |
37 |
34 |
42 |
32 |
30 |
32 |
31 |
31 |
32 |
39 |
35 |
23 |
30 |
33 |
39 |
35 |
36 |
33 |
33 |
34 |
26 |
41 |
37 |
31 |
44 |
37 |
41 |
36 |
34 |
38 |
34 |
37 |
29 |
30 |
25 |
36 |
29 |
31 |
30 |
33 |
22 |
30 |
38 |
33 |
32 |
40 |
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.00175 |
34.684 |
-0.317754 |
35.00175 |
35.012 |
0.010246 |
35.00175 |
35.214 |
0.212246 |
35.00175 |
35.150 |
0.148246 |
35.00175 |
34.838 |
-0.163754 |
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) # 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.
## 8 32 35 35 38 59
media.pob; desv.std
## [1] 35.00175
## [1] 5.011395
N <- 10; n <- 2
edad.poblacion <- round(rnorm(N, mean = 35, sd = 5), 0)
edad.poblacion
## [1] 41 33 32 26 32 36 35 23 45 28
media.pob <- mean(edad.poblacion)
desv.std <- sd(edad.poblacion)
media.pob; desv.std
## [1] 33.1
## [1] 6.640783
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")
Las muestras
1 |
1 |
2 |
41 |
33 |
37.0 |
33.1 |
3.9 |
2 |
1 |
3 |
41 |
32 |
36.5 |
33.1 |
3.4 |
3 |
1 |
4 |
41 |
26 |
33.5 |
33.1 |
0.4 |
4 |
1 |
5 |
41 |
32 |
36.5 |
33.1 |
3.4 |
5 |
1 |
6 |
41 |
36 |
38.5 |
33.1 |
5.4 |
6 |
1 |
7 |
41 |
35 |
38.0 |
33.1 |
4.9 |
7 |
1 |
8 |
41 |
23 |
32.0 |
33.1 |
-1.1 |
8 |
1 |
9 |
41 |
45 |
43.0 |
33.1 |
9.9 |
9 |
1 |
10 |
41 |
28 |
34.5 |
33.1 |
1.4 |
10 |
2 |
3 |
33 |
32 |
32.5 |
33.1 |
-0.6 |
11 |
2 |
4 |
33 |
26 |
29.5 |
33.1 |
-3.6 |
12 |
2 |
5 |
33 |
32 |
32.5 |
33.1 |
-0.6 |
13 |
2 |
6 |
33 |
36 |
34.5 |
33.1 |
1.4 |
14 |
2 |
7 |
33 |
35 |
34.0 |
33.1 |
0.9 |
15 |
2 |
8 |
33 |
23 |
28.0 |
33.1 |
-5.1 |
16 |
2 |
9 |
33 |
45 |
39.0 |
33.1 |
5.9 |
17 |
2 |
10 |
33 |
28 |
30.5 |
33.1 |
-2.6 |
18 |
3 |
4 |
32 |
26 |
29.0 |
33.1 |
-4.1 |
19 |
3 |
5 |
32 |
32 |
32.0 |
33.1 |
-1.1 |
20 |
3 |
6 |
32 |
36 |
34.0 |
33.1 |
0.9 |
21 |
3 |
7 |
32 |
35 |
33.5 |
33.1 |
0.4 |
22 |
3 |
8 |
32 |
23 |
27.5 |
33.1 |
-5.6 |
23 |
3 |
9 |
32 |
45 |
38.5 |
33.1 |
5.4 |
24 |
3 |
10 |
32 |
28 |
30.0 |
33.1 |
-3.1 |
25 |
4 |
5 |
26 |
32 |
29.0 |
33.1 |
-4.1 |
26 |
4 |
6 |
26 |
36 |
31.0 |
33.1 |
-2.1 |
27 |
4 |
7 |
26 |
35 |
30.5 |
33.1 |
-2.6 |
28 |
4 |
8 |
26 |
23 |
24.5 |
33.1 |
-8.6 |
29 |
4 |
9 |
26 |
45 |
35.5 |
33.1 |
2.4 |
30 |
4 |
10 |
26 |
28 |
27.0 |
33.1 |
-6.1 |
31 |
5 |
6 |
32 |
36 |
34.0 |
33.1 |
0.9 |
32 |
5 |
7 |
32 |
35 |
33.5 |
33.1 |
0.4 |
33 |
5 |
8 |
32 |
23 |
27.5 |
33.1 |
-5.6 |
34 |
5 |
9 |
32 |
45 |
38.5 |
33.1 |
5.4 |
35 |
5 |
10 |
32 |
28 |
30.0 |
33.1 |
-3.1 |
36 |
6 |
7 |
36 |
35 |
35.5 |
33.1 |
2.4 |
37 |
6 |
8 |
36 |
23 |
29.5 |
33.1 |
-3.6 |
38 |
6 |
9 |
36 |
45 |
40.5 |
33.1 |
7.4 |
39 |
6 |
10 |
36 |
28 |
32.0 |
33.1 |
-1.1 |
40 |
7 |
8 |
35 |
23 |
29.0 |
33.1 |
-4.1 |
41 |
7 |
9 |
35 |
45 |
40.0 |
33.1 |
6.9 |
42 |
7 |
10 |
35 |
28 |
31.5 |
33.1 |
-1.6 |
43 |
8 |
9 |
23 |
45 |
34.0 |
33.1 |
0.9 |
44 |
8 |
10 |
23 |
28 |
25.5 |
33.1 |
-7.6 |
45 |
9 |
10 |
45 |
28 |
36.5 |
33.1 |
3.4 |
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: 33.1 y la media de la edad de la distribución muestral es: 33.1"