.

Сделать репост в соц сети!

воскресенье, 30 сентября 2018 г.

Связь между интеллектом и временем прохождения теста




Достаточно очевидная гипотеза: есть ли связь между интеллектом и временем прохождения теста. Я постараюсь сделать пост так, чтобы он был интересен и тем, кто работает в R, и тем, кого просто результаты интересуют. Т.е. я буду показывать как диаграммы, так и код.
Если Вы работаете в R, у вас должны быть установлены два пакета:

"devtools"
"HRanalytics"
Установить их можно так, как указано по ссылке Пакет R HR analytics для HR аналитиков. В пакете HRanalytics собраны часть результатов нашего исследования факторов эффективности и текучести персонала, и, если кто-то помнит, респонденты могли пройти тесты Лаборатории Гуманитарные Технологии:
  1. тест способностей КТО
  2. личностный опросник Big5
Отчет по тестированию включал помимо результатов теста время прохождения теста в таком формате

0:28:38 
0:27:40 
0:28:51 
0:21:30
Т.е. у нас сразу встает задача перевести данный формат в удобоваримый. Давайте по порядку.
Загружаем необходимые пакеты
library(dplyr)э
library(HRanalytics)
data(survey)
str(survey)
В файле survey куча ненужных нам переменных, поэтому мы формируем отдельный файл в помощью команды select пакета dplyr
tests1 =select(survey, overall=Ш1...ОБЩИЙ.БАЛЛ., time=ПРОДОЛЖИТЕЛЬНОСТЬ )
tests1 = tests1[complete.cases(tests1$time),]
Вторая команда нужна, чтобы убрать много пустых строк: у нас далеко не все респонденты проходили тесты. Итого у нас 1 208 строк, что достаточно для исследования. Теперь самое интересное: давайте переведем наш формат времени в минуты.
obj = strsplit(as.character(tests1$time), ":") # делим текст на объекты по запятой
obj[1:5] # посмотрим, что представляет из себя объект
tests1$часы = as.integer(lapply(obj, '[', 1)) # превращаем последовательно объект в часы, минуты и секунды
tests1$минуты = as.integer(lapply(obj, '[', 2)) 
tests1$секунды = as.integer(lapply(obj, '[', 3)) 

tests1$времятеста = tests1$часы*60+tests1$минуты+tests1$секунды/60 # а теперь сведем в одну переменную 
tests1$времятеста = round(tests1$времятеста, 1) # ограничим одним знаком # ну и для марафета ограничимся одним знаком после запятой
И посмотрим, что из себя время прохождения теста представляет
summary(tests1$времятеста)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   3.60   22.37   25.45   35.47   28.90 1092.00 
Диаграмма
hist(tests1$времятеста)
Связь между интеллектом и временем прохождения теста

Не очень интересная картина: видите справа свыше 1000 минут кто-то проходил? Это явно либо баг системы, либо просто респонденты оставляли тесты незавершенными, уходили куда-то, не выйдя из системы. Поэтому я с потолка беру идею: все, что больше часа по прохождению, означает, что респондент отвлекался от прохождения теста. Обрезаю по 60 минут и заново строю диаграмму
tests2 = subset(tests1, tests1$времятеста <= 60)
hist(tests2$времятеста)
summary(tests2$времятеста)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   3.60   22.20   25.40   25.97   28.60   59.10 
Эти результаты кажутся более осмысленным, хотя стоило бы еще как-то обрезать слева: ну нереально пройти батарею тестов за 3.6 минуты, согласны?
Связь между интеллектом и временем прохождения теста



Распределение кажется нормальным, но давайте все-таки проверим распределение на нормальность с помощью теста Шапиро-Уилка
shapiro.test(tests2$времятеста)

	Shapiro-Wilk normality test

data:  tests2$времятеста
W = 0.92625, p-value < 2.2e-16

> shapiro.test(tests2$overall)

	Shapiro-Wilk normality test

data:  tests2$overall
W = 0.99435, p-value = 0.0002018
P-value менее 0, 05 говорит нам о том, что распределение обоих переменных распределено ненормально, значит для проверки гипотезы о наличии связи между временем прохождения теста и интеллектом мы должны применять не коэффициент корреляции Пирсона, а непараметрический - Спирмена.
hist(tests2$overall)
А на диаграмме распределение ответов по шкале общих способностей теста КТО кажется вполне нормальным
Связь между интеллектом и временем прохождения теста

Давайте теперь проверим гипотезу о наличии взаимосвязи между интеллектом и временем прохождения теста с помощью коэффициента корреляции Спирмена
cor.test(tests2$времятеста, tests2$overall, method = c("spearman") )

	Spearman's rank correlation rho

data:  tests2$времятеста and tests2$overall
S = 317090000, p-value = 8.552e-09
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
-0.166812 
p-value = 8.552e-09 и означает, что связь есть, -0.166812 связь не очень тесная, но она есть и она отрицательная. Последнее выглядит логичным: чем больше время прохождения теста, тем меньше интеллект.
Визуализируем

Связь между интеллектом и временем прохождения теста


По оси X время прохождения теста в минутах, по оси Y - результаты теста КТО, шкала общих способностей. Для очистки совести я убрал тех, кто проходил тесты менее 15 минут (предполагая, что эти респонденты просто бросали тест, не выполняя его до конца)
> tests3 = subset(tests2,  tests2$времятеста >= 15)
> cor.test(tests3$времятеста, tests3$overall, method = c("spearman") )

	Spearman's rank correlation rho

data:  tests3$времятеста and tests3$overall
S = 310710000, p-value = 2.575e-13
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
-0.2130846 
P-value и коэффициент корреляции показывают более высокую связь, чем в предыдущем случае. Таким образом, мы можем говорить о наличии связи между временем прохождения теста и интеллектом (шкалой общих способностей теста КТО).

__________________________________________________________

На этом все, читайте нас в фейсбуке, телеграмме и вконтакте




Комментариев нет:

Отправить комментарий