跳转至

2.4   均值

小率在新闻里看到“城市平均月薪破万”,可妈妈办公室里没人拿到这个数。他把这条新闻拿给均哥看。均哥的第一反应不是算公式,而是问:平均值真的能代表大多数人吗?

均哥说,均值不是一个单独的按钮,而是一组选择。不同问题要选不同的“平均”。

插图 2.4.1 小率拿平均月薪新闻来问均哥


2.4.1   平均值真的能代表大多数人吗

晚上吃饭,小率刷着手机。

均哥,新闻又说我们城市平均月薪破万了。可我妈说她们办公室没一个人拿到这个数。这咋回事?
别急,先看看数据。"平均"这个词,在统计里至少有四五种算法,你得告诉我用的是哪一种。
还能有好几种?我以为加起来除以个数就完事了。
那只是其中一种,叫算术平均值。它有个老毛病——怕极端值。来,我编个例子给你算。

均哥在记事本上写:

员工 月薪(元)
9 位同事 6 000
1 位老板 1 000 000
\[ \text{算术平均} = \frac{9 \times 6000 + 1\,000\,000}{10} = 105\,400 \text{ 元} \]
看到没?十万五的"平均月薪",但 90% 的员工连零头都没拿到。这个数对总量有意义,对典型个人没意义。
……所以"平均"不是一个数学动作,而是一道选择题?
对。得先想清楚你想回答什么问题,再选用哪种均值。下面我从最常见的算术平均开始讲。

这也是学习均值时最重要的一句话:均值不是“把数据讲完”的万能答案,而是“用一个中心位置概括数据”的一种方式。它特别擅长回答总量分摊问题,比如一家公司总薪酬平均分到每位员工、一个部门总奖金平均分到每个人。

但如果你想知道“普通人通常拿多少工资”,均值就不一定是最合适的代表。它用了所有人的工资,也就会被少数特别高的工资影响。


2.4.2   把均值想成「数据的重心」

均哥不急着写公式,先在便签上画了一根数轴,把每个数据点想象成**重量相同**的小球,挂在数轴上。问:把一根杠杆放在这条数轴下面,**唯一**能让杠杆平衡的支点在哪?

那个位置,就是算术平均值。

下面的交互图把这个直觉做成了可拖拽的实物:你可以把任意一个小球拉到任何位置, 橙色支点 会自动跟着移动。


2.4.3   算术平均值

均哥的写作习惯是先写中文版,再换字母:

\[ \text{均值} = \frac{\text{所有数据相加}}{\text{数据个数}} \]

记数据是 \(x_1, x_2, \dots, x_n\),"加起来"用大写希腊字母 \(\Sigma\)(读作 sigma)表示,得到 样本均值(sample mean)

\[ \bar{x} \;=\; \frac{1}{n}\sum_{i=1}^{n} x_i \;=\; \frac{x_1 + x_2 + \cdots + x_n}{n} \]

如果数据来自整个总体,我们用希腊字母 \(\mu\)(读作 mu)表示 总体均值(population mean)

\[ \mu \;=\; \frac{1}{N}\sum_{i=1}^{N} x_i \]
记一条铁律:样本用拉丁字母带横线,总体用希腊字母

\(\bar{x}\) 对应 \(\mu\)\(s\) 对应 \(\sigma\)。这套命名是后续抽样、估计、检验的基石——必须分清"手上这一组数据的平均"和"想推断的整体平均"。

为了让公式不只是公式,我们继续用月薪小例子手算一遍。小率从新闻附带的样本说明里摘出 5 位应届生的月薪:

受访者 月薪(元)
A 5 000
B 6 000
C 6 500
D 7 500
E 25 000

先把所有月薪加起来:

\[ 5000+6000+6500+7500+25000=50\,000 \]

再除以 5 位受访者:

\[ \bar{x}=\frac{50\,000}{5}=10\,000 \]

所以这 5 位受访者的平均月薪是 10 000 元。这个 10 000 元不是说每个人都拿到 10 000 元,而是说如果把 50 000 元总月薪平均分摊给 5 个人,每人就是 10 000 元。

性质一 :所有数据到均值的偏差之和为零

\[ \sum_{i=1}^{n} (x_i - \bar{x}) = 0 \]

性质二 :所有数据到均值的**平方偏差和最小**——任何其他位置都会让"距离平方和"变大

\[ \bar{x} = \arg\min_{c}\;\sum_{i=1}^{n} (x_i - c)^2 \]
性质一是杠杆平衡的数学说法;性质二说明均值是最小二乘意义下"最像所有数据的那个点"。这条性质后面讲回归的时候会反复出现。

图 2.4.1 均值作为重心

图 2.4.1   五个数据点 [2, 4, 6, 8, 15] 的算术平均落在 7.0;橙色三角形即"杠杆支点"。注意右侧的 15 把支点从中位数 6 拉到了 7.0。

2.4.4   极端值与稳健性

均哥,那个老板月薪 100 万的例子,能不能在这里也试一下?
你自己试。下面这张图准备了三组数据——「含老板的工资」「正常对称样本」「右偏数据」。看看算术平均、中位数、截尾均值在三种数据上各自跑到了哪。

直观结论:

数据形态 均值是否可靠 推荐使用
对称、无离群点 (同岗位基础工资) 算术平均
右偏 + 长尾 (工资、房价、点击数) 中位数 / 截尾均值
乘法叠加 (投资收益、增长率) 几何平均(见 §2.4.5)
等量除以速率 (平均速度、调和率) 调和平均(见 §2.4.6)
等等,这个可以再简单点讲吗?我怎么知道一个数据集是不是"右偏"?
最快的判断方法是——先画直方图,再算 中位数 / 平均值 的比值。比值远小于 1,说明少数大值把均值拽高了,需要警惕。后面 §2.8 偏度会给你严格的指标,先记住这个三秒判断法。

图 2.4.2 几种均值在偏态数据上的对比

图 2.4.2   100 人的合成工资数据:算术平均被 5 位高薪者拽到了远离主体的位置,中位数与截尾均值贴在大多数人附近。

2.4.5   加权平均值

你大学第一学期的 GPA 怎么算的?是把所有课的绩点加起来除以课数吗?
不是,要乘学分。
为什么要乘学分?
因为高数 5 学分,体育 1 学分,肯定不能"一票一票算"。
对了——你已经在用加权平均

把每个数据 \(x_i\) 配一个 权重 (weight)\(w_i\)

\[ \bar{x}_w \;=\; \frac{\sum_{i=1}^{n} w_i x_i}{\sum_{i=1}^{n} w_i} \]

把字母翻成中文:

\[ \text{加权平均} = \frac{\text{每项数值} \times \text{对应权重}\;\text{的和}}{\text{权重之和}} \]

当所有权重相等时,加权平均就退化成算术平均。

课程 学分 \(w_i\) 绩点 \(x_i\)
高等数学 5 3.7
大学英语 3 4.0
体育 1 3.0
普通生物学 4 3.5
\[ \text{GPA} = \frac{5 \times 3.7 + 3 \times 4.0 + 1 \times 3.0 + 4 \times 3.5}{5 + 3 + 1 + 4} = \frac{47.5}{13} \approx 3.65 \]

简单平均会得到 3.55, 低估 了高数和生物两门重课的贡献。

那做用户体验评分时,权重谁定?
业务定。加权平均 = 数学动作 + 业务先验,权重本身就是商业判断。

所以权重出处必须写进报告——否则你的数据看起来精确,其实只是把一个偏见包装成了百分制分数。

加权平均最容易被滥用的地方,正是“权重看起来很客观”。比如把求职岗位做综合评分:薪资 40%、通勤 20%、成长空间 25%、稳定性 15%。这个总分当然能算,但权重本身已经表达了评价者的偏好。对急需收入的人来说,薪资权重可能更高;对正在积累经验的人来说,成长空间权重可能更高。

权重不是装饰

只要用了加权平均,就要说明权重从哪里来。权重可以来自学分、样本占比、业务重要性或专家判断,但不能偷偷藏在公式里。


2.4.6   几何平均值

一个基金三年收益分别是 +10%、−5%、+20%,算术平均年化收益多少?
(10 − 5 + 20)/ 3 = 8.33%。
那 100 块本金,按 8.33% 复利三年,应该变成多少?
100 × 1.0833³ ≈ 127 元。
实际算一下。100 × 1.10 × 0.95 × 1.20 = 125.4 元。差了 1.6 元。

为什么会差?因为收益率不是相加,而是相乘:

\[ \text{终值} = 100 \times \underbrace{1.10 \times 0.95 \times 1.20}_{=\,1.254} \]

要找一个"等价的恒定年化收益率" \(G\),应满足

\[ (1 + G)^3 = 1.10 \times 0.95 \times 1.20 \]

这正是 几何平均(geometric mean)

\[ \boxed{\;G = \left(\prod_{i=1}^{n} x_i\right)^{1/n}\;} \]

代入:\(G = \sqrt[3]{1.254} \approx 1.0784\),对应年化收益 \(\approx 7.84\%\),复利三年正好回到 125.4 元。

图 2.4.3 几何平均 vs 算术平均的本金路径

图 2.4.3   蓝色实线是真实本金,橙色虚线用算术平均推算(系统性高估),紫色点线用几何平均推算(与真实曲线终点重合)。

AM-GM 不等式:几何平均永远 ≤ 算术平均

对任何一组 正数 ,恒有

\[ G \;\le\; \bar{x}, \quad \text{当且仅当所有数据相等时取等号} \]
乘法世界里,跌 50% 要涨 100% 才回本——损失会被放大。

所以任何带波动的乘法过程,几何平均一定低于算术平均。这也是金融业"年化收益率"必须用几何平均的原因。

  • 投资收益、复利、人口增长率、通胀率
  • 比率的"平均":市盈率、生物学倍数变化(fold change)
  • 任何 乘法叠加 的指标

2.4.7   调和平均值

骑车上坡 10 km/h,下坡 30 km/h,上下坡距离一样,平均速度多少?
20 km/h。
再想想。

设上下坡各 15 km:

  • 上坡用时 \(15 / 10 = 1.5\) 小时
  • 下坡用时 \(15 / 30 = 0.5\) 小时
  • 总路程 \(30\) km,总时间 \(2\) 小时
  • 平均速度 \(= 30 / 2 = 15\) km/h

正确答案是 15 ,不是 20。

……我又被坑了。

调和平均(harmonic mean)

\[ H \;=\; \frac{n}{\displaystyle\sum_{i=1}^{n}\frac{1}{x_i}} \]

中文版:

\[ \text{调和平均} = \frac{\text{个数}}{\text{每个值的倒数之和}} \]

代入小率的例子:\(H = \dfrac{2}{\frac{1}{10} + \frac{1}{30}} = \dfrac{2}{4/30} = 15\)

三大平均的不等式链

对任意正数集合:

\[ H \;\le\; G \;\le\; \bar{x} \]

差距大小直接告诉你数据"散得有多狠"——三者越接近,数据越均匀。

场景 为什么用调和平均
等距离不同速度的平均速度 时间是路程除以速度,要对 速率求平均
几台机器并行处理同一批任务 总产能取决于"单位时间产出"的倒数关系
F1 分数(精确率与召回率的调和平均) 任何一个低,整体都低;惩罚短板
平均市盈率 每元盈利对应的价格,倒数关系

2.4.8   截尾均值

截尾均值 =「我承认极端值存在,但我不打算被它绑架」。

把数据排序后,对称地**砍掉两端各 \(p\%\) 的数据,再对剩下的部分求算术平均,就得到了 \(p\%\) **截尾均值(trimmed mean)。常见的 \(p\) 是 5%、10%、25%。

回到工资数据:100 人里去掉收入最高的 5 人和最低的 5 人,剩下的 90 人均值大约是 7.0 千元,远比未截尾的 10.6 千元贴近"普通员工"的真实水平。

截尾均值在体育评分(去掉一个最高分一个最低分)、奥运打分、薪酬调研里都被广泛使用。它是"算术平均"和"中位数"之间的折中——比中位数多用了一些信息,又比平均值更耐扛。

2.4.9   用 numpy/scipy 算五种均值

import numpy as np
from scipy import stats

x = np.array([6, 6, 6, 6, 6, 6, 6, 6, 6, 1000]) # 9 个员工 + 1 个老板, 单位: 千元

# 算术平均
print("算术平均:", x.mean()) # 105.4
# 中位数(虽然不是均值,但常一起报告)
print("中位数 :", np.median(x)) # 6.0
# 加权平均(假设最后一位老板权重 0.1, 其余各 1)
w = np.r_[np.ones(9), 0.1]
print("加权平均:", np.average(x, weights=w)) # ≈ 16.7
# 几何平均(数据需为正)
print("几何平均:", stats.gmean(x)) # ≈ 11.84
# 调和平均
print("调和平均:", stats.hmean(x)) # ≈ 6.66
# 10% 截尾均值
print("截尾均值:", stats.trim_mean(x, 0.1)) # 6.0
np.mean / np.median 看主体,gmean / hmean / trim_mean 验真。

真实分析工作里常会先把均值、中位数和稳健均值放在一起看,目的就是揪出被极端值、乘法过程或速率结构骗住的均值。

完整版脚本(含本节三张图的复现):docs/assets/scripts/ch02_descriptive/04_mean.py


你知道吗

1934 年,经济学家 Simon Kuznets 受美国国会委托做出第一份国民收入估算——这是"人均 GDP"作为政策指标的起点。Kuznets 后来因此拿了 1971 年的诺贝尔经济学奖,但他自己一直警告:

"一个国家的福利几乎不可能从一个国民收入指标推断出来。"

他指的就是 均值掩盖分布 的问题。九十多年过去了,新闻头条还在用"人均 GDP / 平均工资"刷屏,而读者依然会被搞糊涂。所以"看到平均,先问分布"这条规矩,从一开始就刻在统计学的基因里。

原来发明这个概念的人自己都在反对滥用它……
工具没错,错的是只报一个数字、不报分布的人。

小率的笔记本

  • 算术平均是数据的重心,简单、可加,有“偏差和为零”和“最小平方距离”两条好性质,但对极端值高度敏感。
  • 加权平均把不同重要性的数据加权求和,权重往往来自业务判断,必须公开。
  • 几何平均适用于乘法叠加过程,例如投资收益和增长率,且不大于算术平均。
  • 调和平均适用于速率或倒数结构,例如平均速度、效率和 F1。
  • 截尾均值通过砍掉两端极端值,保留分布主体趋势。
  • 数据近似对称时用算术平均;偏态或有离群点时优先考虑中位数或截尾均值;增长过程看几何平均;速率过程看调和平均。