Версия scoring v1.2.0
Как считаются показатели
Индекс помогает сравнить профессии по одинаковым правилам. На результат влияют спрос, зарплата, динамика, доля Junior-вакансий, удалённая работа и полнота данных. На странице каждой профессии показан вклад каждого фактора в итоговые 100 баллов.
Зарплатная статистика
Для каждой профессии отдельно считаются: все HH-вакансии с зарплатой, coverage, медиана, среднее, P25, P75, sample size и confidence. Одна вакансия входит в один зарплатный сегмент этой профессии.
Полная вилка → midpoint. Для нижней или верхней границы без пары центр оценивается по медианной ширине полных вилок этой же профессии. Благодаря этому односторонние объявления остаются в выборке, но их модельный статус явно указан.
Net приводится к gross обратным расчётом действующей пятиступенчатой шкалы НДФЛ. USD, EUR и KZT переводятся в RUB по сохранённому официальному курсу ЦБ; записи с неизвестным налоговым статусом не подмешиваются.
Для всех профессий используется одно правило: нижние 30% отсортированных зарплат относятся к Junior, диапазон от 30-го до 85-го процентиля — к Middle, верхние 15% — к Senior. Сегмент публикуется, когда в нём есть минимум пять наблюдений.
Зарплаты сортируются и делятся на непрерывные сегменты: нижние 30% относятся к Junior, следующие 55% — к Middle, верхние 15% — к Senior. Для каждого сегмента показывается медиана в скользящем окне 30 дней; free получает до 30 дней истории, Premium — до 180 фактически накопленных.
Тренды
Стрелка не сравнивает соседние дни. Для периода N сравниваются средние текущего и предыдущего окна:
Δ% = (avg current N − avg previous N) / max(avg current N, avg previous N) × 100
Так шкала остаётся понятной: от −100% до +100%, даже если предыдущее окно было очень маленьким.
- ↗ рост: больше +3%
- → нейтрально: от -3% до +3%
- ↘ падение: меньше -3%
Рассчитываются окна 7, 30 и 90 дней. Для 90-дневного сравнения нужны данные за последние 180 дней.
Формула итоговой оценки
Каждая профессия использует только свои классифицированные HH-вакансии: спрос, 14-дневную динамику, долю noExperience, удалённость и полноту зарплат. Зарплатный компонент использует медиану всех собственных сопоставимых gross-нормализованных записей при n≥5; при меньшем n получает нейтральную медиану достаточных peer-выборок, а качество данных остаётся низким. Категорийные строки в оценку не подставляются. Количество вакансий логарифмируется, денежные и growth-экстремумы ограничиваются 5/95 перцентилями, затем признаки переводятся в percentile rank среди активных профессий.
| Компонент | Вес | Нормализация |
|---|---|---|
| Спрос | 28% | Percentile rank логарифма собственных HH-публикаций профессии |
| Уровень зарплаты | 24% | Percentile rank собственной gross RUB-медианы при n≥5 |
| Рост спроса | 16% | Собственные последние 7 дней против предыдущих 7 |
| Доступность для начинающих | 12% | Собственная доля noExperience, нормированная к 35% |
| Удалённая работа | 10% | Собственная доля удалённых HH-вакансий |
| Стабильность и качество | 10% | Собственные coverage зарплат и размер выборки |
Score = 100 × Σ(weightᵢ × normalized_componentᵢ)
Breakdown и scoring_version сохраняются в profession_scores_daily. Новые веса создают новую версию, а не переписывают историю. Низкое качество данных остаётся видимым в badge и компоненте data quality.
Классификация вакансий
Основной классификатор объясним: Unicode-нормализация заголовка → алиасы → регулярные выражения → исключения → поле опыта → маркеры junior/middle/senior на русском и английском → confidence. Team Lead, Principal и Architect не становятся Senior автоматически. Optional AI может только помочь с неопределёнными вакансиями и никогда не обязателен.
Источники и условия
Исторические метрики строятся воспроизводимо: для записей сохраняются источник, дата загрузки и версия правил. Открытый API «Работы России» используется для отдельного слоя официальных публикаций; одобренное приложение HH — для поискового снимка, подробных фасетов и индекса v1.2.0. Основная зарплатная модель использует только официальный HH API, сохранённые курсы ЦБ и публичную шкалу НДФЛ. HTML-скрейпинг и обход ограничений источников не применяются.
Подробнее об источниках →Короткие ответы
Частые вопросы о расчётах
Почему медиана и среднее показываются отдельно?
Среднее сильнее реагирует на редкие экстремальные значения. Медиана описывает середину выборки, поэтому два показателя дополняют друг друга.
Что происходит, если зарплат мало?
HH-модель использует все совместимые зарплаты профессии и показывает сегмент при n≥5. Если даже такого объёма нет, отдельно показывается ориентир открытого исследования.
Как считается зарплатная динамика?
Для каждой профессии net приводится к gross, а односторонние границы оцениваются по типичной ширине полных вилок. Нижние 30% отсортированных зарплат относятся к Junior, следующие 55% — к Middle, верхние 15% — к Senior; каждая дневная точка показывает медиану сегмента за предшествующие 30 дней.
Что означает изменение за 7 дней?
Сравнивается среднее число наблюдений за текущие семь дней со средним за предыдущие семь дней. Один день с предыдущим днём не сравнивается.
Смешиваются ли gross и net зарплаты?
Не напрямую. В исходных счётчиках они разделены, а для основной HH-модели net сначала математически приводится к сопоставимому gross по прогрессивной шкале НДФЛ. Неизвестный налоговый статус в модель не включается.
Принимает ли локальная модель решения вместо правил?
Нет. Основным остаётся объяснимый классификатор. Локальная модель может обработать ограниченное число неопределённых записей, её ответ валидируется и получает ограничение confidence.