计算大数字列表的加权几何平均数
我正在计算一个大的数字列表(约115k数字)的加权几何平均数。
每个号码的权重值分配为1,2或3。
似乎有很多方法可以计算几何平均值(非加权),而我之前遇到过的一个问题是:
- EXP(AVERAGE(LN(<值列表>)))
对于大型列表来说是一个好得多的方法:
-
PRODUCT(nTH_ROOT()),其中n是列表中值的数量
-
nTH_ROOT(PRODUCT()),其中n是列表中值的数量
我可以find的计算加权几何平均值的参考文献都使用了最后两种方法。 在我有限的经验中,这些方法几乎总是在试图在很长的列表中运行时导致错误。 对于115k的列表,方法2计算一个不规则的中间数字。 Excel是不能够取得数字的115000根,我不知道是否像Python或R的东西可以做到这一点。
无论如何,我的目标是根据上面的方法1提出一个加权几何平均公式。
我build议的解决scheme如下。 一个注意:我主要是在Excel中这样做,尽pipe我先计算了Python中列表中每个值的日志。 我的问题不是关于excel的编程,更多的是关于加权几何平均数的后面的math。 我提出的Excel,因为我build议的解决scheme下面是基于使用Excel数据透视表输出根据权重分组列表值。 我最终的输出需要在excel中,所以excel友好的解决scheme是首选。 它的testing出色,但我想要求确认。
加权几何平均数=
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
加权平均几何平均值可以使用以下公式计算:
所以在Excel中,这将是
=EXP(SUMPRODUCT(weights, LN(x)) / SUM(weights))