U2A8

HéctorZapata

27/11/2020

Muestreo en estadística

Al elegir una muestra aleatoria se espera conseguir que sus propiedades sean extrapolables a la población. Este proceso permite ahorrar recursos, y a la vez obtener resultados parecidos a los que se alcanzarían si se realizase un estudio de toda la población. En las investigaciones llevadas por empresarios y de la medicina se usa muestreo extensivamente en recoger información sobre poblaciones.

Cabe mencionar que para que el muestreo sea válido y se pueda realizar un estudio adecuado (que consienta no solo hacer estimaciones de la población sino estimar también los márgenes de error correspondientes a dichas estimaciones), debe cumplir ciertos requisitos. Nunca podremos estar enteramente seguros de que el resultado sea una muestra representativa, pero sí podemos actuar de manera que esta condición se alcance con una probabilidad alta.

En el muestreo, si el tamaño de la muestra es más pequeño que el tamaño de la población, se puede extraer dos o más muestras de la misma población. Al conjunto de muestras que se pueden obtener de la población se denomina espacio muestral. La variable que asocia a cada muestra su probabilidad de extracción, sigue la llamada distribución muestral.

Muestreo aleatorio simple

Para lo cual usaremos datos de crímenes

crime <- data.frame(crimtab)

dimensiones de la matriz

dim(crime)
## [1] 924   3

Selección de la muestra * Muestreo Aleatorio Simple (M.A.S.) Tomar una muestra de 30 de la población

set.seed(1)
n <- 10
muestramia <- sample(1:nrow(crime), size=n, replace=TRUE)
muestramia
##  [1] 836 679 129 509 471 299 270 187 307 597

Asignar los elementos de la muestra al marco de datos

crimemuestramia <- crime[muestramia, ]
head(crimemuestramia)
##     Var1   Var2 Freq
## 836 13.1  190.5    0
## 679   10 182.88    0
## 129  9.6 149.86    0
## 509  9.8 172.72    0
## 471 10.2 170.18    0
## 299  9.8 160.02    0

Ahora usamos tidyverse dplyr

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
set.seed(1)
crimemuestramia2 <- crime %>%
  sample_n(size=n, replace=FALSE)
head(crimemuestramia2)
##   Var1   Var2 Freq
## 1 13.1  190.5    0
## 2   10 182.88    0
## 3  9.6 149.86    0
## 4  9.8 172.72    0
## 5 10.2 170.18    0
## 6  9.8 160.02    0

Muestreo ponderado (pesos)

crimemuestramia3 <- crime %>%  # eso se llama "pipe"
  sample_n(size=n, weight=Freq)
head(crimemuestramia3)
##   Var1   Var2 Freq
## 1 11.4 172.72   10
## 2 11.5 172.72   25
## 3   11 154.94   12
## 4 10.5 149.86    1
## 5 12.1 170.18   28
## 6 10.8 162.56   10

Muestreo con ponderación usando la fracción

crimenes <- data.frame(crimtab)
n <- 50
crime <- sample(1:nrow(crimenes), size=n, replace=FALSE  )
crime
##  [1] 105 729 878 485 677 802 874 382 601 801 852 326 330 554 422 111 404 532 506
## [20] 556 889 343 582 121  40 684 537 375 248 198 378  39 435 810 390 280 672 526
## [39] 642  45 402  22 718 742 193 371 499 104 913 767

Para extraer el subconjuto de la muestra

crimes <- crimenes[crime,]
head(crimes)
##     Var1   Var2 Freq
## 105 11.4 147.32    0
## 729 10.8 185.42    0
## 878 13.1 193.04    0
## 485 11.6 170.18   38
## 677  9.8 182.88    0
## 802  9.7  190.5    0

Utilizando la fracción

Entonces se va a muestrear una fracción de 0.04 de la población (4%) que representa 6 flores que se muestrearon 100% al azar

library(dplyr)
crime.pesos <- crimenes %>%
  sample_frac(0.04)
head(crime.pesos); dim(crime.pesos)
##   Var1   Var2 Freq
## 1 12.3 170.18   13
## 2 13.3  190.5    0
## 3 12.1  177.8   10
## 4   12  177.8    8
## 5  9.6 193.04    0
## 6  9.6 170.18    0
## [1] 37  3

Muestreo usando la base de datos de iris

Referencia de los datos usados: https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/iris.html

Marco muestral Esta base de datos tiene 150 filas y 5 columnas de 3 especies de flores de lirio llamadas: Setosa, Virginica y Versicolor.

Para conocer las dimensiones de estos datos se usa “dim”

dim(iris)
## [1] 150   5
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Variables categóricas

levels(as.factor(iris$Species))
## [1] "setosa"     "versicolor" "virginica"
lirios <- iris
lirios$id <- 1:150
lirios[1:5, 4:6]
##   Petal.Width Species id
## 1         0.2  setosa  1
## 2         0.2  setosa  2
## 3         0.2  setosa  3
## 4         0.2  setosa  4
## 5         0.2  setosa  5

Muestreo aleatorio simple sin remplazamiento

set.seed(20170704)
sample(lirios$id, size=6, replace = FALSE  )
## [1] 142 125  81 101  82  41

Muestreo aleatorio simple con remplazamiento

set.seed(20170704)
sample(lirios$id, size=30, replace = TRUE  )
##  [1] 142 125  81 101  82  41  80 110 131 116  62  56  92  28 125  59 102  23  76
## [20]  23  49  75 149  98  56  72 135  69  57 101

Muestreo por conglomerados

set.seed(20170701)
x <- 1:7 ; x
## [1] 1 2 3 4 5 6 7

Para muestrear x

sample(x, size= 6, replace= FALSE)
## [1] 7 1 6 3 4 5

Muestreo estratificado

set.seed(1)
sample_iris <- iris %>%
  group_by(Species) %>%
  sample_n(10)

sample_iris
## # A tibble: 30 x 5
## # Groups:   Species [3]
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
##  1          4.6         3.1          1.5         0.2 setosa 
##  2          4.4         3            1.3         0.2 setosa 
##  3          5.1         3.5          1.4         0.2 setosa 
##  4          5.5         4.2          1.4         0.2 setosa 
##  5          4.6         3.6          1           0.2 setosa 
##  6          4.4         3.2          1.3         0.2 setosa 
##  7          4.3         3            1.1         0.1 setosa 
##  8          5.1         3.5          1.4         0.3 setosa 
##  9          5.2         4.1          1.5         0.1 setosa 
## 10          5.4         3.4          1.7         0.2 setosa 
## # ... with 20 more rows

TAREA

library(readxl)
library(DT)
datos <- read_excel("~/Probabilidad y Estadistica/demografia_entidad.xls",6)
datatable(datos)
poblacion <- data.frame(datos[,2:5])
dim(poblacion)
## [1] 33  4

Selección de muestra

Muestreo aleatorio simple (M.A.S) Tomar una muestra de 30 de la población

n <- 30
primeramuestra <- sample(1:nrow(poblacion),size=n,replace=FALSE)
primeramuestra
##  [1]  6 10 32 33 15 20 28 26 12 23 30  8 25 24  7 31 27 22 14  2 13 29 17 11  1
## [26]  3 16 18  4 21

Asignar los elementos de la muestra al marco de datos

poblacionprimeramuestra <- poblacion[primeramuestra,]
datatable(poblacionprimeramuestra)

Muestreo sin remplazo

poblacionsegundamuestra <- poblacion %>%
  sample_n(size=n,replace=FALSE)
datatable(poblacionsegundamuestra)

Ponderación usando el INDICE a.

poblacionterceramuestra <- poblacion %>%
  sample_n(size = n, weight = INDICE.a.)

head(poblacionterceramuestra)
##   POBLACION.TOTAL HOMBRES MUJERES INDICE.a.
## 1        15174272 7398283 7775989  95.14266
## 2         8873017 4245993 4627024  91.76510
## 3         2238818 1101114 1137704  96.78387
## 4         4793406 2350373 2443033  96.20717
## 5         1084957  541034  543923  99.46886
## 6         1169825  565889  603936  93.70016

Muestreo con ponderación usando la fracción

poblaciones <- data.frame(datos[,2:5])
n <- 30
poblacion <- sample(1:nrow(poblaciones), size=n, replace=FALSE  )
poblacion
##  [1] 19 26  3 11  1 14 22  6 20  9  5 28 17 31 25  7 27 33 16 12 29 24  2  8 32
## [26] 13 30 15  4 10

Para extraer el subconjunto de la muestra

population <- poblaciones[poblacion,]
datatable(population)

Utilizando la fracción

poblacion.pesos <- poblaciones %>%
  sample_frac(0.1)
datatable(poblacion.pesos);dim(poblacion.pesos)
## [1] 3 4