
做了几年数据分析之后回头看才知道“数学期望、方差、标准差、样本方差、协方差、相关系数”这六个概念有多重要。做产品要看用户行为均值搞金融要算收益波动跑机器学习要理解特征分布甚至连打游戏抽卡、奶茶店算客单价背后都是同一套统计基础。但我也记得刚开始学的时候有多懵公式背得下来考试套得上一碰真实数据就不知道选哪个、算出来又是什么意思。这篇文章就从零做一次概念扫盲不堆推导不绕术语尽量用能上手的方式把这六个概念讲透配着手算例子和代码示例最后给你一份可以直接抄的避坑清单。不管你是学生、转行人还是工作中要碰数据的朋友这篇都应该能帮你把这些概念真正“落地”。1. 数学期望概率世界的“加权平均”1.1 一个赌局游戏讲透期望的本质假设有人跟你玩一个游戏掷一枚公平的骰子掷出几点就给你几块钱。玩之前你肯定想知道平均每把能赢多少答案很简单3.5 元。这个数字是这么来的——每个点数出现的概率都是六分之一所以把点数和对应概率加权求和E(X) 1×(1/6) 2×(1/6) 3×(1/6) 4×(1/6) 5×(1/6) 6×(1/6) 3.5这里最值得强调的一点是3.5 这个数字骰子永远掷不出来。它不是对某一次结果的预测而是在“重复很多很多次”的前提下你平均每把能拿到的钱。这就是数学期望的本质以概率为权重的加权平均。现实里的应用到处都是。保险公司给你定车险保费核心就是估算未来理赔金额的期望再加上运营成本和利润。游戏公司设计抽卡概率那个“综合概率”本质上也是一个期望值只不过在宣传上做了包装。理解了期望你就能看懂很多商业设计背后的算盘。1.2 两条基本性质后面全靠它期望有两条非常实用的性质后面算方差、协方差甚至做线性回归都会反复用到。第一条E(aX b) aE(X) b。意思是数据整体缩放和平移期望也跟着缩放和平移。比如一个部门所有人的工资统一加 500 块平均工资也加 500统一打八折平均工资也变成原来的 0.8 倍。这个性质让人安心因为现实中的单位换算、基准调整都能直接作用在期望上不用重新算一遍数据。第二条E(X Y) E(X) E(Y)。两个变量之和的期望等于各自期望之和。关键在于这个性质不需要 X 和 Y 独立任何情况下都成立。听着像废话但它是很多复杂推导的起点。比如你早上需要坐两趟地铁总通勤时间的期望就是两段路程期望时间之和不管两趟车晚没晚点、有没有关联。1.3 连续型变量与一个常见误区如果随机变量不是离散的点而是连续的期望的定义就从“求和”变成“积分”E(X) ∫ x·f(x) dx其中 f(x) 是概率密度函数。本质上还是加权平均只是把每个点的概率换成了概率密度。理解这一点就够用了暂时不需要纠结积分的细节。但有一个误区必须单独拎出来说期望值常常不是“最可能出现的值”。我见过很多新人拿到用户消费数据一看平均值就觉得这是“典型用户”的消费水平。如果数据分布严重右偏比如大多数用户只花几十块少数大客户花几万平均值会被少数人拉得很高这时候平均值根本代表不了“大多数”。期望是数学上的概念日常决策里碰到偏态分布更重要的是中位数。不是期望错了而是用错了场景。2. 方差衡量数据“散开”的程度2.1 平均工资一样日子过得可能完全不同两家公司都宣传员工平均月薪 8000 元听起来差不多。但第一家员工收入在 7000 到 9000 之间浮动第二家一半人拿 3000一半人拿 13000。你会选哪家绝大多数人会选第一家因为“稳定”。平均值只告诉我们数据中心在哪里却完全没告诉我们数据有多分散。方差Variance就是专门描述分散程度的指标。它量化的是每个数据点离平均值平均偏离了多远——只不过这个“多远”是用偏差的平方来算的。为什么需要这个指标因为现实中只看平均值会骗人。两个班级平均分一样一个班成绩均衡一个班两极分化教学策略完全不同两支股票平均收益率一样一个波动平稳一个大起大落投资体验和风险完全不同。方差就是把“波动”变成数字的那个工具。2.2 为什么一定用平方假设一组成绩是 60、70、80、90、100平均值是 80。每个数据点减平均值得到一组偏差-20、-10、0、10、20。如果直接把偏差加起来结果是 0。不是因为这组数据不分散而是正负偏差互相抵消了。事实上任何一组数据偏差之和永远等于 0。所以直接用偏差总和衡量离散度没有任何意义。那怎么办两种思路取绝对值或者取平方。取绝对值算出来叫平均绝对偏差取平方算出来就是方差。平方还有一个额外的好处对偏离大的点惩罚更重。一个偏离 20 的点贡献 400一个偏离 10 的点贡献 100偏离越大的点对结果的拉动越猛。这和我们对“波动”的直觉是一致的——极端值确实意味着更大的不确定性和风险。方差的定义式是 Var(X) E[(X - E(X))²]也就是偏差平方的平均。还有一个等价形式Var(X) E(X²) - [E(X)]²即“平方的均值减去均值的平方”。手工计算时用这个公式更省事后面理解协方差也会有类似结构。2.3 手算一个完整例子还是那组成绩60、70、80、90、100平均分 80。每个分数和平均分的偏差分别是 -20、-10、0、10、20偏差平方分别是 400、100、0、100、400加起来是 1000除以 5方差等于 200。换一组数据78、79、80、81、82平均分同样是 80。偏差是 -2、-1、0、1、2平方是 4、1、0、1、4总和是 10除以 5方差等于 2。两组成绩的平均表现一模一样但方差从 200 变成了 2。如果这两组数据代表两个班级你立刻能知道哪个班的成绩更均匀、教学效果更稳定。这就是方差的应用价值它把“波动”变成了一个可比较、可排序的数字。金融里讲收益波动制造业里讲尺寸公差运维里讲延迟抖动本质上看的都是方差。方差越大不确定性越大风险越大。3. 标准差把单位拉回现实3.1 开根号不只是一个数学动作方差有个很尴尬的问题单位被平方了。数据单位是“元”方差单位就是“元的平方”数据单位是“分”方差单位就是“分的平方”。这种单位在现实里几乎没法解释——你告诉别人“这批零件尺寸的方差是 0.0001 毫米平方”对方大概率一脸茫然。标准差Standard Deviation就是对方差开根号把单位拉回原数据的量纲。标准差 σ √Var(X)。还是那组成绩方差 200标准差就是 √200 ≈ 14.14 分。这句话翻译成大白话是这些成绩偏离平均分大约 14 分左右。有了单位就有了实际意义。这就是为什么报告数据的时候标准差比方差更常用。方差适合在数学推导和理论公式里使用标准差适合在业务沟通和结果展示里使用。两者只是开根号的关系但“14.14 分”和“200 分平方”给人的感觉完全不一样。3.2 正态分布下的经验法则如果数据近似服从正态分布标准差会变成一把非常顺手的“尺子”这就是著名的经验法则大约 68% 的数据落在平均值加减一个标准差的范围内大约 95% 的数据落在平均值加减两个标准差的范围内大约 99.7% 的数据落在平均值加减三个标准差的范围内。这套法则在质量控制里用得极其普遍。比如一条生产线加工轴承平均直径 50 毫米标准差 0.01 毫米。某天突然出现一个 50.04 毫米的零件距离均值超过 3 个标准差按照 99.7% 的覆盖范围这种极端值几乎不该出现那设备大概率已经出问题了。这就是最朴素的异常检测思路。我工作中做监控告警也经常用这个逻辑。指标突然冲出均值加减 3 个标准差的区间系统自动报警原理就是这么简单但非常管用。3.3 一个必须牢记的前提经验法则只适用于正态分布或近似正态的数据。如果数据严重偏态或者有双峰、多峰结构套 68-95-99.7 会得出完全离谱的结论。这一点我见过太多人忽略。很多可视化工具默认帮你画均值加减几倍标准差的区间但你的数据如果不是正态分布这个区间就没有意义。比如用户在线时长通常严重右偏少数人挂机很久大多数人几分钟就离开直接套正态经验法则画出来的区间毫无参考价值。用之前先看一眼分布形态画个直方图或密度图这是基本功。4. 样本方差那个让人困惑的 n-14.1 我们很少能拿到“总体”前面讲的方差严格来说叫总体方差——前提是你拥有全部数据。可真实世界里几乎不可能拿到总体。你想知道全市高中生的平均身高不可能把每个学生拉来量一遍只能抽样。想测一批灯泡的平均寿命测完就烧坏了更不可能全测。你手里永远只有一份样本却想用它推断总体的性质。这时候问题来了直接用样本数据套总体方差公式算出来的结果会系统性偏小。统计上称为“有偏估计”。为了让样本方差能更好地估计总体方差统计学家把分母从 n 改成了 n-1样本方差 S² 1/(n-1) × Σ(Xi - X̄)²这就是传说中“样本方差除以 n-1”的来源。它不是一个随意的修正背后是有数学证明的无偏估计。4.2 两个直觉帮你不忘 n-1第一个理解样本均值是从样本数据里算出来的它天然比总体均值更贴近这些样本点。用样本均值代替总体均值去计算偏差偏差会比真实情况偏小方差自然就被低估了。要让方差回到无偏的水平就得除以一个更小的数。n-1 比 n 小正好起到这种修正作用。第二个理解自由度。当你已经知道样本均值的时候n 个样本点里只有 n-1 个是“自由”的。举个例子三个数的均值是 10前两个数你可以随便定比如 8 和 12第三个数就被均值锁死了只能是 10。也就是说真正提供独立信息的观测只有 n-1 个自由度就是 n-1。这两种理解都不是严谨证明但能帮你建立不会错的直觉。等你真正需要较真的时候再去看无偏性的严格推导也不迟。4.3 工具里的分母坑实际使用工具时分母这个问题极容易踩坑。不同工具、不同函数的默认行为都不一致工具总体方差除以 n样本方差除以 n-1ExcelVAR.PVAR.SPython NumPynp.var(data)默认 ddof0np.var(data, ddof1)pandasdf.var(ddof0)df.var()默认 ddof1Rvar() 默认就是样本方差var()无需额外参数我见过好几次团队对不上数据的场景一个人用 Excel 的 VAR.S另一个人用 Python 的 np.var() 默认参数程序跑出来结果差一点两拨人互相怀疑对方代码有问题最后才发现是分母不一样。这种低级失误特别伤人。动手之前先确认工具默认行为再统一口径能省掉很多冤枉时间。5. 协方差两个变量的“同向程度”5.1 从单变量走到双变量前面几个概念都在描述单个变量平均水平如何、波动多大。但现实里的问题几乎都是多变量的广告投入和销售额是什么关系温度和用电量是什么关系身高和体重是什么关系协方差Covariance就是衡量两个变量“一起变化”程度的指标。它的定义式Cov(X, Y) E[(X - E(X))(Y - E(Y))]这个公式看着吓人拆开看其实很直观。对每个数据点做两件事看 X 比自己的平均值高还是低看 Y 比自己的平均值高还是低然后把两个偏差乘起来。如果 X 偏高的时候 Y 也偏高乘积为正如果 X 偏低的时候 Y 也偏低两个负数相乘结果还是为正。当正的乘积占主导协方差就是正的说明两个变量同向变化。反过来如果 X 偏高时 Y 反而偏低乘积为负协方差就是负的说明两个变量反向变化。理解了这个逻辑你就明白协方差测量的不是“因果关系”而是“运动方向的一致性”。5.2 手算一次彻底弄懂假设统计了五个家庭的年收入 X万元和年储蓄 Y万元X10、20、30、40、50平均值 30 Y2、3、5、8、12平均值 6逐项计算 (X-30)(Y-6)(10-30)×(2-6) (-20)×(-4) 80 (20-30)×(3-6) (-10)×(-3) 30 (30-30)×(5-6) 0×(-1) 0 (40-30)×(8-6) 10×2 20 (50-30)×(12-6) 20×6 120把五个乘积加起来80 30 0 20 120 250除以 5协方差等于 50。结果为正说明收入越高储蓄越多方向符合直觉。你可以看到五个乘积基本都是正的只有一个 0 和一个较小的 20正方向的一致性很强。这就是协方差告诉你的信息。5.3 协方差最大的毛病量纲协方差有一个致命问题它的数值大小没有绝对意义。还是上面收入和储蓄的数据如果收入不是用“万元”而是用“元”来计量收入数列变成 100000、200000、300000、400000、500000重新算一遍协方差会变成原来的 10000 倍。数据关系一点没变算出来的数字却天差地别。这意味着什么意味着我们不能拿两个不同量纲的数据集的协方差去比较大小。一个协方差是 50另一个是 30你能说前者关系更强吗不能。因为两者的计量单位可能完全不同没有可比的基础。要让“关系强弱”变成可跨数据集比较的数值就必须消除量纲的影响。这就引出了下一个概念相关系数。6. 相关系数标准化之后的可比尺度6.1 标准化之后一切变得可比皮尔逊相关系数的定义式r Cov(X, Y) / (σX × σY)也就是把协方差除以两个变量各自标准差的乘积。这个操作相当于对 X 和 Y 分别做标准化把它们统一到同一个无量纲的尺度上。经过这一步r 的取值范围被牢牢限制在 [-1, 1] 之间并有了明确的解读规则相关系数含义r 接近 1强正相关X 增大时 Y 明显增大r 接近 -1强负相关X 增大时 Y 明显减小r 接近 0没有明显的线性相关关系用前面收入和储蓄的例子算一下X 的方差是 200标准差约 14.14Y 的方差是 13.2标准差约 3.63协方差是 50。于是r 50 / (14.14 × 3.63) ≈ 50 / 51.33 ≈ 0.970.97 说明收入和储蓄之间存在非常强的正相关。注意这个数字和收入用“万元”还是“元”已经没关系了因为分子分母里的量纲被约掉了。这就是相关系数最大的价值有界、无量纲、可跨数据集比较。6.2 相关绝不等于因果这是一条红线所有统计概念里最容易被误解的就是这一条。两个变量高度相关绝不代表一个变量导致另一个变量。最经典的例子冰淇淋销量和溺水人数高度正相关但冰淇淋不会导致溺水真正原因是夏天的气温同时影响了两者。再比如某座城市的咖啡消费量和软件从业者数量高度相关但这不是喝咖啡催生了软件行业背后很可能是人口规模和产业结构这两个共同因素在同时起作用。做业务分析时如果仅凭相关系数就下因果结论轻则分析报告被领导打回重则基于错误归因做出错误决策。相关系数只能告诉你“它们有联动”因果关系的确认需要更严谨的实验设计、因果推断方法以及扎实的业务判断。6.3 低相关不等于没关系皮尔逊相关系数还有一个经常被忽略的边界它只刻画线性相关的程度。如果两个变量之间存在完美的非线性关系相关系数可能非常接近 0。举个例子X 取 -2、-1、0、1、2Y 分别取 4、1、0、1、4。这组数据里 Y 和 X 的关系非常确定就是 Y X²但算相关系数会发现它几乎等于 0。因为随着 X 增大Y 先下降后上升线性趋势互相抵消了。所以看到 r 接近 0 时正确的解读是“没有明显的线性关系”而不是“两个变量没关系”。拿到数据先画散点图这是最便宜的检查手段。散点图里能看出线性、曲线、异方差、离群点等大量信息比单看一个相关系数可靠得多。7. 综合案例这些概念怎么一起用7.1 选基金期望和标准差一起看假设你在两只基金之间做选择。过去 12 个月的月收益率基金 A平均收益率 1.2%标准差 0.5% 基金 B平均收益率 1.2%标准差 3%只看平均收益两只基金一模一样。结合标准差基金 A 的收益波动远小于基金 B确定性更高。大多数风险偏好保守的人会把 A 视为更稳妥的选择。但这里也要说清楚标准差小只说明历史波动小不代表未来一定安全。有些投资者恰恰愿意承担更大波动去博取潜在的超额收益。关键是理解期望和标准差的配合关系——期望回答“平均在哪里”标准差回答“有多不确定”。只看其中任何一个对数据的认识都是残缺的。7.2 资产组合里的相关系数应用接着上面的例子如果你同时持有基金 A 和基金 B并且算出它们过去一年的相关系数是 0.85这意味着两只基金的涨跌方向高度同步。表面上看你买了两只不同的基金但在风险面前它们几乎是一体的市场下跌时它们大概率一起跌分散配置的意义被大幅削弱。反过来如果两只基金的相关系数接近 0 甚至为负组合风险就能真正被分散。一个下跌时另一个可能还在上涨整体资金的波动会小于单只基金的波动。这就是现代投资组合理论里最基本的思想不只看单个资产的期望和方差还要关注资产之间的协方差和相关系数。这个逻辑在金融之外同样适用。比如供应链管理里评估多个供应商的交货风险如果两个供应商都依赖同一家上游原料商它们的风险相关性就很高一个出问题另一个大概率也出问题。看相关系数本质上是在评估不确定性会不会叠加。8. 常见误区与代码速查8.1 六个坑每个都有人踩过把前面提到的坑集中整理一遍都是实际工作中真实遇到过的。第一把期望当作预测值。期望是长期平均不保证单次结果。掷骰子的期望是 3.5但你每一把只能掷出 1 到 6 里的一个整数。第二混淆方差和标准差的单位。方差是平方单位很难直接解释标准差和原始数据同单位适合做描述和汇报。告诉别人“方差是 200 分平方”基本没意义说“标准差是 14.14 分”对方立刻能理解。第三样本方差分母选错。分析抽样数据时用 n-1只有拿到完整总体才用 n。工具默认值五花八门计算前务必确认。第四跨量纲比较协方差。协方差数值受量纲影响不能拿两个不同数据集的结果直接比大小。要比关系强弱去看相关系数。第五相关系数低就认为没关系。低相关只说明线性关系弱可能存在明显的非线性关系。先画散点图再下结论。第六把相关当因果。这是最贵的一个错误尤其在做业务决策时。永远记住相关关系不等于因果关系中间可能隔着一个你还没发现的共同原因。8.2 Python 实操速查表最后给一份可以直接上手的代码import numpy as np import pandas as pd data np.array([60, 70, 80, 90, 100]) # 期望/均值 mean np.mean(data) # 总体方差和标准差分母 n var_pop np.var(data) # ddof0NumPy 默认 std_pop np.std(data) # ddof0 # 样本方差和标准差分母 n-1 var_sample np.var(data, ddof1) std_sample np.std(data, ddof1) # 协方差矩阵和相关系数矩阵 x np.array([10, 20, 30, 40, 50]) y np.array([2, 3, 5, 8, 12]) # np.cov 默认 ddof1返回的是样本协方差矩阵 cov_mat_sample np.cov(x, y) # 要算总体协方差矩阵手动指定 ddof0 cov_mat_pop np.cov(x, y, ddof0) # np.corrcoef 返回相关系数矩阵对角线为 1 corr_mat np.corrcoef(x, y)特别提醒np.cov 默认按样本协方差ddof1计算而 np.var 默认按总体方差ddof0计算。两个函数的默认行为不一致混用之前一定要看文档、做验证。Excel 这边的对应函数也列一下统计量Excel 函数均值期望的样本版AVERAGE总体方差VAR.P样本方差VAR.S总体标准差STDEV.P样本标准差STDEV.S总体协方差COVARIANCE.P样本协方差COVARIANCE.S相关系数CORREL我自己这些年用下来的体会是这六个概念不用死记公式真正值钱的是建立直觉期望就是加权平均方差衡量散开程度标准差把单位拉回现实样本方差的 n-1 是对估计偏差的修正协方差看两个变量运动方向是否一致相关系数是在统一尺子上衡量这种一致性有多强。把这层关系想通了再去看机器学习里的特征选择、金融里的风险评估、产品里的指标分析会发现很多“高级”的东西都是这些基础概念的组合。统计这东西一旦在脑子里有了画面感真的不用再背公式。