Muestreo estratificado

Supongamos que tenemos un total de 400 jovenes en cuatro campamentos de refugiados en Somalia y queremos tener una muestra estratificada de 40 estudiantes

Installar y llamar paquetes

#install.packages("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
help(dplyr)

Crear data.frame

set.seed(500)
df <- data.frame(campos = rep(c('Logia', 'Melkadida', 'Boqolmayo', 'Dolo'), each=100),
                 gpa = rnorm(400, mean=41, sd=3))
head(df)
##   campos      gpa
## 1  Logia 43.90547
## 2  Logia 46.89610
## 3  Logia 43.65897
## 4  Logia 41.09162
## 5  Logia 43.84867
## 6  Logia 39.26981
tail(df)
##     campos      gpa
## 395   Dolo 42.23880
## 396   Dolo 42.30818
## 397   Dolo 39.42227
## 398   Dolo 45.05577
## 399   Dolo 41.18485
## 400   Dolo 43.29921

Obtener una muestra estratificada aleatoria de 40 estudiantes con 10 en cada grupo Usar group_by() y sample_n()

strat_sample <- df %>%
  group_by(campos) %>%
  sample_n(size=10)

strat_sample
## # A tibble: 40 × 2
## # Groups:   campos [4]
##    campos      gpa
##    <chr>     <dbl>
##  1 Boqolmayo  40.9
##  2 Boqolmayo  39.6
##  3 Boqolmayo  43.8
##  4 Boqolmayo  43.4
##  5 Boqolmayo  35.7
##  6 Boqolmayo  44.0
##  7 Boqolmayo  41.5
##  8 Boqolmayo  36.5
##  9 Boqolmayo  40.2
## 10 Boqolmayo  41.1
## # ℹ 30 more rows

Encontrar la frecuencia de jovenes por cada campo de refugiados

table(strat_sample$campos)
## 
## Boqolmayo      Dolo     Logia Melkadida 
##        10        10        10        10

Obtenrr una muestra estratificada aleatoria en donde se seleccione 15% de estudiantes en cada grupo

strat_sample <- df %>%
  group_by(campos) %>%
  sample_frac(size=.15)

Encontrar frecuencia

table(strat_sample$campos)
## 
## Boqolmayo      Dolo     Logia Melkadida 
##        15        15        15        15

Muestreo por cluster

Se quiere evaluar las sesiones para el uso de estufas de 10 capacitaciones que se dan en un dia, se van a seleccionar 4 grupos y preguntarle a cada uno de cada grupo que califique su experiencia de 1 a 10

set.seed(1000)

crear data frame, 10 grupos cada uno de 20 personas. Se crean dos variables, numero del grupo y la calificacion de 1 a 10

df <- data.frame(grupo = rep(1:10, each=20),
                 experience = rnorm(200, mean=7, sd=1))

Ver primeras seis filas y 6 ultimas filas

head(df)
##   grupo experience
## 1     1   6.554222
## 2     1   5.794143
## 3     1   7.041126
## 4     1   7.639388
## 5     1   6.213446
## 6     1   6.614511
tail(df)
##     grupo experience
## 195    10   7.427366
## 196    10   8.660847
## 197    10   7.581613
## 198    10   7.143466
## 199    10   7.343303
## 200    10   6.068509

Escoger aleatoriamente 4 grupos de 10

clusters <- sample(unique(df$grupo), size=4, replace=F)
head(clusters)
## [1]  9  7 10  4

Definir la muestra como todos los miembros que pertenecen a uno de los 4 grupos

cluster_sample <- df[df$grupo %in% clusters, ]

Confirmar cuántas personas tiene cadagrupo

table(cluster_sample$grupo)
## 
##  4  7  9 10 
## 20 20 20 20