Стратифицированная выборка в R (с примерами)


Исследователи часто берут образцы из населения и используют данные из выборки, чтобы сделать выводы о населении в целом.

Одним из широко используемых методов выборки является стратифицированная случайная выборка , при которой население разбивается на группы, и определенное количество членов из каждой группы случайным образом отбирается для включения в выборку.

В этом руководстве объясняется, как выполнить стратифицированную случайную выборку в R.

Пример: стратифицированная выборка в R

Средняя школа состоит из 400 учеников, которые являются первокурсниками, второкурсниками, младшими или старшими. Предположим, мы хотим взять стратифицированную выборку из 40 учащихся, чтобы в выборку было включено по 10 учащихся каждого класса.

В следующем коде показано, как создать образец фрейма данных для 400 учащихся:

#make this example reproducible
set.seed(1)

#create data frame
df <- data.frame(grade = rep(c('Freshman', 'Sophomore', 'Junior', 'Senior'), each =100),
 gpa = rnorm(400, mean=85, sd=3))

#view first six rows of data frame
head(df)

 grade gpa
1 Freshman 83.12064
2 Freshman 85.55093
3 Freshman 82.49311
4 Freshman 89.78584
5 Freshman 85.98852
6 Freshman 82.53859

Стратифицированная выборка с использованием количества строк

В следующем коде показано, как использовать функции group_by() и sample_n() из пакета dplyr для получения стратифицированной случайной выборки из 40 учащихся по 10 учащихся в каждом классе:

library(dplyr)

#obtain stratified sample
strat_sample <- df %>%
 group_by(grade) %>%
 sample_n (size=10)

#find frequency of students from each grade
table(strat_sample$grade)

 Freshman Junior Senior Sophomore 
 10 10 10 10

Стратифицированная выборка с использованием доли строк

В следующем коде показано, как использовать функции group_by() и sample_frac() из пакета dplyr для получения стратифицированной случайной выборки, в которой мы случайным образом выбираем 15% учащихся из каждого класса:

library(dplyr)

#obtain stratified sample
strat_sample <- df %>%
 group_by(grade) %>%
 sample_frac (size=.15)

#find frequency of students from each grade
table(strat_sample$grade)

 Freshman Junior Senior Sophomore 
 15 15 15 15 

Дополнительные ресурсы

Типы методов отбора проб
Кластерная выборка в R
Систематическая выборка в R