Для решения этой задачи мы воспользуемся программой RStudio как пример того, насколько удобным может быть анализ данных с помощью этого приложения. А для тех, кто еще не сталкивался с этой программой – кидаем ссылочку на наш канал, где мы рекомендуем курсы. Ссылка на курс по RStudio ЗАДАЧА Вас позвали в один из филиалов крупного аналитического агентства «Неслучайные случайности». Из-за сложной эпидемиологической ситуации все 27 сотрудников этого филиала работают удаленно. Вам поручили организовать небольшой опрос, результаты которого будут использованы для проведения исследования. Однако работы у сотрудников филиала очень много, почту они просматривают крайне редко, так что отправить письмо каждому лично с просьбой пройти опрос у вас не получится. Неожиданно вы вспоминаете, что изучали различные методы формирования выборок. Вы также решаете, что трети всех сотрудников будет достаточно для получения репрезентативной выборки. Примените ваши теоретические знания на практике!

  1. Скачайте данные о сотрудниках филиала. Файл называется random_data.
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
library(readr)
library(ggplot2)
library(magrittr)

Загрузим даные эксель-файла и посмотрим, что внутри :

## # A tibble: 6 x 5
##   `Кодовый номер сотруд… Пол    Возраст Должность             `Семейное положен…
##   <chr>                  <chr>    <dbl> <chr>                 <chr>             
## 1 id001                  Мужск…      33 Руководитель аналити… Женат             
## 2 id002                  Мужск…      19 Программист           Холост            
## 3 id003                  Женск…      27 Бухгалтер             Замужем           
## 4 id004                  Мужск…      28 Аналитик              Женат             
## 5 id005                  Женск…      55 Руководитель бухгалт… Не замужем        
## 6 id006                  Мужск…      46 Представитель филиала Женат
## Warning: Use of `random_data$Должность` is discouraged. Use `Должность` instead.
## Warning: Use of `random_data$Пол` is discouraged. Use `Пол` instead.

И наше первое задание - Провести случайный отбор данных - нам нужна 1/3 от 27. Для того, чтобы при случайном отборе наши данные не менялись - зафиксируем их - а именно придумаем любое число, компьютер его запомнит и будет генерировать комбинацию случайных людей какждый раз одинаково.Вы можете изменить число - и комбинация изменится и останется посоянной при любом количестве итераций кода.

set.seed(2221)
new_data<-sample_n(random_data, 9)
  1. Проведите систематический отбор. Решайте сами, стоит ли как-нибудь упорядочивать сотрудников филиала или нет.

Что такое систематичекий отбор? Систематический отбор предполагает, что основа выборки упорядочивается по какому-либо признаку/критерию , а затем с заданным шагом извлекаются элементы.Лучшим критерием для списка людей является алфавитный порядок, но так как в нашей базе данных таких данных нет, то в качестве упорядочивания возьмем возраст сотрудников. Из пронумерованного списка через равные интервалы к отбирается заданное число респондентов. При этом шаг выборки к рассчитывается по простой формуле:N/k где N— численность генеральной совокупности, k — численность выборочной совокупности. Более конкретно про алгоритм :

Пусть N — размер генеральной совокупности. а — некоторое фиксированное число. а ∈ N. Первый элемент выборки выбирается случайным образом среди первых a элементов совокупности. Выбранное число r 1≤ r ≤a называется случайным стартом (началом), а число а — выборочным интервалом. Каждый элемент [1,2… а] имеет одинаковую вероятность быть выбранным, равную 1/а. Далее в выборку попадают элементы с шагом а.

N= 27 k= 9 a=N/k =3 - то есть пропускаем по три человека , выбираем 9 , осталось только выбраь с какого начать.

random<- random_data[order(random_data$Возраст),] #упорядочим по возрасту
rownames(random) = 1:nrow(random) # присвиваем номера
set.seed(3456)
final=random[sample(1:nrow(random), 9, replace=FALSE),useHash = (!replace && is.null(prob) && size <= n/9 && n > 1e7)] # c одинаковой вероятностью выбираем первый элемент , а затем выбираем 9 элементов с шагом в 3 человека
#Проиллюстрируем получившуюся выборку
ggplot(data=final)+geom_bar(aes(x=final$Должность, fill = final$Пол),position='dodge')+coord_flip()+xlab("Количество")+ylab("Должность")+ labs(title = "Соотношение должности и пола")

4.Проведите стратифицированный отбор. Решайте сами, по какому/каким признаку/признакам разделить сотрудников. В данном случае случайная выборка с коэффициентом отбора 50 про Стратифицированная (расслоенная) выборка — это процесс, состоящий из двух этапов, в котором совокупность делится на подгруппы . Слои должны взаимно исключать и взаимно дополнять один другого, чтобы каждый элемент совокупности относился к одному и только одному слою, и ни один элемент не был упущен. Далее, из каждого слоя случайным образом выбираются элементы, при этом обычно используется метод простой случайной выборки.Используем для этого Возраст, как и в прошлом примере, чтобы в дальнейшем выбрать репрезентативную выборку.

strata1 <- random_data %>%
  group_by(Возраст) %>%
 slice_sample(prop = 0.5) #вероятность выборки из каждой группы сделаем равной 0.5
strata1
## # A tibble: 6 x 5
## # Groups:   Возраст [6]
##   `Кодовый номер сотруд… Пол    Возраст Должность             `Семейное положен…
##   <chr>                  <chr>    <dbl> <chr>                 <chr>             
## 1 id016                  Женск…      23 Программист           Не замужем        
## 2 id019                  Мужск…      24 Программист           Холост            
## 3 id003                  Женск…      27 Бухгалтер             Замужем           
## 4 id004                  Мужск…      28 Аналитик              Женат             
## 5 id001                  Мужск…      33 Руководитель аналити… Женат             
## 6 id009                  Женск…      40 Бухгалтер             Замужем

5.Проведите кластерный отбор. Организуйте кластеры самостоятельно. Решайте сами, каким способом отбирать сотрудников внутри кластера.

Если непосредственный отбор из совокупности невозможен, элементы генеральной совокупности объединяются в кластеры.

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

Если отбор осуществляется в две стадии, то совокупность делят на кластеры, которые состоят из других, более мелких кластеров. На первой стадии получают вероятностную выборку первичных кластеров. На второй стадии — из первичных кластеров отбирают элементы.

Так как кластерный анализ методом К-средних подразумевает сперва определение количества кластеров и нахождение оптимального числа разбиений, но в нашем случае такой метод не будет эффективен, так как основной кластерный раздел- должность сотрудника нельзя опредкелить с помощью числового параметра.Мы получим нерезпрезентативную выборку.

Но если вам понадобится создать такую выбоку , то рекомендуем использовать вам следущую схему Ссылка на кластерный анализ в R

  1. Объясните, какой из способов позволил организовать наиболее репрезентативную выборку и почему.

Теперь давайте сравним , какой из предложенных нам методов наиболее точно сможет дать ответы на любой вопрос исследования.Как и с помощью каких критериев их определить? Сначала давайте опять вернемся к визуализации данных

Систематический отбор

ggplot(data=final)+geom_bar(aes(x=final$Должность, fill = final$Пол),position='dodge')+coord_flip()+xlab("Должность")+ylab("Количество")+ labs(title = "Соотношение должности и пола")
## Warning: Use of `final$Должность` is discouraged. Use `Должность` instead.
## Warning: Use of `final$Пол` is discouraged. Use `Пол` instead.

Стратифицированный отбор

ggplot(data=strata1)+geom_bar(aes(x=strata1$Должность, fill = strata1$Пол),position='dodge')+coord_flip()+xlab("Должность")+ylab("Количество")+ labs(title = "Соотношение должности и пола")

Обычно, на практике считают, что выборка является репрезентативной, если её статистические параметры (среднее значение, дисперсия, среднеквадратичное отклонение и т.д.) отличаются от параметров совокупности не более, чем на 5%.

Давайте подсчитаем эти параметры и сделаем выводы :

Среднее, стандартное отклонение и дисперсию по возрасту генеральной совокупности, а затем систематического и стратифицированного отбора.

mean(random_data$Возраст)
## [1] 33.14815
mean(final$Возраст)
## [1] 30
mean(strata1$Возраст)
## [1] 29.16667

А что с оценкой стандартного отклонения?

sqrt(sum((random_data$Возраст- mean(random_data$Возраст))^2)/length(random_data$Возраст))
## [1] 9.375712
sqrt(sum((final$Возраст- mean(final$Возраст))^2)/length(final$Возраст))
## [1] 6.289321
sqrt(sum((strata1$Возраст- mean(strata1$Возраст))^2)/length(strata1$Возраст))
## [1] 5.814255

Дисперсия

var(random_data$Возраст)
## [1] 91.2849
var(final$Возраст)
## [1] 44.5
var(strata1$Возраст)
## [1] 40.56667

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

Подробнее почитать можно здесь