Вычисление взвешенного геометрического среднего большого списка чисел
Я пытаюсь вычислить средневзвешенное геометрическое значение большого списка чисел (около 115 тысяч).
Каждому числу присваивается значение веса 1, 2 или 3.
Кажется, есть масса способов вычислить среднее геометрическое (невзвешенное), и одна вещь, с которой я столкнулся раньше, это то, что метод:
- EXP (AVERAGE (LN (<список значений>)))
это гораздо лучший метод для больших списков, чем любой из них:
PRODUCT (nTH_ROOT ()), где n - количество значений в списке
nTH_ROOT ( PRODUCT ()), где n - количество значений в списке
Все ссылки, которые я мог найти для расчета средневзвешенного геометрического, использовали последние два метода. По моему ограниченному опыту, эти методы почти всегда приводят к ошибке при попытке запустить их по очень длинному списку. Для списка из 115 тыс., Метод номер 2 вычисляет промежуточное число, которое является нечестиво большим. Excel не способен получить 115000-й корень числа, я не уверен, что что-то вроде python или R может это сделать.
В любом случае, моя цель состоит в том, чтобы придумать формулу взвешенного геометрического среднего, основанную на методе 1 выше.
Мое предлагаемое решение ниже. Одно замечание: в основном я делаю это в excel, хотя сначала я вычислял журнал каждого значения в списке в python. Мой вопрос не о программировании в Excel, а о математике за взвешенным геометрическим средним. Я использую Excel, потому что предложенное ниже решение основано на использовании вывода сводной таблицы Excel для группировки значений списка по весу. Мой конечный результат должен быть в Excel, поэтому предпочтение отдается решениям для Excel. Его тестирование прошло хорошо в Excel, но я хотел попросить подтверждения.
взвешенное геометрическое среднее =
EXP(
AVERAGE ( LN ( <list values where weight is 1> ) ) * ( 1 / 6 )
+ AVERAGE ( LN ( <list values where weight is 2> ) ) * ( 2 / 6 )
+ AVERAGE ( LN ( <list values where weight is 3> ) ) * ( 3 / 6 )
)
Огромное спасибо!
Павел
Некоторые ссылки, которые были почти полезны:
https://www.quora.com/How-do-I-calculate-a-weighted-geometric-mean
1 ответ
Средневзвешенное геометрическое среднее можно рассчитать по следующей формуле:
Так что в Excel это было бы
=EXP(SUMPRODUCT(weights, LN(x)) / SUM(weights))