Короткий ответ
Средневзвешенное учитывает разный «вес» (значимость, объём) каждого значения при усреднении; его стоит использовать, когда группы, по которым усредняются показатели, имеют разный размер — иначе простое среднее по группам исказит общий результат.
Как это работает подробнее
средневзвешенное = сумма(значение × вес) / сумма(весов). Простое среднее — частный случай, где все веса равны. Такой расчёт особенно важен при объединении данных из разных источников с разным охватом и надёжностью.
Пример кода
Пример на Python
import numpy as np
conversions = [0.10, 0.02, 0.15] # конверсия по трём каналам
visitors = [1000, 50, 200]
weighted_avg = np.average(conversions, weights=visitors)
simple_avg = np.mean(conversions)
print(weighted_avg, simple_avg) # результаты заметно различаютсяЧто использовать на практике
- На практике: классический пример — усреднение конверсии по нескольким каналам трафика: если просто усреднить конверсии каналов без учёта их объёма, маленький канал с аномальной конверсией исказит общий показатель. Средневзвешенное по объёму трафика (или количеству заказов) даёт корректную общую конверсию. На практике также полезно явно указывать используемые веса в отчёте, чтобы коллеги могли воспроизвести расчёт и понять, почему он отличается от простого среднего.
- Проверка: пересчитать общую конверсию напрямую как (сумма конверсий × визиты) / сумма визитов — результат должен совпасть с weighted_avg, но не с simple_avg.
Подводные камни
- Частые ошибки: усреднять «средние по группам» как простое среднее, игнорируя разный размер групп (это частный случай парадокса Симпсона); использовать веса, которые сами коррелируют с ошибкой измерения, без критической проверки; забывать указать, по какому весу считалось средневзвешенное, что мешает воспроизвести расчёт. Ещё одна ошибка — взвешивать по показателю, который сам измерен с разной точностью в разных группах, из-за чего веса вносят дополнительное искажение.