Методология расчёта Индекса Качества

Коротко: берём 4 метрики скорости (LCP, INP, CLS, TTFB) из данных реальных пользователей Chrome, каждую переводим в балл 0–100 через сигмоиду, взвешиваем (мобильный ×0.6), корректируем на охват аудитории через CrUX Popularity Rank — получаем Индекс Качества 0–100. Больше = лучше.

Индекс Качества (IQ Score) — интегральный показатель производительности сайта, рассчитываемый на основе полевых данных реальных пользователей Chrome. Ниже описана полная математическая модель версии 3.0.

1. Источник данных

Все метрики получены из Chrome UX Report (CrUX) — публичного набора данных Google, агрегирующего анонимизированные показатели производительности реальных пользователей браузера Chrome. Данные представляют 75-й перцентиль (p75) распределения каждой метрики за скользящее 28-дневное окно, отдельно для мобильных и десктопных устройств.

Порог включения сайта в CrUX — достаточный объём трафика для статистической анонимизации, что естественным образом ограничивает выборку наиболее посещаемыми ресурсами Рунета. Минимальный объём выборки для включения в Индекс: $n \geq 200$ пользователей.

2. Метрики и пороговые значения

Индекс основан на четырёх измерениях пользовательского опыта. Три из них входят в официальный набор Core Web Vitals (Google), четвёртый — вспомогательный показатель серверной отзывчивости:

Метрика Что измеряет Good (≤) Poor (>) Ед. изм.
LCP Largest Contentful Paint — время появления главного контента 2 5004 000мс
INP Interaction to Next Paint — задержка интерактивности 200500мс
CLS Cumulative Layout Shift — визуальная стабильность (×1000) 100250усл.
TTFB Time to First Byte — отзывчивость сервера 8001 800мс

CLS хранится в формате ×1000 (целое число) для совместимости с типом данных SMALLINT UNSIGNED. Good/Poor-пороги соответствуют официальным спецификациям Web Vitals.

3. Сигмоидальная нормализация

Каждое сырое значение метрики $x$ нормализуется в непрерывный балл $s \in [0,\, 100]$ с помощью логистической (сигмоидальной) функции:

$$\sigma(x;\, x_{\text{mid}},\, k) = \frac{100}{1 + e^{\,k\,(x - x_{\text{mid}})}}$$

Параметры $x_{\text{mid}}$ и $k$ калибруются так, чтобы выполнялись граничные условия, соответствующие порогам Google:

$$\sigma(x_{\text{good}};\, x_{\text{mid}},\, k) \approx 90, \qquad \sigma(x_{\text{poor}};\, x_{\text{mid}},\, k) \approx 10$$

Из этих условий аналитически выводятся параметры функции:

$$x_{\text{mid}} = \frac{x_{\text{good}} + x_{\text{poor}}}{2}, \qquad k = \frac{\ln 9}{x_{\text{mid}} - x_{\text{good}}}$$

Знак $k$ отрицательный: чем меньше значение метрики (быстрее сайт), тем выше балл. Сигмоидальная форма обеспечивает три важных свойства:

  • Монотонность — улучшение метрики всегда повышает балл.
  • Непрерывность — нет разрывов на границах Good / Needs Improvement / Poor.
  • Насыщение — экстремальные значения логарифмически стремятся к 100 или 0, не создавая бесконечного прироста.

Конкретные параметры для каждой метрики:

Метрика $x_{\text{good}}$ $x_{\text{poor}}$ $x_{\text{mid}}$ $k$
LCP2 5004 0003 250−0.001466
INP200500350−0.014663
CLS100250175−0.014663
TTFB8001 8001 300−0.002197

4. Весовая агрегация

Нормализованные баллы метрик агрегируются в платформенный индекс $S_{\text{platform}}$ через взвешенную сумму:

$$S_{\text{platform}} = w_{\text{LCP}} \cdot \sigma_{\text{LCP}} + w_{\text{INP}} \cdot \sigma_{\text{INP}} + w_{\text{CLS}} \cdot \sigma_{\text{CLS}} + w_{\text{TTFB}} \cdot \sigma_{\text{TTFB}}$$

Веса метрик отражают их относительный вклад в воспринимаемую скорость загрузки:

МетрикаВес $w$Обоснование
LCP35% Основной показатель воспринимаемой скорости загрузки по данным Google CWV
INP30% Критичен для интерактивных сайтов; заменил FID в Core Web Vitals (март 2024)
CLS20% Визуальная стабильность — ключевой UX-фактор для мобильных пользователей
TTFB15% Прокси серверной инфраструктуры; коррелирует с LCP при слабом соединении

Если данные по отдельной метрике отсутствуют ($x = 0$ в CrUX), её балл принимается равным нулю, а веса оставшихся метрик нормируются так, чтобы их сумма оставалась равной 1.

5. Платформенный коэффициент

Финальный балл формируется как взвешенная комбинация мобильного и десктопного платформенных индексов:

$$S_{\text{raw}} = \alpha \cdot S_{\text{mobile}} + (1-\alpha) \cdot S_{\text{desktop}}$$

где $\alpha = 0.6$ — мобильный вес, отражающий долю мобильного трафика в Рунете (~60% сессий приходится на смартфоны по данным Яндекс.Метрики).

Если данные по десктопу полностью отсутствуют, применяется штраф за отсутствие десктопного присутствия:

$$S_{\text{raw}} = \delta \cdot S_{\text{mobile}}, \qquad \delta = 0.85$$

Коэффициент $\delta = 0.85$ отражает экономическую ценность десктопной аудитории: конверсия на десктопе в коммерческих нишах в среднем в 2–3 раза выше мобильной (Google Analytics Benchmarks 2024).

6. Байесовское сжатие (Shrinkage)

Малые выборки дают ненадёжные p75-оценки. Для корректировки применяется байесовское сжатие к априорному среднему (James–Stein shrinkage estimator):

$$S_{\text{final}} = c \cdot S_{\text{raw}} + (1 - c) \cdot \mu_0$$

где:

  • $\mu_0 = 50$ — априорный нейтральный балл (равновесный prior)
  • $c$ — коэффициент доверия, монотонная функция объёма выборки $n$:
$$c = \min\!\left(1,\; \sqrt{\frac{n}{n_0}}\right), \qquad n_0 = 1000$$

При $n = 1000$ имеем $c = 1.0$ (полное доверие к данным). При $n = 250$ — $c = 0.5$ (балл смещается на 50% к центру распределения). Квадратный корень выбран как компромисс между линейной функцией (доверие растёт слишком быстро) и логарифмической (слишком медленно).

Итоговый балл округляется до целого числа и ограничивается диапазоном $[0,\, 100]$:

$$\text{IQ Score} = \mathrm{clip}\!\left(\operatorname{round}(S_{\text{final}}),\; 0,\; 100\right)$$

Полная сквозная формула от сырых метрик до итогового балла:

$$\text{IQ Score} = \mathrm{clip}\!\left(\operatorname{round}\!\left[ \left( c\,\bigl(\alpha S_m + (1-\alpha) S_d\bigr) + (1-c)\,\mu_0 \right) \right],\; 0,\; 100\right)$$

7. Коэффициент охвата и корректировка достоверности

7.1. Постановка проблемы

Байесовское сжатие (раздел 6) предполагает наличие реального счётчика пользователей $n$. Однако стандартный CrUX HTTP API возвращает агрегированные перцентили метрик без абсолютных объёмов выборки. В результате для всех сайтов $n = 0$, коэффициент доверия $c = \min(1,\, \sqrt{0/1000}) = 0$ — байесовская корректировка не применяется, и сайты с тремя точками наблюдения конкурируют с многомиллионными ресурсами на равных условиях.

Для устранения этого структурного дефекта в версии 3.0 вводится коэффициент охвата $\rho$, опирающийся на публично доступный показатель популярности из BigQuery-датасета CrUX.

7.2. CrUX Popularity Rank как прокси достоверности

Google Chrome UX Report публикует в BigQuery поле experimental.popularity.rank — ранг домена по числу уникальных Chrome-пользователей за скользящее 28-дневное окно. Ранг принимает значения от $r_{\min} = 10^3$ (наиболее посещаемые домены Рунета) до $r_{\max} = 10^6$ (минимальный порог включения в CrUX), биннированный с шагом $10^3$.

Эмпирически установлено, что распределение трафика среди сайтов следует степенному закону Парето (Power Law):

$$P(\text{traffic} \geq t) \sim t^{-\alpha}, \qquad \alpha \approx 1.2\text{–}1.8$$

При таком распределении линейная нормализация ранга деформирует истинное соотношение охватов: разница между рангом 1 000 и 10 000 семантически несопоставима с разницей между 500 000 и 510 000. Логарифмическая шкала корректно отражает мультипликативный характер трафика.

7.3. Нормализация ранга популярности

Определим безразмерную переменную охвата $\xi \in [0,\, 1]$:

$$\xi(r) = \frac{\log_{10} r_{\max} - \log_{10} r}{\log_{10} r_{\max} - \log_{10} r_{\min}} = \frac{6 - \log_{10} r}{3}, \qquad r \in [r_{\min},\, r_{\max}]$$

Граничные значения:

Popularity rank $r$$\xi(r)$Интерпретация
$10^3$ (топ Рунета)$1.000$Полное доверие к данным
$10^4$$0.667$Высокая достоверность
$10^5$$0.333$Умеренная достоверность
$10^6$ (минимальный порог)$0.000$Минимальная выборка

7.4. Коэффициент охвата $\rho$

Коэффициент охвата $\rho$ вводится как аффинное преобразование $\xi$, гарантирующее нижнюю границу $\rho_{\min} > 0$:

$$\rho(r) = \rho_{\min} + (1 - \rho_{\min})\cdot\xi(r) = 0.70 + 0.30\cdot\frac{6 - \log_{10} r}{3}$$

Параметр $\rho_{\min} = 0.70$ означает, что даже сайт с минимально возможным трафиком сохраняет 70% влияния своих реальных метрик на итоговый балл. Это принципиально отличает модель от чистого байесовского сжатия, при котором сайты с малой выборкой коллапсируют к единой точке.

Для сайтов, отсутствующих в данных CrUX Popularity Rank (домены без российской аудитории или ниже порога биннирования), назначается дефолтное значение:

$$\rho_{\text{default}} = 0.82$$

Значение $0.82$ соответствует $r \approx 2.5 \times 10^5$ — нижнему квартилю CrUX-распределения, что является консервативной оценкой для неидентифицированных доменов.

7.5. Итоговая формула IQ Score v3.0

Индекс Качества формируется как взвешенное произведение платформенного балла $S_{\text{raw}}$ и коэффициента охвата $\rho$:

$$\boxed{\text{IQ Score} = \mathrm{clip}\!\left( \operatorname{round}\!\left[\rho(r) \cdot S_{\text{raw}}\right],\; 0,\; 100 \right)}$$

где $S_{\text{raw}}$ — платформенный балл из раздела 5, $\rho(r)$ — коэффициент охвата, а полное раскрытие формулы через первичные метрики:

$$\text{IQ Score} = \mathrm{clip}\!\left(\operatorname{round}\!\left[ \left(0.70 + 0.30\cdot\frac{6 - \log_{10} r}{3}\right) \cdot \left(\alpha \cdot S_m + (1-\alpha) \cdot S_d\right) \right],\; 0,\; 100\right)$$

где $S_m$ и $S_d$ — мобильный и десктопный платформенные баллы, $\alpha = 0.6$.

7.6. Математические свойства формулы

Монотонность по качеству: при фиксированном $r$ функция IQ Score строго возрастает по $S_{\text{raw}}$, поскольку $\rho > 0$ при всех допустимых значениях $r$. Улучшение производительности всегда повышает балл независимо от уровня трафика.

Монотонность по охвату: при фиксированном $S_{\text{raw}}$ функция IQ Score строго убывает по $r$ (меньший ранг = больший охват = выше балл). Два сайта с одинаковой производительностью получат более высокий балл тот, чьи метрики подтверждены большей аудиторией.

Сохранение дифференциации: разброс баллов для любого уровня трафика составляет $[0,\; \rho_{\min} \cdot 100] = [0, 70]$ при $r = r_{\max}$ и $[0, 100]$ при $r = r_{\min}$. В отличие от байесовского сжатия к константе, формула не коллапсирует сайты в одну точку.

Предел при $r \to r_{\min}$:

$$\lim_{r \to 10^3} \text{IQ Score} = \mathrm{clip}(\operatorname{round}[S_{\text{raw}}], 0, 100)$$

Для лидеров Рунета коэффициент охвата $\rho = 1.0$, и IQ Score совпадает с чистым платформенным баллом без каких-либо поправок.

7.7. Числовые примеры

Сайт $r$ $S_{\text{raw}}$ $\rho$ IQ Score
Лидер Рунета$10^3$751.00075
Крупный портал$10^4$800.90072
Региональный банк$5\times10^4$720.84361
Городской сервис$2\times10^5$650.78751
Малый быстрый сайт$10^6$950.70067
Малый медленный сайт$10^6$300.70021
Без данных о популярности800.82066

Ключевое свойство: сайт с $S_{\text{raw}}=95$ и минимальным трафиком получает 67 баллов, а не 95 — однако сохраняет значительное превосходство над медленным сайтом с теми же характеристиками трафика (67 vs 21). Полная дифференциация по качеству сохраняется на всех уровнях охвата.

8. Ранжирование и перцентили

После расчёта IQ Score для всей выборки выполняется глобальное ранжирование по убыванию $S_{\text{final}}$. Сайты с равными баллами получают одинаковый ранг (Standard Competition Ranking, метод 1224).

Перцентиль сайта с рангом $r$ в выборке объёма $N$:

$$P = \left\lceil 100 \cdot \frac{N - r}{N} \right\rceil$$

Ниши ранжируются независимо: для каждой вертикали строится отдельная отсортированная последовательность. Это позволяет корректно сравнивать сайты разного масштаба внутри одной категории.

Дельта ранга $\Delta_r$ — изменение глобальной позиции относительно предыдущего снапшота:

$$\Delta_r = r_{\text{prev}} - r_{\text{curr}}$$

Положительное значение означает рост (сайт поднялся), отрицательное — падение.

9. Критерии исключения

Сайт исключается из публичного Индекса если выполняется хотя бы одно условие:

  • Суммарный объём выборки $n_{\text{mobile}} + n_{\text{desktop}} < 200$ — данных недостаточно для надёжной p75-оценки.
  • Сайт помечен флагом is_hidden (техническая ошибка в данных).
  • Домен недоступен в CrUX (новый сайт, нет достаточного публичного трафика Chrome).

Сайты с неполными данными (только мобильные метрики) включаются с применением штрафа $\delta$ и нулевых значений для отсутствующих метрик.

10. Источники

  1. Google. Web Vitals. web.dev/articles/vitals — официальная документация Core Web Vitals: LCP, INP, CLS и пороговые значения.
  2. Google. Chrome UX Report. developer.chrome.com/docs/crux — методология сбора полевых данных и структура BigQuery-датасета.
  3. Google. CrUX History API. developer.chrome.com/docs/crux/history-api — исторические снапшоты для расчёта динамики позиций.
  4. Efron, B., Morris, C. Stein's Paradox in Statistics. Scientific American, 1977 — теоретическое обоснование байесовского сжатия.
  5. James, W., Stein, C. Estimation with Quadratic Loss. Proceedings of the Fourth Berkeley Symposium on Mathematical Statistics and Probability, 1961, Vol. 1, pp. 361–379.
  6. Google. Interaction to Next Paint (INP). web.dev/articles/inp — описание метрики INP, заменившей FID в Core Web Vitals с марта 2024.
  7. Google. Think with Google: Mobile vs Desktop Conversion. thinkwithgoogle.com — данные о конверсии по типам устройств в коммерческих нишах.
  8. Яндекс.Метрика. Публичная статистика Рунета 2024. Соотношение мобильного и десктопного трафика по отраслям.
  9. Google. CrUX experimental.popularity.rank. developer.chrome.com/docs/crux/bigquery — ранг популярности доменов по числу Chrome-пользователей, используемый в v3.0 для расчёта коэффициента охвата $\rho$.
  10. Clauset, A., Shalizi, C. R., Newman, M. E. J. Power-law distributions in empirical data. SIAM Review, 51(4):661–703, 2009 — статистическое обоснование логарифмической нормализации степенных распределений трафика.
  11. Stein, C. Inadmissibility of the Usual Estimator for the Mean of a Multivariate Normal Distribution. Proceedings of the Third Berkeley Symposium, 1956 — исходная теорема, лежащая в основе оценок с регуляризацией, применённых в разделах 6 и 7.