查看原文
其他

评价线性模型,R平方是个好裁判吗? | 协和八

2017-07-13 田菊 协和八

说人话的统计学

在线性模型里面加上一个新的变量,由于新的变量与已有的变量可能存在相关性,往往会改变已有变量的回归系数。同样的道理,如果在线性回归模型中去掉某个变量,剩下变量的回归系数也会随之改变。要想回顾来龙去脉,可以复习上一集《回归系数不显著?也许是打开方式不对!》的内容。

这就是说,如果我们构建模型的目的是来研究一些特定的变量与预测值 y 的关系,那么选择哪些其它变量包含在模型里面,对我们最终的结论会有不可忽视的影响。

更进一步来讲,在线性模型中选择包括哪些变量,其实就是选择模型本身——确定了变量,我们就可以用最小二乘法算出回归系数, 同时模型的预测值也就确定了。换句话说,选择变量的过程也就是在构建模型的过程。

那么,面对一个具体问题的时候,我们到底应该怎样决定在线性模型中要包含哪些变量?

构建模型,第一步不是打开统计软件,在里面捣鼓数据,而是要先熟悉模型要解决和预测的问题背景,根据前人积累起来的经验,预判一下哪些因素很可能与这一变量有关,以及它们相互之间存在什么关系,并尽量将这些因素都放到模型里面。

万一有些因素没有数据怎么办?所以说,最理想的情况下,是在研究开始之前,就对变量之间的关系以及模型的形式有个比较清晰的判断,并以此为指导设计实验,决定哪些变量需要收集数据,要不然到了数据分析的时候才发现漏掉了关键的变量,那可就欲哭无泪啦!

构建模型的过程,有点像警察抓罪犯,分析数据的人扮演着警察的角色,罪犯便是我们要找的与因变量有关的因素。 我们要先凭借已有的背景知识,找出一些可疑变量(犯罪嫌疑人),然后把这些变量加到模型里面,进行进一步的审问 。

根据咱们看过各种侦探片的剧情,往往第一步找嫌疑人最为重要,如果把真正的罪犯在这一步漏掉了,无论后面如何对嫌疑人审问地多仔细, 也只是徒劳,弄不好还会将好人屈打成招(几周以前的《天啦噜!没考虑到混杂因素,后果会这么严重?》说的就是这事)。

警察审问犯罪嫌疑人,通过判断嫌疑人的犯罪动机和过程是不是完全符合案情,找出真正的罪犯。我们在模型里面「审问」可疑变量,先假设这些变量真的与因变量有关,再来看看由这些变量组成的模型能否很好地拟合 y 的数值,只有拟合得好,我们才有证据说明这些嫌疑人是真正的罪犯。拟合得不好呢?那也不要紧,构建模型并不是一锤子买卖,我们还可以根据回归模型的结果,再进一步做调整。

今天我们要给大家讲的,就是怎样评价一个线性回归模型整体的好坏。

怎样知道模型拟合得好不好呢?

其实我们在《回归线三千,我只取这一条》里面已经讲到了一些。现在我们来回顾一下,以最简单的单变量线性模型为例:

回归线的表达式是:

给定 x 取值,其对应的回归线上的 y 值便是模型预测的 y 值,记为,而模型中误差项 εi 表达的是预测值与实际值之间的误差——我们的模型越准确,误差就会越小。

大家已经知道,线性模型认为这个误差项满足正态分布,这样便可以通过最大似然法,找出了最为合理的 β0 和 β1。给定了 β0 和 β以后,对于任意的 xi,因变量 y 的预测值也就确定下来了。

为了衡量模型整体的优劣,我们不妨把每个测量值 y和预测值之间的误差用平方和的形式综合起来,作为一个初步的评价标准:

我们也提到过,最大似然法找出的解,也恰好具有另外一个意义,就是能最小化误差平方和。也就是说,只要给定了模型的形式,即模型里面包含哪些变量,模型的参数就定了,同时误差平方和的形式也就确定下来了。

误差平方和越小,说明模型拟合出来的 y 值与真实的 y 值越接近 。而我们用最小二乘法得到的模型,就是这种形式的模型里最好(误差平方和最小)的一个。 

但是,我们要解决的问题比这要更进一步——如果我们有多个形式不同的模型,都拟合在同一组数据上,那么哪个模型最好?

假设我们有两个模型,都是来预测子女的身高,每个模型都用最大似然法确定了最佳回归线,如下图——

左边的模型用的自变量是父亲的身高,误差平方和 = 1529.6,而右边的模型是自变量是母亲的身高,误差平方和 = 748.1。 

直观上右边的模型比左边的好,似乎误差平方和越小,模型就越好,咱们暂且将误差平方和称为「模型好坏标准 v0」

仅用误差平方和来衡量模型拟合得准不准确,有时并不合理 。 例如,同样预测身高的模型如果只是把身高的单位从厘米变成米,那么误差平方和就会缩小10000倍,那么是否意味着用米作为单位的模型更好?这显然说不通,因为用米作为单位的模型和用厘米作为单位的模型是等价的。

有没有什么办法来改良误差平方和,使得模型好坏的标准不会因为变量同时增加或减少几倍就改变?

一个自然的想法是,既然误差平方和的绝对值不行,那就用误差相对于真实值的比值呗。为了能让分子和分母的单位能够互相抵消,分母的真实值也取平方和的形式,得到 「模型好坏评分 v1」公式:

与误差平方和一样,这个评分越小,模型就拟合得越准确

虽然上面这个评分比 v0 更好,但细细想想也是有问题的。设想一下,如果模型要预测的不是人相对地面的身高,而是相对海平面的身高,数据集里的所有人都在海拔五百米的山上。这时,模型的对身高的预测值和身高的真实值都同时增加 500 米,所以上面评分公式分子代表的误差平方和不变,但是分母却大了好几个数量级,说明评分变低,得到模型更好。

另外一方面, 我们真正关心的是不同的人身高之间的差异与哪些因素有关,只是改变了测量身高的参考系,不应该改变模型对不同的人身高差异的预测能力,所以上面采用误差平方和与真实值比值的评分方式也需要改进。

为了使得我们的「模型好坏评分」系统不会因为模型里的预测值同时增加会减小一个固定值(比如像上面的例子那样将参考系从地面变成海平面)而改变,可以先将 y 的预测值先减去其平均值(这一过程也叫做中心化),再取平方和,叫做总平方和:

从上面的公式看出,总平方和描述的是预测值 y 在其平均值的波动程度,预测值同时加上或减去一个常数对总平方和并无影响。

用总平方和代替「模型好坏评分 v1」中的分母,我们便可以得到「模型好坏评分 v2」:

作为模型好坏的评分,咱们习惯的是得分越高,模型越好,而「模型好坏评分 v2」是数值越低,模型越好,所以实际应用中,我们可以把它翻个个儿,以 「1 - 模型好坏评分 v2」作为衡量模型对现有数据的解释能力,它还有一个专门的名字,叫做「模型好坏评分v3」,哦不对,是 R-square( R 平方),记作 R2

从上面的推导过程可以看出,给定一个模型,R不会随着预测值 y 的单位变化而改变,也不会因为 y 的值一块儿增加或者减小而变化。

除了这些优点,R的取值总是在 0 到 1 之间(具体为什么,下面会为大家解释),这使得即使不同的线性模型也能放在同一个尺子下面来衡量好坏。

R等于 1 的时候,该模型的误差平方和等于 0,即模型的预测值与实际值完全相等;R等于 0 的时候,说明误差平方和等于总平方和,这又意味着什么呢?这还得从总平方和的另外一层意义说起。

在《算术平均数:简单背后有乾坤》里面我们提到,如果我们假设每次测量的误差服从正态分布,在没有考虑其它因素的情况下,平均值其实是对变量的最大似然估计。在线性模型里面,没有任何自变量,只有一个常数的模型, y ~ β用最大似然法解出的模型参数 β0 就是 y 的平均值,同时 y 的预测值也是 y 的平均值。

聪明的读者这时可能已经发现了,如果将总平方和公式中的 y 平均值看作是常数模型对 y 值的预测,总平方和的另外一层意义就是常数模型的误差平方和。

从这一角度,R2 也可以理解为,正在构建的模型与模型比较,将拟合 y 的误差降低了多少个百分比。误差降低越多,说明加入的自变量对拟合 y 帮助越大。

R2 等于 0 的时候,等价于该模型的误差平方和与常数模型的误差平方和一样大,也就是说加上了各种因变量并没有使得模型预测出来的 y 值更准确,说明模型里面的这些因变量对预测 y 的值一点帮助也没有。

那有没有可能存在误差平方小于总平方和,也就是说 R是负数的可能呢?只要线性模型里面包含常数项 b0 ,R就不可能是负数。

在包含了至少一个因变量的模型里面,y ~ β+ β1*x用最大似然法找到的回归系数,使得其误差平方和小于任何其它 0 和 1 取值时的误差平方和,当然也包括 β1 = 0,β0 取 y 平均值时候的误差平方和。

这就意味着,模型 y ~ β0 + β1*x的误差平方和,一定小于或者等于常数模型 y ~ β0 的误差平方和。

我们还可以换个角度更通俗地理解上面这个结论。如果一个自变量对减小误差平方和完全没有帮助,则线性模型会自动放弃使用这一自变量,将它的回归系数设为 0。

这也就是说,往模型里面加入新的自变量,模型的误差平方和只会减小不会增加,从而 R只会增加不会减小。

根据上面的讨论,只要模型里面包含了常数项 b0R就不可能是负数,如果你哪天发现你的模型 R是负数,那么一定是你犯了一个技术性的错误——忘了在模型里面加入截距项 b0(嗯,不要问我是怎么知道的)。

由于往模型里面加入新的自变量只可能提高 R2,这就使得用 R来比较包含不同数量的自变量的模型时候,总会对自变量多的模型比较偏心,这有时候并不合理,在下一集里,我们会和大家继续讨论更多升级版的「模型好坏标准」。

五年执医 三年模拟

精选每日一题

更多精选题可回顾历史推送文末

题目来源:临床执业医师资格考试往届真题

本期主播:闲闲闲兔

点击下方标题可阅读本系列任意文章


干货


第1章  高屋建瓴看统计


你真的懂p值吗?

做统计,多少数据才算够?(上)

做统计,多少数据才算够?(下)

提升统计功效,让评审心服口服!

你的科研成果都是真的吗?

见识数据分析的「独孤九剑」

贝叶斯vs频率派:武功到底哪家强?



第2章  算术平均数与正态分布


数据到手了,第一件事先干啥?

算术平均数:简单背后有乾坤

正态分布到底是怎么来的?



第3章  t检验:两组平均数的比较


想玩转t检验?你得从这一篇看起

就是要实用!t 检验的七十二变

不是正态分布,t 检验还能用吗?

只有15个标本,也能指望 t 检验吗?

样本分布不正态?数据变换来救场!

数据变换的万能钥匙:Box-Cox变换

t 检验用不了?别慌,还有神奇的非参数检验

只讲 p 值,不讲效应大小,都是耍流氓!

找出 t 检验的效应大小,对耍流氓 say no!

用置信区间,就是这么(不)自信!

如何确定 t 检验的置信区间

优雅秀出你的 t 检验,提升Paper逼格!

要做 t 检验,这两口毒奶可喝不得!



第4章  方差分析(ANOVA)多组平均数的比较


要比较三组数据,t 检验还能用吗?

ANOVA在手,多组比较不犯愁

ANOVA的基本招式你掌握了吗?

ANOVA做出了显著性?事儿还没完呢!

听说,成对t检验还有ANOVA进阶版?

重复测量ANOVA:你要知道的事儿都在这里啦

没听说过多因素 ANOVA ?那你就可就 OUT 了!

多因素ANOVA=好几个单因素ANOVA?可没这么简单!

两个因素相互影响,ANOVA结果该如何判读?

ANOVA还能搞三四五因素?等等,我头有点儿晕

要做ANOVA,样本量多大才够用



第5章  线性回归:统计建模初步


(未完,更新中)

车模航模你玩过,统计学模型你会玩吗?

如果只能学习一种统计方法,我选择线性回归

回归线三千,我只取这一条

三千回归线里选中了你,你靠谱吗?

自变量不止一个,线性回归该怎么做?

回归系数不显著?也许是打开方式不对!



自检


妈妈说答对的童鞋才能中奖

统计学的十个误区,你答对了吗?



番外篇


说人话的统计学:一份迟来的邀请


作者:田菊

编辑:黑草乌叶

质控:粉条儿菜


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存