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
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