К старту флагманского курса по Data Science делимся небольшим исследованием о зарплате на основе данных опроса Stack Overflow, а также очень кратко знакомим читателей с библиотекой построения байесовских моделей Bambi. За подробностями приглашаем под кат. Как разработчик или дата-сайентист вы можете задаться вопросом: Будете ли вы зарабатывать больше с ростом опыта? Если да, то на сколько? Есть ли другие факторы: учёная степень, должность и размер компании? Влияют ли они на зарплаты? Ответим на эти вопросы, используя визуализацию и байесовский вывод. Используем опрос 2018 года на Stack Overflow. Загрузим данные в текущий каталог и выполним код: Выберем не студентов, а разработчиков из США, которые заняты полностью: Уберём зарплаты, превышающие $300,000: И получим диапазон зарплат: Похоже, большинство разработчиков зарабатывают от $75 000 до 100 000 в год. Для зарплаты разработчиков в США звучит правдоподобно. Покажем влияние опыта на зарплату при помощи ящика с усами: Преобразуем строки YearsCoding в pandas.Interval: И визуализируем данные: Отлично, кажется, что средняя зарплата увеличивается с ростом опыта. Обратите внимание, что данные выше — это только выборка. Как проверить, что в средней зарплате разработчиков с опытом от 3 до 5 лет и разработчиков с опытом до двух лет или 6–8 лет и до 2 лет есть выраженная разница? Сделать это можно при помощи байесовского t-теста с независимыми выборками. Bambi — это высокоуровневый интерфейс построения байесовских моделей на Python. Он написан поверх Pymc3. Иными словами, Bambi похож на Pymc3, но использовать его намного проще: Начнём со сравнения средней зарплаты разработчиков с опытом до 2 лет от 3 до 5 лет. Обозначим средние зарплаты: Таким образом, мы можем написать: Из уравнения выше видно, что если нет разницы в средних зарплатах между двумя группами, то 𝛽 = 0. Воспользуемся Bambi, чтобы отрисовать 4000 образцов β и найти распределение β. Предположим, что распределение з/п с опытом до 2 и от 3 до 5 лет нормальное. Тогда: В коде выше ConvertedSalary ~ YearsCoding сообщает, что YearsCoding влияет на ConvertedSalary. Обобщим результаты: В таблице выше YearsCoding[(3.0, 5.0)] — это 𝛽 vp уравнения выше. Мы видим, что 94% наибольшей плотности (HDI) 𝛽 находится между 8418,925 и 14 348,040. Представим распределение 𝛽: Исходя из распределения выше можно сказать, что: разница в зарплатах между двумя группами составляет $11,400; основной пласт различий, а это 94%, лежит между $8418,925 и 14,348,040. Поскольку все значения β намного выше 0, можно сказать наверняка, что между средней зарплатой разработчиков с опытом до 2 лет и с опытом 3–5 лет есть значительная разница. Проверим, все ли значения β больше 0: Да, так и есть. Сравним другие цифры: Средняя зарплата увеличивается по мере роста опыта, но её рост замедляется с годами. А как насчёт других факторов, таких как формальное образование, размер компании и тип разработчика? Посмотрим на влияние этих факторов. Код для графиков вы найдёте в этом блокноте. Формальная степень влияет на то, сколько вы зарабатываете? Выяснить это мы можем при помощи ящика с усами, ящики которого отсортированы по уровню образования. Судя по графику выше, люди без формального образования, кажется, не зарабатывают столько же, сколько магистры, и больше, чем люди с образованием бакалавра. Можно сказать, что формальная учёная степень мало коррелирует с зарплатой. Как на зарплату влияет размер компании? На представленном ниже графике средняя зарплата в больших компаниях, похоже, больше средней зарплаты в маленьких компаниях. График ниже показывает, что средняя зарплата управленцев, таких как инженер-менеджер, генеральный директор, CTO, выше средней заработной платы на других должностях. Однако различия небольшие. Студенты, кажется, зарабатывают значительно меньше, чем устроенные на полный день разработчики. Распределение зарплат руководителей C (генеральный директор, CTO и т. д.) является более разреженным, чем другие. Вполне возможно, что зарплаты высших руководителей сильно различаются в зависимости от размера компании. Исходя из вышеприведённого анализа, можно сказать, что: есть значительная разница в средней заработной плате между разработчиками с меньшим стажем и разработчиками с большим стажем; наличие формального диплома практически не влияет на размер заработной платы; медианная зарплата немного увеличивается при увеличении размера компании и при более высокой должности. Так стоит ли вам получить высшее образование или набрать больше лет опыта, чтобы получать большую зарплату? Из анализа приведённых выше данных следует, что лучшим вложением средств является получение большего количества лет опыта работы в интересующей вас области. Можете ли вы использовать байесовский t-тест, чтобы определить, существует ли значительная разница в средней зарплате между компаниями разного размера или между разными типами должностей? Свободно форкайте репозиторий статьи. Stack Overflow. 2018–05–15. Stack Overflow 2018 Developer Survey, Version 2. Database Contents License. Retrieved 2021–01–06 from this anchor. Продолжить изучение науки о данных и Python вы сможете на наших курсах: Профессия Data Scientist Профессия Fullstack-разработчик на Python Узнайте подробности здесь. Data Science и Machine Learning Профессия Data Scientist Профессия Data Analyst Курс «Математика для Data Science» Курс «Математика и Machine Learning для Data Science» Курс по Data Engineering Курс «Machine Learning и Deep Learning» Курс по Machine Learning Python, веб-разработка Профессия Fullstack-разработчик на Python Курс «Python для веб-разработки» Профессия Frontend-разработчик Профессия Веб-разработчик Мобильная разработка Профессия iOS-разработчик Профессия Android-разработчик Java и C# Профессия Java-разработчик Профессия QA-инженер на JAVA Профессия C#-разработчик Профессия Разработчик игр на Unity От основ — в глубину Курс «Алгоритмы и структуры данных» Профессия C++ разработчик Профессия Этичный хакер А также Курс по DevOps Все курсы