Этот пост показывает математику удержания сотрудников, включая пример кода на Python, который вы можете использовать для своей команды.

Я изучил это, потому что моя команда потеряла больше, чем ожидалось год или два назад. В то время я не мог найти нужную мне статью, поэтому теперь, когда у меня есть немного времени, я пишу то, что я нашел, для вас и других. (И для протокола, я также брал интервью на выходе и искал темы)

Создание математической задачи

Сначала сформулируем задачу:

Какой процент сотрудников остается в компании до своей первой годовщины? 2-я годовщина? 3-я годовщина?

Сначала я не понимал, почему это лучше, чем любое простое среднее значение. Я объясню, критикуя более простые альтернативы:

Вариант 1: Средний стаж нынешних сотрудников

Вы можете проверить, как долго каждый сотрудник работает в компании, и просто усреднить.

Если ваша команда быстро растет, большинство ваших сотрудников новые, что, к сожалению, снижает средний показатель. Это звучит неправильно — найм новых людей не должен сразу ухудшать ваш показатель удержания!

С другой стороны, если вы потеряли много сотрудников, эти сотрудники никак не повлияют на количество! В худшем случае вы могли бы заставить большинство сотрудников уволиться немедленно, но несколько сотрудников задерживаются на долгое время, и средний показатель будет высоким. Это тоже было бы заблуждением.

Вариант 2: Средний срок пребывания в должности всех бывших сотрудников

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

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

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

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

Анализ выживания: оценка Каплана-Мейера

Лучшим подходом является использование оценщика Каплана-Мейера, который использует данные как нынешних, так и бывших сотрудников, чтобы оценить, как долго люди остаются. Модуль Lifelines обеспечивает реализацию на Python. Вот пример всего с тремя сотрудниками:

График не такой интересный, всего три:

Причина падения около 5,5 лет в том, что Барт ушел через 5,5 лет. Мэгги живет с нами уже около 6 лет, но, насколько нам известно, она может остаться на 10 лет или дольше. Точно так же Лиза работает в команде почти 10 лет, и у нас просто нет данных, чтобы сказать, как долго мы ожидаем, что она останется.

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

Ось X показывает время, прошедшее с даты начала работы сотрудника, а ось Y показывает, какой процент сотрудников дошел до этого момента. Около 60% сотрудников дожили до своего первого юбилея. Другими словами, 40% уволились в первый же год работы в этой фальшивой команде. Около 30% сотрудников в этом примере дожили до своей второй годовщины.

Советы

  • Может быть множество необычных обстоятельств, начиная от увольнения и заканчивая уходом по состоянию здоровья и сменой команды. Если у вас большая команда, это, вероятно, не сильно изменит цифры, но в маленькой команде вам может понадобиться отфильтровать некоторых сотрудников.
  • Если вам нужно одно число (медиана), это estimator.median_survival_time_

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

Погружение глубже с пропорциональными опасностями Кокса

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

В этом примере команды я также случайным образом сгенерировал функцию для сотрудников «wears_socks» и сделал так, чтобы ношение носков увеличивало продолжительность работы в компании на 50%. Я использую глупый пример, например, ношение носков, но тот же подход сработает и для более серьезных расследований пола, расы и т. д.

Модель Кокса правильно обнаруживает, что ношение носков влияет на удержание с p‹0,005. Вы также можете увидеть эффект на графике:

Вы можете использовать эту модель одновременно со многими функциями сотрудников и проверять доверительные интервалы и p-значения.

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

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

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

Совет: Вы можете провести базовый когортный анализ, разделив start_date на pandas.qcut.

Что это значило для моей команды

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

На самом деле я обнаружил, что инженеры-программисты из моей команды ушли гораздо раньше, чем инженеры по машинному обучению, и никакая другая переменная не объясняла данные так хорошо. Имейте в виду, что в нем не сказано, почему удержание было разным в разных группах — возможно, я лучше справлялся с инженерами по машинному обучению, чем с инженерами-программистами, или что роли MLE были более интересными, или могло быть то, что инженеры-программисты имели больше перспектив трудоустройства, или множество других факторов. У меня не было данных для сравнения с другими командами, которые могли бы дать больше информации.

В конце концов, я решил приложить больше усилий для удержания инженеров-программистов.

Выводы

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

Смотрите также