Версия scoring v1.0.0
Как считаются показатели
Индекс помогает сравнить профессии по одинаковым правилам. На результат влияют спрос, зарплата, динамика, доля Junior-вакансий, удалённая работа и полнота данных. На странице каждой профессии показан вклад каждого фактора в итоговые 100 баллов.
Зарплатная статистика
Для профессии, уровня, региона и периода отдельно считаются: вакансии, вакансии с зарплатой, coverage, медиана, среднее, P25, P75, медианы нижних и верхних границ, sample size и confidence.
Midpoint = (нижняя + верхняя) / 2 используется только при наличии обеих границ. Единственная граница остаётся единственной - вторую мы не восстанавливаем.
Gross, net и неизвестный налоговый статус не смешиваются. Интерфейс MVP показывает явно обозначенный gross-срез. Валюты переводятся отдельным rate provider с сохранением исходной валюты, курса, даты и провайдера.
При менее чем 20 midpoint-наблюдениях медиана вакансий не публикуется. Вместо пустой карточки интерфейс показывает отдельно подписанный ориентир из открытого исследования. Порог задаётся через MIN_SALARY_SAMPLE.
Тренды
Стрелка не сравнивает соседние дни. Для периода N сравниваются средние текущего и предыдущего окна:
Δ% = (avg current N - avg previous N) / avg previous N × 100
- ↗ рост: больше +3%
- → нейтрально: от -3% до +3%
- ↘ падение: меньше -3%
Рассчитываются окна 7, 30 и 90 дней. Для 90-дневного сравнения нужны данные за последние 180 дней.
Формула итоговой оценки
Количество вакансий логарифмируется, денежные и growth-экстремумы ограничиваются 5/95 перцентилями, затем признаки переводятся в percentile rank среди активных профессий. Итог ограничивается диапазоном 0-100.
| Компонент | Вес | Нормализация |
|---|---|---|
| Спрос | 30% | Percentile rank логарифма активных вакансий |
| Уровень зарплаты | 25% | Percentile rank winsorized медианы |
| Рост спроса | 20% | Percentile rank изменения спроса с ограничением экстремумов |
| Доступность для начинающих | 10% | Доля Junior, нормированная к 35% |
| Удалённая работа | 10% | Доля удалённых активных вакансий |
| Стабильность и качество | 5% | 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 «Работы России» загружает реальные записи в отдельный provenance-контур, но не перезаписывает показатели до проверки совместимости зарплат. Официальный HH API выключен. Никакой HTML-скрейпинг, CAPTCHA/proxy/rate-limit обход не применяется.
Подробнее об источниках →Короткие ответы
Частые вопросы о расчётах
Почему медиана и среднее показываются отдельно?
Среднее сильнее реагирует на редкие экстремальные значения. Медиана описывает середину выборки, поэтому два показателя дополняют друг друга.
Что происходит, если вилок мало?
Медиана вакансий считается только при 20 полных вилках. До этого на странице показывается отдельный ориентир из открытого зарплатного исследования, а размер официальной выборки остаётся видимым.
Что означает изменение за 7 дней?
Сравнивается среднее число наблюдений за текущие семь дней со средним за предыдущие семь дней. Один день с предыдущим днём не сравнивается.
Смешиваются ли gross и net зарплаты?
Нет. Gross, net и неизвестный налоговый статус разделяются. Неизвестный статус не включается в явно обозначенный gross-срез.
Принимает ли локальная модель решения вместо правил?
Нет. Основным остаётся объяснимый классификатор. Локальная модель может обработать ограниченное число неопределённых записей, её ответ валидируется и получает ограничение confidence.