Share |

понедельник, 11 декабря 2017 г.

Прогнозирование пола по результатам тестирования



Идея поста принадлежит Эдуарду Бабушкину. Для меня пост носит обучающий характер в работе с непонятым до конца mlr, именно поэтому намеренно работал при решении с ним. От коллег ожидаю обратной связи и ответы на вопросы в конце поста.

В данном посте решается вопрос прогнозирования пола на основе данных тестирования. Датасет взят из многолетнего исследования Ключевые факторы эффективности и текучести персонала Эдуарда Бабушкина. 

Гипотеза: интеллект и профиль черт связан с полом респондента.

Очищенный набор данных содержит 1206 наблюдений с результатами тестов КТО и Big5.
Для дальнейшей работы переменные перекодированы, в скобках курсивом даны оригинальные наименования:

'data.frame':  1206 obs. of  11 variables:
 $ gender (Ваш пол) : Factor w/ 2 levels "Ж","М"
 $ iq (Ш1. Общий балл)    : num 
 $ verb (Ш2. Вербальный IQ)   : num 
 $ erud (Ш3. Эрудиция)  : num 
 $ num  (Ш4. Числовой IQ)  : num
 $ info (Ш5.Обработка информации)  : num
 $ extr (Ш6. Экстраверсия-интроверсия) : num
 $ auto (Ш7. Независимость-согласие) : num
 $ impuls (Ш8. Импульсивность-самоконтроль) : num
 $ stab   (Ш9. Тревожность-стабильность) : num
 $ conserv (Ш10. Консерватизм-новаторство): num

Данные подвержены препроцессингу (преобразование Бокса-Кокса, z-нормирование), распределение по полу не сбалансированно, количество женщин в наборе данных больше в 2.8 раз:

  Ж   М 
888 318 

Представляется возможным предварительно оценить наличие связей с помощью диаграммы боксплот. Наибольшая разница в медианных значениях в зависимости от пола наблюдается по шкале «Тревожность-стабильность», на меньшем уровне по шкалам «Экстраверсия-интроверсия» и «Общий балл IQ».


Кросс-валидация со следующими параметрами: folds = 5L, reps = 10L, maxit = 50L.
Площадь под кривой для построенной модели в зависимости от натренированных параметров:
 
Параметры модели
auc
0.7799367

Верхние параметры
auc
0.7604274

Нижние параметры
auc
0.7732489

ROC-кривая

График Precision-Recall

В соответствии с полученными графиками вероятность наступления события установлена на уровне 0.3, тогда

  FALSE TRUE
  Ж   220   46
  М    36   59

Точность модели: 56%.

Наиболее важным фактором оказывается фактор «Тревожность-стабильность», на втором месте IQ.



Данные проверяются на новом респонденте:

newdudesclass=data.frame(stab=9.5, iq=9, impuls=4.1, extr=3.2, auto=4.7, erud=2, num=3, conserv=4, verb=2, info=3)

Prediction: 1 observations
predict.type: prob
threshold: Ж=0.50,М=0.50
time: 0.01
     prob.Ж    prob.М response
1 0.5934066 0.4065934        Ж

Вывод: в половине случаев, построенная модель позволяет спрогнозировать пол респондента по результатам тестов КТО и Big5.

Вопросы:

1. Как узнать коэффициенты статистической значимости для предикторов в mlr?
2. Нужно ли строить модель только для того варианта параметров (over, under), в котором наблюдается наибольший баланс?
3. Прогноз на новом кандидате даёт response= «Ж» при prob=0.4, но при расчётах вероятность наступления события была установлена на 0.3, можем ли мы считать в таком случае истинным для нас response= «М»?


воскресенье, 10 декабря 2017 г.

Топ-10 популярных постов блога про HR-аналитику 2017



Не самые лучшие, не самые интересные, не самые инновативные, а именно самые популярные посты Блога про HR-аналитику. Т.е. те посты, что набрали максимальное количество просмотров.
Мой топ перечень постов 2017 кардинально расходится с данным списком, но на то и статистика, чтобы выражать некое общее мнение посредством количества просмотров, а не мнение эксперта в моем лице. Читайте также пост про самые популярные посты 2016 Лучшие посты блога по hr-аналитике 2016 - если сравнить список топ 2017 и 2016 станет понятно, почему можно прогнозировать популярность многих постов:)
Начинаю с конца, самое вкусное в конце, чтобы не соскочили.
Итак

Десятое место

Стоимость функций HR на рынке -совершенно неожиданно для меня этот пост ворвался в десятку постов по просмотрам. Я провожу исследование Ключевые факторы эффективности и текучести персонала, периодически показываю различные аналитики исследования. Этот пост как раз про такие результаты: я показал то, какие функции HR дороже на рынке.
Фишка в том, что в анкете свой функционал специалисты пишут руками, т.е. не выбирают, а пишут то, как они сами понимают и видят свой функционал, потом я сравниваю этот функционал с той зарплатой, что указывают специалисты и визуализирую результаты в посте. На сегодня данных накопилось больше, обещаю сделать новый пост, причем добавлю новую визуализацию.
Топ популярных постов блога про HR-аналитику 2017


Девятое место

9 терминов HR аналитики, которые необходимо знать - переводная статья, очевидна маркетинговая направленность поста, но таки стоит почитать этот пост, чтобы оценить, насколько вы в принципе в теме. Тем более, что очень важно: эти термины из сферы предиктивной аналитики, именно про ту HR аналитику, которую я исповедую, поэтому рад, что у вас, читатели, будет возможность ознакомиться с высокими стандартами работы.
Смотрите также вторую часть статьи 9 терминов HR аналитики, которые необходимо знать, часть 2
Топ популярных постов блога про HR-аналитику 2017

пятница, 8 декабря 2017 г.

Популярность социальных сетей по профессиям (где искать IT спецов) и динамика по годам: что с linkedin





Пост короткий, для меня это скорее тренировка в агрегировании данных:)
Я во сне задался вопросом, правда ли, что популярность linkedin после блокировки в России падает? Проснулся, а тут сообщение от Ольги Хайдаровой с предложением вставить Инстаграмм в исследование. Думаю, судьба, надо сделать.
В нашем исследовании (можно и нужно пройти по ссылке и поучаствовать в опросе) есть вопрос "В какой социальной сети вы проявляете максимальную активность", а также отметка времени, когда респондент заполнял опросник.
Таким образом мы можем понять динамику популярности социальных сетей в России по годам и в любом другом разрезе.

Что с linkedin

Популярность социальных сетей по профессиям и динамика по годам: что с linkedin

четверг, 7 декабря 2017 г.

Осенний марафон 2017



Пост скорее для себя - на память:)
У меня эта осень была реальным марафоном:
19-20 октября прошел семинар "Аналитика для HR" в Москве.
19 человек участников.
Это был только пролог.
16-17 ноября состоялся второй семинар "HR-Аналитика в R" (первый состоялся летом того года же)
Было семь участников, семинар очень сложный, для меня в том числе.
Обязательным условием является свой проект, двое участников уже сделали:
Анализ дожития специалистов по продаже недвижимости - Ольга Хайдарова, Этажи, Тюмень
Определение факторов включения сотрудников в кадровый резерв (версия 2) - Александр Ботвин, Сибирская Генерирующая компания, Кемерово.

 Вот наши российские HR аналитики
Заодно порекламирую книгу Введение в статистическое обучение с примерами на языке R - разыгрываю ее на семинаре, спасибо издательству ДМК ПРЕСС за поддержку!!! Книга стоит того, покупаем и изучаем! Книгу выиграл Павел Ивахненко (Павел, ау, не пропадайте:)

21-22 ноября я уже был в Бозшаколи - это почти незаметная точка на карте между Астаной и Павлодаром в Казахстане - корпоративный семинар в компании Казминералс. Обсуждали возможности построения предиктивной HR аналитики в компании.
25- 26 ноября я был в Екатеринбурге  проводил открытый семинар по теме BigData для HR-директоров.
А уже 27-28 ноября я проводил корпоративный семинар в Москве по той же теме.
1-2 декабря я проводил семинар в Алматы по теме "Аналитика для HR"
И завершился марафон в Москве семинаром BigData для HR-директоров.
Коллеги, спасибо за то, что бежали марафон со мной:)
__________________________________________________________
На этом все, читайте нас в фейсбуке и телеграмме

Определение факторов включения сотрудников в кадровый резерв (версия 2)



После полученных замечаний к посту Определение факторов включения сотрудников в кадровый резерв от Эдуарда Бабушкина и коллег аналитиков пост был переработан. За что всем огромное спасибо! Это лучший способ научиться.

В этом посте решается задача по управлению карьерным планированием внешних кандидатов при трудоустройстве и действующих сотрудников компании путём прогноза их включения в состав кадрового резерва по результатам тестирования.

Имеется 145 наблюдений по сотрудникам одной производственной компании принявшим участие в формировании кадрового резерва.

Методология включения в состав резерва предполагала успешное заполнение тестов интеллекта, мотивационного опросника и профессионального кейса. По итогам 20 сотрудников вошли в резерв компании.

Гипотеза: результаты батареи методик являются основанием включения сотрудника в состав кадрового резерва компании.

Датасет содержит следующие переменные:

$ Пол                      : Factor w/ 2 levels
$ Возраст                  : int 
$ Город                    : Factor w/ 7
$ Компания                 : Factor w/ 26 levels
$ Функция                  : Factor w/ 5 levels
$ Уровень.должности        : Factor w/ 2 levels
$ Стаж                     : int 
$ Мобильность              : Factor w/ 2 levels
$ Рекомендации.руководителя: Factor w/ 2 levels
$ IQ                       : int
$ Мотивация                : int 
$ Кейс                     : num
$ Общий.результат          : Factor w/ 2 levels

В качестве инструментов были использованы:
1. Тесты интеллекта CEB SHL (суммарный балл по вербальному и числовому тесту).
2. Мотивационный опросник CEB SHL.
3. Профессиональные кейсы, составленные консалтинговой компанией.

 1.      Подготовка данных

Поскольку метрические данные датасета измеряются в различных оценках  необходимо осуществить их препроцессинг. В первоначальном посте не было выявлено никакого влияния других метрических переменных на зависимую кроме IQ, поэтому препроцессингу была подвергнута только данная переменная. Важно отметить, что уровень мотивации и результаты кейсов не оказались статистически значимыми для итоговой модели.

trans = preProcess(reserv1[, c("Возраст","IQ")], method = c("BoxCox", "center", "scale", "medianImpute"))
reserv1=predict(trans, reserv1)
 Переменная возраст была включена по причине синтаксиса R (не пропустил с одной переменной IQ).

Для проведения анализа данные датасета разделены на обучающие и тестовые в соотношении 70/30%:

set.seed(1)
split = sample.split(reserv1$Общий.результат, SplitRatio = 0.7)
train1 = subset(reserv1, split==TRUE)
test1 = subset(reserv1, split==FALSE)

 2.      Анализ

По сути, включение или не включение сотрудника в состав кадрового резерва – это задача классификации и соответственно решается она через построение логистической регрессии.
Аналитиками был отмечен несбалансированный характер данных, так как при ограниченном количестве наблюдений (145) только 20 исходов являлись положительными, в связи с чем произведена балансировка данных и установлены параметры кросс-валидации (3 папки по 5 повторов):

fitControl1 = trainControl(method = "repeatedcv", number = 3, repeats = 5,sampling = "up") 

После поэтапного отключения статистически незначимых переменных, в качестве независимых переменных остаётся IQ и мобильность, тогда итоговая модель принимает вид:

logreg <- train(Общий.результат~IQ+Мобильность, data=train1, method="glm",metric='Accuracy',trControl = fitControl1, family="binomial")

Coefficients:
               Estimate Std. Error z value Pr(>|z|)    
(Intercept)     -0.6682     0.2770  -2.412   0.0159 *  
IQ               0.7959     0.1838   4.330 1.49e-05 ***
МобильностьНЕТ   0.8069     0.3453   2.337   0.0194 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Важно, что мобильность в теоретическом конструкте кадрового резерва являлась важным условием участия, но построенная модель говорит о том, что отношение шансов включения в резерв против невключения равняется exp(0.8069) = 2,24 в случае неготовности сотрудника к переезду.

При этом важным фактором всё равно является только IQ:



Далее приводится анализ качества модели:

1. ROC-кривая
Площадь под кривой = 0.83.

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


Строго говоря, пост некорректен: чтобы прогнозировать выбор профессии, мы должны были бы протестировать детей / вьюношей, потом отследить их судьбу, выбор профессии, в идеале успешность и/или удовлетворенность профессией, а потом уже представлять прогнозы.
Но я это оставляю сделать ученым, это их хлеб, а я покажу, как я могу прогнозировать выбор профессии на основе результатов нашего исследования. В нашем случае некорректность заключается в том, что люди показывают результаты тестов сейчас, и эти результаты могли сформироваться в том числе под воздействием профессии / профессиональной деформации.
Также укажу, что данный пост вырос их поста Сравнение психотипов HR, IT и продажников. Я там провел кластерный анализ результатов тестов, а потом сметчил результаты кластерного анализа и профессии и посмотрел, насколько "психотипы" / кластеры могут разделать респондентов по профессиям. Получилось выше плинтуса, что вдохновило меня на дальнейшие изыскания.
И хочу спросить создателей тестов для конкурса Лидеры России (См Вопросу к тесту управленческого потенциала Экопси: а вы можете подобными исследованиями похвастаться?:)

Идея

Очень простая: у нас респонденты заполняют анкету об одном из своих  мест работы, где указывают профессию. Задача: предсказать профессию респондента на основе тестов. Я взял данные теста Биг5:

  1. Интроверсия - экстраверсия;                                                                                       
  2. Независимость - согласие;                                                                                        
  3. Импульсивность - самоконтроль;  
  4. Тревожность- стабильность;                                                                                       
  5. Консерватизм- новаторство. 

Взял также результаты теста КТО (тест способностей: общий, числовой, вербальный и т.п. интеллекты) и пол.
Кроме того, я в качестве дополнительной гипотезы взял "психотип" респондента, полученный на основе кластеризации - см. Сравнение психотипов HR, IT и продажников - просто было интересно посмотреть, насколько "психотип" в структуре переменных уравнения будет важнее / не важнее других переменных.

Данные 

  1. HR: ровно 1000 HR специалистов прошли тесты;
  2. IT: 118 айти специалистов прошли Big5;
  3. Продажи: 84 продажника.

Результаты 

ROC AUC

Профориентация: можно ли на основе тестов рекомендовать выбор профессии
Результаты интуитивно понятные: лучше всего машина прогнозирует IT специалистов: они мальчики, более умные в общей массе. Хуже всего машина прогнозирует продажников, опять же, видимо, потому, что продажами занимаются почти все, найти устойчивые качества очень сложно.
* Не умеете читать такое диаграммы? На моем семинаре BigData для HR-директоров мы учимся это делать

понедельник, 4 декабря 2017 г.

Определение факторов включения сотрудников в кадровый резерв


В этом посте решается задача по управлению карьерным планированием внешних кандидатов при трудоустройстве и действующих сотрудников компании путём прогноза их включения в состав кадрового резерва по результатам тестирования.

Имеется 145 наблюдений по сотрудникам одной производственной компании принявшим участие в формировании кадрового резерва.
Методология включения в состав резерва предполагала успешное заполнение тестов интеллекта, мотивационного опросника и профессионального кейса. По итогам 20 сотрудников вошли в резерв компании.

Гипотеза: результаты батареи методик являются основанием включения сотрудника в состав кадрового резерва компании.

Датасет содержит следующие переменные:

$ Пол                      : Factor w/ 2 levels
$ Возраст                  : int 
$ Город                    : Factor w/ 7
$ Компания                 : Factor w/ 26 levels
$ Функция                  : Factor w/ 5 levels
$ Уровень.должности        : Factor w/ 2 levels
$ Стаж                     : int 
$ Мобильность              : Factor w/ 2 levels
$ Рекомендации.руководителя: Factor w/ 2 levels
$ IQ                       : int
$ Мотивация                : int 
$ Кейс                     : num
$ Общий.результат          : Factor w/ 2 levels

В качестве инструментов были использованы:

1. Тесты интеллекта CEB SHL (суммарный балл по вербальному и числовому тесту).
2. Мотивационный опросник CEB SHL (общий уровень мотивации является результатом сложения определенных шкал с последующим преобразованием Бокса-Кокса, z-нормированием и возвращением в T-баллы).
3. Профессиональные кейсы, составленные консалтинговой компанией.

1. Подготовка данных

Поскольку метрические данные датасета измеряются в различных оценка (T-баллы для тестов, проценты для кейсов, годы для возраста и стажа) осуществлён препроцессинг данных: преобразование Бокса-Кокса, z-нормирование и импутация пропущенных значений по мотивации и кейсам:

trans = preProcess(reserv1[, c("IQ","Мотивация","Кейс","Возраст","Стаж")], method = c("BoxCox", "center", "scale", "medianImpute"))
reserv1=predict(trans, reserv1)

Для проведения анализа данные датасета разделены на обучающие и тестовые:

set.seed(1)
split = sample.split(reserv1$Общий.результат, SplitRatio = 0.7)
train1 = subset(reserv1, split==TRUE)
test1 = subset(reserv1, split==FALSE)
  
2. Анализ

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

Call:
glm(formula = Общий.результат ~ Мотивация + IQ + Кейс + Мобильность, 
    family = binomial, data = train1)
 
Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.0557  -0.5549  -0.4038  -0.2592   2.3345  
 
Coefficients:
               Estimate Std. Error z value Pr(>|z|)    
(Intercept)     -2.2928     0.4977  -4.606  4.1e-06 ***
Мотивация        0.3391     0.3315   1.023   0.3063    
IQ               0.8812     0.3533   2.494   0.0126 *  
Кейс            -0.1529     0.3780  -0.404   0.6859    
МобильностьНЕТ   0.3409     0.6523   0.523   0.6013    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

В модели только одна переменная оказывается статистически значимой – это интеллект. Полученный коэффициент свидетельствует о том, что с ростом интеллекта на 1 единицу вероятность наступления события увеличивается на 0,88.

Важность факторов:


Для визуализации отличия группы вошедших в резерв (1), от не вошедших (0) по уровню интеллекта (шкала преобразована в z-баллы) данные представлены в виде боксплота:



Несовершенство модели демонстрируют построенные ROC-кривая
и график точность-полнота
  


Устанавливая вероятность наступления на уровне 0,2 на тестовых данных получен следующий результат:
 
     FALSE TRUE
  0    27   10
  1     3    3

То есть из включенных в итоге в состав резерва, на тестовых данных верно определено только 50%. Точность (Precision) при таких параметрах составляет 23%.

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

Coefficients:
               Estimate Std. Error z value Pr(>|z|)   
(Intercept)    -2.32175    0.52916  -4.388 1.15e-05 ***
Мотивация       0.01942    0.36334   0.053   0.9574   
IQ              0.58641    0.31801   1.844   0.0652 . 
Кейс            0.25552    0.40166   0.636   0.5247   
МобильностьНЕТ  0.58204    0.65069   0.894   0.3711   

Осуществляя улучшение модели в неё добавлялись прочие переменные, такие как: возраст, пол, стаж, функция, рекомендация руководителя. Все перечисленные переменные оказались статистически незначимы и не привели к положительному результату.

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

Call:
glm(formula = Мобильность ~ Мотивация + Пол + Возраст + Уровень.должности, 
    family = binomial, data = reserv1)
 
Coefficients:
                            Estimate Std. Error z value Pr(>|z|)  
(Intercept)                  0.38140    0.37006   1.031   0.3027  
Мотивация                   -0.49579    0.31301  -1.584   0.1132  
ПолМ                        -1.11093    0.59826  -1.857   0.0633 .
Возраст                      0.05313    0.22454   0.237   0.8129  
Уровень.должностиСпециалист -0.11768    0.46634  -0.252   0.8008  

Выбранные переменные, на уровне здравого смысла, которые могли бы детерминировать мобильность также не обнаружены. Ближе всего к ответу на вопрос пол, была проведена проверка хи-квадртом, которая также не дала положительных результатов.

 3. Выводы:

1. На основании имеющихся данных компания не может осуществлять прогноз включения сотрудника в состав кадрового резерва, а также ответить какой фактор был решающим для формирования действующего резерва.
2. Не исключено, что многие проблемы являются следствием крайне малого числа наблюдений. Следовательно, нужно больше данных собирать. J

рек

Популярные сообщения