Среднее средних по подразделениям даёт корректный общий показатель в каком случае?

Среднее средних по подразделениям даёт корректный общий показатель в каком случае?

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

Среднее средних корректно только тогда, когда каждое подразделение имеет одинаковый вес — например, одинаковое число наблюдений. Если размеры подразделений различаются, нужно считать среднее по исходным строкам либо использовать взвешенное среднее, где весом является количество наблюдений.

Исторический контекст

Агрегация возникла как способ получить сводные показатели из набора детальных строк: сумму, количество, минимум, максимум или среднее. При многоуровневой агрегации появляется важное ограничение: результат верхнего уровня должен учитывать исходный объём данных, иначе маленькие и крупные группы получают одинаковое влияние.

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

Предположим, в одном подразделении 100 сотрудников со средней оценкой 10, а в другом — 10 сотрудников со средней оценкой 20. Простое среднее двух средних равно 15, но общий показатель по всем 110 сотрудникам равен примерно 10,91.

Ошибка возникает потому, что среднее подразделения уже скрывает количество строк, на которых оно было рассчитано. Если затем усреднить такие результаты без учёта размера групп, подразделение из 10 сотрудников будет влиять на итог так же, как подразделение из 100 сотрудников.

Подробное решение

Нужно сначала определить требуемую статистическую единицу. Если нужен показатель для типичного сотрудника, агрегировать следует исходные оценки. Если доступны только среднее и размер каждой группы, применяется формула взвешенного среднего: сумма произведений среднего группы на её размер, делённая на сумму размеров групп.

WITH departments(name, avg_score, employee_count) AS ( VALUES ('А', 10.0, 100), ('Б', 20.0, 10) ) SELECT SUM(avg_score * employee_count) / SUM(employee_count) AS overall_avg FROM departments;

В примере результат равен примерно 10,91. Простое AVG(avg_score) дало бы 15 и было бы корректно только при одинаковом employee_count у всех подразделений.

Если доступны исходные строки, предпочтительнее считать AVG непосредственно по ним: так не теряется точность и не возникает необходимости восстанавливать агрегат из округлённых средних. При наличии пропусков нужно согласовать, что именно означает размер группы: число всех строк или число строк, реально участвовавших в расчёте среднего.

Нельзя без проверки складывать средние, рассчитанные по разным правилам фильтрации, периодам или единицам измерения. Также следует учитывать округление: взвешивание уже округлённых средних может дать небольшой отличающийся результат по сравнению с расчётом по исходным значениям.

Ситуация из практики

В отчёте по удовлетворённости клиентов команда сначала рассчитывала среднюю оценку по каждому магазину, а затем брала среднее этих значений. Небольшие магазины получали тот же вес, что и магазины с тысячами ответов, поэтому итоговый показатель заметно отклонялся от оценки типичного клиента.

Рассматривались два варианта. Простое среднее было самым простым, но искажало результат при разном числе ответов. Взвешенное среднее исправляло искажение, однако требовало использовать корректное число ответов в каждой группе. Пересчёт по исходным ответам был наиболее прозрачным, но требовал доступа к деталям и больших затрат ресурсов.

Выбрали агрегацию по исходным ответам на нужном уровне отчёта, а для предварительно агрегированных данных — взвешенный расчёт с отдельным контролем числа валидных ответов. В результате показатель стал соответствовать общей совокупности клиентов, а магазины с малым числом ответов перестали непропорционально влиять на итог.

Что кандидаты часто упускают

  1. Когда простое среднее средних всё-таки допустимо?

Оно допустимо, если все групповые средние основаны на одинаковом числе наблюдений и одинаковых правилах включения строк. Тогда каждое среднее представляет одинаковую долю общей совокупности. Также такой расчёт может быть осознанно выбран, если бизнес-метрика должна давать каждому подразделению одинаковый голос, а не каждому наблюдению.

  1. Достаточно ли знать размер группы и её среднее для точного пересчёта?

Для среднего — обычно да, если размер группы означает число значений, участвовавших в расчёте, а среднее не было предварительно округлено. Для других показателей этого недостаточно: например, из средних нельзя восстановить медиану, дисперсию или число уникальных объектов без дополнительных агрегатов.

  1. Чем отличается взвешенное среднее от суммы групповых средних?

Сумма средних не сохраняет исходный масштаб и обычно не имеет интерпретации общего среднего. Взвешенное среднее сначала возвращает каждой группе её вклад через умножение на размер группы, затем нормирует результат общей суммой весов. Поэтому его знаменатель должен соответствовать именно тем наблюдениям, которые участвовали в числителе.