回归与相关:入门者常踩的三个坑
去年冬天,我翻到一份城市用电数据:某小区连续30天,空调耗电量和室外温度几乎同步涨跌,相关系数0.87。有人马上说,温度每升1度,耗电增加2.3度——这就是典型的把相关当成了回归。相关说的是“一起动”,回归说的是“怎么动、动多少”。两件事挨着,但不是同一件事。
先看相关。它的核心是一个数:相关系数r,取值在-1到1之间。r=0.87,意味着两个变量的走势高度同向;r=-0.6,说明一个涨另一个倾向于跌;r接近0,那基本各走各的。注意,r只捕捉线性关系。我见过一组数据,x是1到10,y是x的平方,画出来是一条漂亮的抛物线,但r算出来是0。因为相关没看到曲线,只认直线。所以拿到一个相关系数,先别急着下结论,把散点图拉出来看一眼,比什么都强。
回归则是另一套动作。它要拟合一条线,常见的是y = a + bx,然后用x去预测y。还是用电那个例子,如果真做回归,会得到截距a和斜率b,b的解读是:其他条件不变时,x每变动一个单位,y平均变动b个单位。但这里有个门槛——回归假设x是自变量、y是因变量。相关是对称的,x和y换位置,r不变;回归不对称,你拿温度预测耗电,和拿耗电预测温度,得到的是两条完全不同的线。
第一个坑,是把相关直接翻译成因果。有份数据我印象很深:某城市冰淇淋销量和溺水人数,相关系数0.79。难道是冰淇淋把人推进水里?显然不是。背后是第三个变量——气温。天热,买冰淇淋的人多,游泳的人也多。做数据观察时,看到两个走势贴合,先问一句:有没有隐藏的共同驱动因素?这一步不做,后面所有解读都可能跑偏。
第二个坑,是只看回归系数,不看R方。R方衡量的是模型解释了因变量多少波动。比如用广告费预测销售额,R方=0.15,意味着广告费只解释了15%的销售变化,剩下85%来自定价、季节、竞品等。这时候哪怕回归系数显著,拿它做预测也心里没底。我一般会盯三个数:R方、样本量、p值。样本少于30,R方再高也得多留个心眼。
第三个坑,是忽略异常值对回归线的拉扯。举个具体数字:10个点的数据,9个点大致沿着y=x走,第10个点是(100, 0)。加上这个点,回归线斜率能从1掉到0.3左右。一条线被一个点带偏,预测自然跟着歪。处理办法不复杂:先画图,标出偏离超过2倍标准差的点,再决定是剔除、分段还是换稳健回归。别小看这一步,很多看起来矛盾的结论,源头就是几个没处理干净的极端值。
那什么时候用相关,什么时候用回归?我的习惯是:如果只是想看两个指标有没有同步的迹象,先算相关,快速筛一遍;如果目标明确是拿一个变量去预测另一个,那就上回归,但同时把R方和残差图一起看。残差图能暴露不少问题——如果残差呈现喇叭形,说明误差方差不恒定,这时候的预测区间会失真。
回到开头那个用电例子。后来我们补了湿度、工作日/周末两个变量,回归的R方从0.61提到0.84。温度依然是显著变量,但单独用温度做预测,误差比多变量模型大了将近一倍。数据观察这件事,往往不是找一个万能指标,而是不断把混杂因素拆开。相关帮你发现线索,回归帮你量化关系,两者配合,预测才不至于变成猜。
最后说一句实在话:相关系数高不代表能预测,回归显著也不代表因果关系成立。拿到任何一组走势,先画图,再算数,最后问一句“还有没有别的解释”。这三步做完,大部分入门级的坑,都能绕过去。