评价线性模型,R平方是个好裁判吗? | 协和八
说人话的统计学
在线性模型里面加上一个新的变量,由于新的变量与已有的变量可能存在相关性,往往会改变已有变量的回归系数。同样的道理,如果在线性回归模型中去掉某个变量,剩下变量的回归系数也会随之改变。要想回顾来龙去脉,可以复习上一集《回归系数不显著?也许是打开方式不对!》的内容。
这就是说,如果我们构建模型的目的是来研究一些特定的变量与预测值 y 的关系,那么选择哪些其它变量包含在模型里面,对我们最终的结论会有不可忽视的影响。
更进一步来讲,在线性模型中选择包括哪些变量,其实就是选择模型本身——确定了变量,我们就可以用最小二乘法算出回归系数, 同时模型的预测值也就确定了。换句话说,选择变量的过程也就是在构建模型的过程。
那么,面对一个具体问题的时候,我们到底应该怎样决定在线性模型中要包含哪些变量?
构建模型,第一步不是打开统计软件,在里面捣鼓数据,而是要先熟悉模型要解决和预测的问题背景,根据前人积累起来的经验,预判一下哪些因素很可能与这一变量有关,以及它们相互之间存在什么关系,并尽量将这些因素都放到模型里面。
万一有些因素没有数据怎么办?所以说,最理想的情况下,是在研究开始之前,就对变量之间的关系以及模型的形式有个比较清晰的判断,并以此为指导设计实验,决定哪些变量需要收集数据,要不然到了数据分析的时候才发现漏掉了关键的变量,那可就欲哭无泪啦!
构建模型的过程,有点像警察抓罪犯,分析数据的人扮演着警察的角色,罪犯便是我们要找的与因变量有关的因素。 我们要先凭借已有的背景知识,找出一些可疑变量(犯罪嫌疑人),然后把这些变量加到模型里面,进行进一步的审问 。
根据咱们看过各种侦探片的剧情,往往第一步找嫌疑人最为重要,如果把真正的罪犯在这一步漏掉了,无论后面如何对嫌疑人审问地多仔细, 也只是徒劳,弄不好还会将好人屈打成招(几周以前的《天啦噜!没考虑到混杂因素,后果会这么严重?》说的就是这事)。
警察审问犯罪嫌疑人,通过判断嫌疑人的犯罪动机和过程是不是完全符合案情,找出真正的罪犯。我们在模型里面「审问」可疑变量,先假设这些变量真的与因变量有关,再来看看由这些变量组成的模型能否很好地拟合 y 的数值,只有拟合得好,我们才有证据说明这些嫌疑人是真正的罪犯。拟合得不好呢?那也不要紧,构建模型并不是一锤子买卖,我们还可以根据回归模型的结果,再进一步做调整。
今天我们要给大家讲的,就是怎样评价一个线性回归模型整体的好坏。
怎样知道模型拟合得好不好呢?
其实我们在《回归线三千,我只取这一条》里面已经讲到了一些。现在我们来回顾一下,以最简单的单变量线性模型为例:
回归线的表达式是:
给定 x 取值,其对应的回归线上的 y 值便是模型预测的 y 值,记为
大家已经知道,线性模型认为这个误差项满足正态分布,这样便可以通过最大似然法,找出了最为合理的 β0 和 β1。给定了 β0 和 β1 以后,对于任意的 xi,因变量 y 的预测值
为了衡量模型整体的优劣,我们不妨把每个测量值 yi 和预测值
我们也提到过,最大似然法找出的解,也恰好具有另外一个意义,就是能最小化误差平方和。也就是说,只要给定了模型的形式,即模型里面包含哪些变量,模型的参数就定了,同时误差平方和的形式也就确定下来了。
误差平方和越小,说明模型拟合出来的 y 值与真实的 y 值越接近 。而我们用最小二乘法得到的模型,就是这种形式的模型里最好(误差平方和最小)的一个。
但是,我们要解决的问题比这要更进一步——如果我们有多个形式不同的模型,都拟合在同一组数据上,那么哪个模型最好?
假设我们有两个模型,都是来预测子女的身高,每个模型都用最大似然法确定了最佳回归线,如下图——
左边的模型用的自变量是父亲的身高,误差平方和 = 1529.6,而右边的模型是自变量是母亲的身高,误差平方和 = 748.1。
直观上右边的模型比左边的好,似乎误差平方和越小,模型就越好,咱们暂且将误差平方和称为「模型好坏标准 v0」。
仅用误差平方和来衡量模型拟合得准不准确,有时并不合理 。 例如,同样预测身高的模型如果只是把身高的单位从厘米变成米,那么误差平方和就会缩小10000倍,那么是否意味着用米作为单位的模型更好?这显然说不通,因为用米作为单位的模型和用厘米作为单位的模型是等价的。
有没有什么办法来改良误差平方和,使得模型好坏的标准不会因为变量同时增加或减少几倍就改变?
一个自然的想法是,既然误差平方和的绝对值不行,那就用误差相对于真实值的比值呗。为了能让分子和分母的单位能够互相抵消,分母的真实值也取平方和的形式,得到 「模型好坏评分 v1」公式:
与误差平方和一样,这个评分越小,模型就拟合得越准确。
虽然上面这个评分比 v0 更好,但细细想想也是有问题的。设想一下,如果模型要预测的不是人相对地面的身高,而是相对海平面的身高,数据集里的所有人都在海拔五百米的山上。这时,模型的对身高的预测值和身高的真实值都同时增加 500 米,所以上面评分公式分子代表的误差平方和不变,但是分母却大了好几个数量级,说明评分变低,得到模型更好。
另外一方面, 我们真正关心的是不同的人身高之间的差异与哪些因素有关,只是改变了测量身高的参考系,不应该改变模型对不同的人身高差异的预测能力,所以上面采用误差平方和与真实值比值的评分方式也需要改进。
为了使得我们的「模型好坏评分」系统不会因为模型里的预测值同时增加会减小一个固定值(比如像上面的例子那样将参考系从地面变成海平面)而改变,可以先将 y 的预测值先减去其平均值(这一过程也叫做中心化),再取平方和,叫做总平方和:
从上面的公式看出,总平方和描述的是预测值 y 在其平均值的波动程度,预测值同时加上或减去一个常数对总平方和并无影响。
用总平方和代替「模型好坏评分 v1」中的分母,我们便可以得到「模型好坏评分 v2」:
作为模型好坏的评分,咱们习惯的是得分越高,模型越好,而「模型好坏评分 v2」是数值越低,模型越好,所以实际应用中,我们可以把它翻个个儿,以 「1 - 模型好坏评分 v2」作为衡量模型对现有数据的解释能力,它还有一个专门的名字,叫做「模型好坏评分v3」,哦不对,是 R-square( R 平方),记作 R2:
从上面的推导过程可以看出,给定一个模型,R2 不会随着预测值 y 的单位变化而改变,也不会因为 y 的值一块儿增加或者减小而变化。
除了这些优点,R2 的取值总是在 0 到 1 之间(具体为什么,下面会为大家解释),这使得即使不同的线性模型也能放在同一个尺子下面来衡量好坏。
R2 等于 1 的时候,该模型的误差平方和等于 0,即模型的预测值与实际值完全相等;R2 等于 0 的时候,说明误差平方和等于总平方和,这又意味着什么呢?这还得从总平方和的另外一层意义说起。
在《算术平均数:简单背后有乾坤》里面我们提到,如果我们假设每次测量的误差服从正态分布,在没有考虑其它因素的情况下,平均值其实是对变量的最大似然估计。在线性模型里面,没有任何自变量,只有一个常数的模型, y ~ β0 用最大似然法解出的模型参数 β0 就是 y 的平均值,同时 y 的预测值也是 y 的平均值。
聪明的读者这时可能已经发现了,如果将总平方和公式中的 y 平均值看作是常数模型对 y 值的预测,总平方和的另外一层意义就是常数模型的误差平方和。
从这一角度,R2 也可以理解为,正在构建的模型与模型比较,将拟合 y 的误差降低了多少个百分比。误差降低越多,说明加入的自变量对拟合 y 帮助越大。
R2 等于 0 的时候,等价于该模型的误差平方和与常数模型的误差平方和一样大,也就是说加上了各种因变量并没有使得模型预测出来的 y 值更准确,说明模型里面的这些因变量对预测 y 的值一点帮助也没有。
那有没有可能存在误差平方小于总平方和,也就是说 R2 是负数的可能呢?只要线性模型里面包含常数项 b0 ,R2 就不可能是负数。
在包含了至少一个因变量的模型里面,y ~ β0 + β1*xi 用最大似然法找到的回归系数,使得其误差平方和小于任何其它 0 和 1 取值时的误差平方和,当然也包括 β1 = 0,β0 取 y 平均值时候的误差平方和。
这就意味着,模型 y ~ β0 + β1*xi 的误差平方和,一定小于或者等于常数模型 y ~ β0 的误差平方和。
我们还可以换个角度更通俗地理解上面这个结论。如果一个自变量对减小误差平方和完全没有帮助,则线性模型会自动放弃使用这一自变量,将它的回归系数设为 0。
这也就是说,往模型里面加入新的自变量,模型的误差平方和只会减小不会增加,从而 R2 只会增加不会减小。
根据上面的讨论,只要模型里面包含了常数项 b0,R2 就不可能是负数,如果你哪天发现你的模型 R2 是负数,那么一定是你犯了一个技术性的错误——忘了在模型里面加入截距项 b0(嗯,不要问我是怎么知道的)。
由于往模型里面加入新的自变量只可能提高 R2,这就使得用 R2 来比较包含不同数量的自变量的模型时候,总会对自变量多的模型比较偏心,这有时候并不合理,在下一集里,我们会和大家继续讨论更多升级版的「模型好坏标准」。
精选每日一题
更多精选题可回顾历史推送文末
题目来源:临床执业医师资格考试往届真题
本期主播:闲闲闲兔
点击下方标题可阅读本系列任意文章
干货
第1章 高屋建瓴看统计
第2章 算术平均数与正态分布
第3章 t检验:两组平均数的比较
第4章 方差分析(ANOVA):多组平均数的比较
第5章 线性回归:统计建模初步
(未完,更新中)
自检
番外篇
作者:田菊
编辑:黑草乌叶
质控:粉条儿菜