中盾观察
首页 / 趋势观察 / 正文

回归与相关,别再混为一谈

栏目:趋势观察 | 约1495字 | 2026-09-08

做数据的人常碰到一个提问:这两个变量相关性很高,是不是就能拿来预测?问题本身没错,但把“相关”和“回归”当成同一件事,后面的判断就容易走偏。 先看一个具体数字。某电商平台统计了30天的日活跃用户数和当日订单量,两者相关系数0.92。这个数字说明什么?说明用户多的日子订单通常也多,走势同步。但它没告诉你,用户每增加1万,订单会增加多少。要回答后一个问题,得做回归。

相关回答的是“一起动”的程度。它的取值范围在-1到1之间,0表示没有线性同步关系,1表示完全同向,-1表示完全反向。这个指标对称:A和B的相关系数,等于B和A的相关系数。 回归回答的是另一个问题:当X变化一个单位,Y平均变化多少。它要拟合一条线,写出Y=a+bX这样的方程。这里的b叫回归系数,它不对称——用X预测Y和用Y预测X,得到的系数通常不一样。比如身高和体重,相关系数大约0.7,但“身高每增加1厘米,体重平均增加多少”和“体重每增加1公斤,身高平均增加多少”,是两个不同的问题。

最常见的误用,是拿高相关当因果,或者拿高相关当预测能力。 举个例子。某城市统计了10年的数据,发现冰淇淋销量和溺水人数相关系数达到0.85。如果只看这个数字,很容易得出“吃冰淇淋导致溺水”的荒谬结论。真实原因是第三个变量:气温。夏天温度高,买冰淇淋的人多,游泳的人也多。这就是遗漏变量问题,回归里如果只放冰淇淋销量,系数会严重偏误。 另一个例子来自预测场景。有人用某只股票过去20天的成交量与价格做回归,R²达到0.9,就认为模型很准。但R²高只说明这20天里拟合线贴合数据,不代表下一交易日还能用。时间序列里,趋势项会让两个都在上涨的变量呈现高相关,这种相关有时是虚假的,去掉趋势后可能接近0。

回归能做的事,比相关多一层。它可以把多个变量放进同一个方程,控制住混淆因素。 比如研究“教育年限对收入的影响”,单看两者相关,大约0.4。但收入还受地区、行业、工作经验影响。把这些变量一起放进回归,教育年限的系数会变化——可能从每年多赚8000元,降到5000元。剩下的3000元,被其他变量解释了。这一步是相关做不到的。 反过来,相关也有回归替代不了的地方。当两个变量关系不是直线时,比如Y随X先升后降,相关系数可能接近0,但回归加上X²项就能捕捉到这种倒U型走势。所以实务里常先画散点图,再决定用哪种工具。

还有几个细节值得留意。 第一,量纲影响回归系数,不影响相关系数。把收入从“元”换成“万元”,回归系数会变,相关系数不变。所以比较不同回归的系数大小时,要先看变量单位。 第二,异常值对两者影响不同。一个极端点可能把相关系数从0.6拉到0.3,也可能把回归线整体拽偏。处理前先看箱线图或散点图,别直接跑模型。 第三,样本量小的时候,相关系数波动很大。n=10时,相关系数0.6可能并不显著;n=100时,0.2也可能显著。看p值的同时,也要看置信区间。

回到开头那个问题。相关系数0.92,能不能预测订单量?如果只是粗略判断“用户多的时候订单也多”,够用。如果要给出“用户增加1万,订单增加多少”的具体数字,或者要控制促销活动、节假日这些因素,就得用回归。 更稳妥的做法是两步走:先用相关和散点图看走势,确认有没有同步关系、是不是直线;再用回归量化这种关系,并检查残差和变量显著性。两者不是替代关系,是配合关系。

最后提醒一点。无论是相关还是回归,都只能描述数据里已经发生的关系。把这种关系外推到未来,需要额外假设:结构不变、没有新的混淆变量进入。观察数据时,多问一句“这个关系在什么条件下成立”,比记住系数本身更有用。