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
m1 m2 m3 m4 m5
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
m1 m2 m3 m4 m5
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
Media.Poblacion Media.Muestras Errores
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
Muestra Pos.1 Pos.2 Valor.1 Valor.2 Media muestra Media pob. Error
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"