В чем разница математического ожидания и среднего
Что проверяют
Отличаете ли вы характеристику распределения от числа, посчитанного по данным. Для Go-разработчика вопрос обычно приземляется на метрики и бенчмарки, поэтому следом спрашивают, почему среднее время ответа плохо описывает сервис и чем тогда пользоваться.
Как отвечать
Разведите два понятия:
- математическое ожидание
E[X]: параметр случайной величины, то есть свойство модели, а не данных. Для дискретной величины это сумма значений, умноженных на их вероятности, для непрерывной интеграл∫ x·f(x) dx. У честного кубикаE[X] = 3.5, хотя такое число выпасть не может; - выборочное среднее
x̄: сумма наблюдений, делённая на их количество. Это оценка ожидания по конечной выборке, и она сама случайна: другая выборка даст другое число; - связь: выборочное среднее несмещённое,
E[x̄] = E[X], а по закону больших чисел оно сходится к ожиданию с ростом выборки. Разброс оценки падает какσ/√n, поэтому для вдвое большей точности нужно вчетверо больше замеров.
Затем переходите к практике. ns/op в выводе go test -bench это выборочное среднее по итерациям, и два прогона дадут разные цифры. Поэтому бенчмарки гоняют несколько раз (-count=10) и сравнивают через benchstat, который показывает медиану и доверительный интервал, а не одно число. Для задержек сервиса смотрят перцентили (p50, p99): распределение с тяжёлым хвостом среднее описывает плохо.
Где спотыкаются
Говорят, что это одно и то же. В бытовой речи «средним» называют и то и другое, но на собеседовании ждут различия между параметром модели и его оценкой по выборке.
Считают, что ожидание есть всегда. У распределения Коши его нет, и выборочное среднее не сходится ни к чему. С задержками похожая беда: два запроса по 10 секунд среди тысячи обычных по 50 мс поднимают среднее почти до 70 мс, хотя 99,8% пользователей ничего не заметили.
Усредняют p99 нескольких инстансов и выдают результат за p99 всего сервиса. Перцентили не складываются: в Prometheus сначала суммируют бакеты гистограмм, а потом зовут histogram_quantile.