Расчет нулевой гипотезы, на примере анализа зарплат украинских программистов |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-09-02 10:27 Решил поделиться, да бы и самому не забывать, как можно использовать простые статистические инструменты для анализа данных. В качестве примера использовался анонимный опрос относительно зарплат, стажа и позиций украинских программистов за 2014 и 2019 год. (1)
Этапы анализа
Препроцессинг данных После некоторых манипуляций (код тут), приводим данные в следующий вид:
Немного больше группировок для одного года (пусть 19-й):
Первые оценки такие. а. По результатам видно, что в среднем в 19 году, те кто работает более 10 лет получает более 3.5к. Прослеживается зависимость стаж -> з.п. в. Средние з.п. в 19 году, в зависимости от специализации показывают разброс в 10 раз — от 5к для System Architect, до 575 для Junior QA. с. В последней табличке распределение по специальностям. Больше всего данных о Software Engineer, без указания уровня квалификации. Обращаем внимание на особенности 19 года: Что-то не так с 9 годом стажа и отсутствует классификация по уровням junior, middle, senior. Можно глубже разобраться причинами outlier 9-го года. Но для данного анализа примем это как есть. А вот с категориями — стоит разобраться. в 19 году Software Engineer 2739 человек (35% от всех) без указания уровня квалификации. Давайте посчитаем среднее и отклонения по тем, кто указал. Получается, что средний опыт работы (кто его указал) для SE Junior год, с достаточно широким отклонением в один год. Больше всего опыта у SE Senior c так же большим отклонением в 2,4 года. Если попытаться рассчитать Middle и использовать средний стаж у тех кто его указал, то для категоризации того кто его не указал, мы можем не верно кластеризировать всю выборку. Особенно сильно будем ошибаться на других специальностях (не SE and QA) т.е. данных слишком мало. Тем более их мало для сравнения с 14 годом. Что можно использовать еще? Давайте берем только уровень зарплаты как достоверный показатель уровня квалификации! (думаю будут несогласные). Сначала строим как выглядит распределение по зарплатам для 19-го года. Outliers значительное число после 6$k. Оставим диапазон ограничений [400 — 4000]. Любой программист должен получать больше 400 :)
Уже чуть ближе к нормальному распределению. Составляем для 19 года, уровни квалификации в зависимости от зп. Range в 3600$ дает нам хороший делитель на 3 категории — 1200 $ Рисуем — плотность распределения по категориям для 19 года.
Добавив указанное количество опыта (левый угол), можно увидеть разные нюансы. Например, что в среднем Junior получает до 1к и его опыт работы — 5 лет. Самые большие разбросы по зп у Senior (черная короткая линия на верху каждого столбца) и многое другие интересные детали. На этом первые два этапа закончены, переходим собственно к проверки гипотез при помощи бутстрапинга. Формулируем нулевую гипотезу (H0) На первых этапах мы выяснили, что указанный опыт работы, не очень точно означает уровень квалификации. Тогда формируем нулевую гипотезу (ту самую которую нужно опровергнуть)
Однако раз указанный стаж плохой индикатор, а расчет по отдельным категориям может запутать, то берем простой и более предметный вариант: Средний уровень зп в 14 году, такой же как в 19 году это наша нулевая гипотеза H0 (2). То есть предполагаем, что зарплаты за 5 лет не изменились. НЕ верность гипотезы, несмотря на всю ее очевидность, мы сможем точно проверить рассчитав P-value для нулевой гипотезы. Средняя зп в 14 году 1797$, где доверительный интервал 95% [300.0 4000.0] Средняя зп в 19 году 1949$, где доверительный интервал 95% [300.0 5000.0] Разница в средних зарплатах в 14 и 19 году: 152$ Метрика для анализа Логично выбрать именно средние значения в качестве нашей метрики. Возможны и другие варианты, например медиана, что часто делают в случае значительного количества outliers. Однако средняя как оценка проста в понимании и тоже неплохо даст необходимое представление.
Рассчитываем нашу статистику.
p-value = 0.0 Значения p-value до 0,05 считаются незначительными, а в нашем случае оно равно = 0. Что означает, нулевая гипотеза опровергнута — средние значения зарплат в 14 году и 19 году разные и это не случайный результат или значительное количество outliers. Сгенерированные нами 10 тыс подобных массивов, в среднем не смогли получить в сумме большей таких ототожнений, чем непосредственно сами данные. Хотя мы потратили много внимания на первые два этапа, мы сформулировали правильную гипотезу и выбрали верную метрику. В более сложных задачах, с большим количеством переменных, без таких предварительных этапов, аналитика может привести к неверной интерпретации. Не стоит их пропускать. В результате нашего исследования уровня зарплат за 14 и 19 года, мы пришли к следующим выводам:
Спасибо за Ваше внимание. Буду рад комментариям и критике. Источники
Источник: habr.com Комментарии: |
|