几何平均详解,及其与算术平均、调和平均、均方根的关系
2. 几何平均与算术平均的转换关系(附):
3.2 几何平均数适用于求连乘样本的均值,它是变化的中心,代表平均变化率;算术平均数适用于求连加样本的均值,它是数值的中心,代表平均数量;中位数适合求带有离群值样本的均值,它是位置的中心,代表平均位置。
例:假定某地储蓄年利率(按复利计算):5%持续1.5年,3%持续2.5年,2.2%持续1年。求此5年内该地平均储蓄年利率。
r1, r2, r3 = 1.05, 1.03, 1.022 # 各年利率
n1, n2, n3 = 1.5, 2.5, 1 # 各年利率持续时间
G = (r1**n1*r2**n2*r3**n3)**(1/(n1+n2+n3))
r_avg = G - 1
print('用几何级数计算平均年利率的误差:', (1+r_avg)**(n1+n2+n3) - r1**n1*r2**n2*r3**n3) # 几何平均数的n次方等于总量
A = (n1*r1+n2*r2+n3*r3)/(n1+n2+n3)
r_avg = A - 1
print('用算术级数计算平均年利率的误差:', (1+r_avg)*(n1+n2+n3) - r1**n1*r2**n2*r3**n3) # 算术平均数的n倍等于总量
打印结果:
用几何级数计算平均年利率的误差: -2.220446049250313e-16
用算术级数计算平均年利率的误差: 3.9880648729242933
4 四种平均数的大小关系:调和平均 < 几何平均 < 算术平均 < 均方根
当yi=0时,上式为各点的四种平均数;当yi≠0时,上式为各残差点的四种平均数。
import numpy as np
from scipy.stats import hmean, gmean
from sklearn.metrics import mean_squared_error
a = np.random.rand(3)+1
print(a)
print('调和平均:{:.3f},几何平均:{:.3f},算术平均:{:.3f},均方根:{:.3f}'.format(hmean(a), gmean(a), a.mean(), mean_squared_error(a, np.zeros(len(a)), squared=False)), '\n'
'调和平均 < 几何平均 < 算术平均 < 均方根:', hmean(a) < gmean(a) < a.mean() < mean_squared_error(a, np.zeros(len(a)), squared=False), '\n')
a = np.random.rand(3)
print(a)
print('调和平均:{:.3f},几何平均:{:.3f},算术平均:{:.3f},均方根:{:.3f}'.format(hmean(a), gmean(a), a.mean(), mean_squared_error(a, np.zeros(len(a)), squared=False)), '\n'
'调和平均 < 几何平均 < 算术平均 < 均方根:', hmean(a) < gmean(a) < a.mean() < mean_squared_error(a, np.zeros(len(a)), squared=False))
打印结果:
[1.86470298 1.61571436 1.54136216]
调和平均:1.663,几何平均:1.668,算术平均:1.674,均方根:1.680
调和平均 < 几何平均 < 算术平均 < 均方根: True
[0.00289524 0.78991974 0.73486733]
调和平均:0.009,几何平均:0.119,算术平均:0.509,均方根:0.623
调和平均 < 几何平均 < 算术平均 < 均方根: True
即四种平均值也是按此种顺序趋近于样本点中的较小值,调和平均最接近,均方根最远离。
from scipy.stats import hmean
hmean([1, 4])
1.6000000000000001
hmean([1, 2, 3, 4, 5, 6, 7])
2.6997245179063363
另:四种平均值受样本点中离群值的影响程度也遵循此种顺序,即调和平均受离群值影响最小,均方根受离群值影响最大。