⑴ car | 线性回归(三)——残差分析和异常点检验
在探索线性回归的深层次特性时,car包提供了强大的工具来检验模型的假设和异常点。首先,我们通过加载car和dplyr库,构建起我们的分析基础。利用lm函数创建模型,关键在于对其残差进行细致的剖析,这是评估模型拟合质量的关键步骤。
残差分析的核心在于理解模型的误差分布。hatvalues函数揭示了帽子矩阵,其值反映了每个观测值对模型预测的影响力。resials和rstandard函数分别计算普通残差和标准化残差,它们的分散程度可以通过deviance除以df.resial来衡量。统计学生化残差,rstudent函数为我们在模型误差的标准化尺度上提供了一个更精确的视图。
模型诊断图是理解模型假设的关键:残差-拟合图检查线性关系的偏差,正态Q-Q图验证残差的正态分布,尺度-位置图测试同方差性,而残差-杠杆图则帮助我们寻找潜在的异常点。在model.1中加入二次项,显著提升了wt和wt^2与因变量的线性关联。
偏残差图如crPlots(model2, "wt"),在符合线性假设时,应近似为一条直线。当我们观察模型2的未加入二次项的偏残差图时,crPlots(model)提供了直观的可视化结果。
使用car包的qqPlot(lm对象),如qqPlot(model2),可以对残差的正态性进行深入检查。默认的95%置信区间横纵坐标对应着t分位数和学生化残差。stats包的辅助函数如qqnorm, qqline, 和qqplot提供了更多定制化的Q-Q图选项。
通过Shapiro-Wilk测试,我们验证model2的残差确实接近正态分布,p值为0.2001。而ncvTest(model)的异方差性检验显示方差非恒定,但p值大于0.05,支持同方差的假设。Durbin-Watson检验确保残差无一阶自相关性。VIF(方差膨胀系数)则用来检查多重共线性,比如vif(model2)揭示了wt与wt^2之间的潜在关联。
异常点检测是细致入微的工作,plot(model2, c(4,5,6))图形显示了离群点、高杠杆点和强影响点的分布。Cook距离法是识别强影响点的强大工具,cooks.distance(model2)提供了相关数值。influence.measures函数则提供了更全面的影响指标,如dfb和dffit。
具体实例中,对于Datsun 710, Hornet 4 Drive, Hornet Sportabout, Valiant这四个车型的模型估计结果,我们看到了dfb, dffit, cov.r, cook.d, 和hat值。Mazda RX4等样本被确认为非强影响点,其影响标记为FALSE。
⑵ 第三节 违背基本假设的情况
本节主要包括:
在这里先给大家普及一个单词 aftermath 创伤!真的是,,,学完实变函数心灵受到了极大的创伤,,,
言归正传,接下来的几章我们会说明,在回归的 三大基本假设 不满足的情况下,会有什么解决方案。
还记得回归的三大假设嘛?他们是:
在本章中我们主要研究不满足第二条的情况我们该如何处理。
数学上说就是 。现实中这样的例子也有很多,比方说收入模型,贫穷如我的人整天就会想怎么才能吃饱,就算想买点东西也买不起,穷人之间的购买力差异就很小,而富有的人的话,有的人出手阔绰,有的人比较节约,这就导致了富有的人支出差异很大。在异方差出现的时候,会有很多问题。比方说 参数不再是最佳线性无偏估计(但依然无偏),显著性检验也失效了。所以回归的效果也很不理想 。所以统计学家要想办法去侦测到它,并且努力去消除它。
因为正常情况下, ,所以异方差性是可以通过残差看出来的,这就是残差图检验的由来。
以残差ei为纵坐标,以其他适宜的变量为横坐标画散点图。
常用的横坐标有:
1.拟合值 ;
2.横坐标, ;
3.观测时间或序号.
在 满足假设时 残差图上的n个点散布应是随机的,无任何规律; 存在异方差 时,残差图上的点散布呈现相应的趋势.比方说我的残差长下面这个样子
这种方法简单来说就是计算自变量 与残差绝对值 之间的相关性,看看他们之间有没有什么系统的关系(函数关系)。注意我们采用Spearman 等级相关系数而没有采用 Pearson 简单相关系数,这是因为等级相关系数可以反映非线性相关的情况。
定义:
等级相关系数:
斯皮尔曼检验量:
在做等级相关系数检验之前需要先对模型做一次回归(虽然我们这里已经知道异方差性存在的情况下,回归没啥用了。但是如果你不做回归测试异方差性,你又怎么确定回归没用的呢?)。得到随机误差 的估计值残差 .然后取残差绝对值 ,把 与 都按照从高到低的顺序或者从低到高排序,最后标记二者的排位(就是第几大或者第几小),算出二者等级的对应差值计算出来就是 。比如说一个数据的自变量值 是第8大的,但是它的对应的残差绝对值 是第三大的,那么对应的 。
这个检验量在 的时候是近似服从 t 分布的,因此如果检验量的值 ,就可以认为没有异方差。否则说明 与 之间存在系统关系。
加权最小二乘估计是解决异方差问题的一种办法。还有Box-Cox变换法,等等。
一般来说,在最小二乘回归中,我们实际上就是要最小化 。注意到的是这个和式的每一项的期望都是 (因为异方差性假设存在,所以我们不再使用 )。所以如果某一项方差越大,实际上这一项所占的比重就很大,那么为了最小化我们的离差平方和,就必须要让回归直线“尽量偏向”这个方差很大的数据点。
从这里也可以看出来加权最小二乘法的一个局限性: 照顾小残差项是以牺牲大残差项为代价的。
为了解决这个问题我们把平方和改一下,写成下面的样子:
按照相同的方法回归,可得:
得到啥你自己看书吧-.-!P97 4.5
所以这个回归的关键就是如何选择我们的 。直观上来看,因为每一项的期望是 ,所以!只要让 就可以啦~(让回归直线“尽量偏向”这个方差很大的数据点嘛,方差越大权重就小一点,回归系数就大了)
problem solved~
不好意思没那么简单,理论可行,可是 是啥你不知道啊。所以如果没有电脑,我们一般是通过残差图去“猜测”应该用什么权。比方说如果 与 成正比,那么这个时候可以考虑拿 去作为权函数。实际上我们也是 一般使用类似于 这样的自变量的幂函数来构造权函数 。
如果使用 SPSS 计算就简单多了,通过寻找 m 值使得对数似然函数值最大,具体参见 P98。
多元的情况与一元十分相似,有一个问题就是我们权函数的构造,在一元中我们可以用自变量的幂函数构造。但是多元的情况,如果我们用每一个自变量的幂函数构造,那么对应的计算量可能就是 级别的,所以在多元的情况下我们 一般都只使用其中一个自变量 。所以问题来了,我们用哪一个自变量呢?
这也是有一个法则的,一般来说需要计算每一个自变量 与变通残差( )的等级相关系数(斯皮尔曼等级相关系数),取最大的那个构造即可。
具体的例子见 P103
随机误差项之间存在自相关性 的意思就是 。简单点来说就是误差项之间存在相关关系。
这种自相关包括 一阶自相关 与 多阶自相关 。
这在现实生活中也是很常见的。比如说金融危机一般都是要延后两三年才会有很显著的负面影响。另外时间序列模型本质上也就是一种自相关的模型。
(1)遗漏关键变量;
(2)经济变量的滞后性;
(3)采用错误的回归函数形式;
(4)蛛网现象带来的序列自相关性;
(5)对数据加工整理导致误差项之间产生自相关性。
自相关其实就相当于不满足G-M条件了,如果还是使用普通最小二乘法估计参数就会产生很多问题:
(1)参数估计值不再具有最小方差线性无偏性;
(2)均方误差(MSE)可能严重低估误差项的方差;
(3)容易导致 t 值过高,所以 F 检验、 t 检验就失效了
(4)最小二乘估计量也会对抽样的波动很敏感,意思是说在一些特定的样本中, 虽然无偏,但是估计出来的值 却可能严重与 真实值不同。
(5)预测和分析会带来较大的方差,甚至错误的解释。
这个问题还是挺严重的,下面瞅瞅怎么把这个问题检验出来:
首先直接使用普通最小二乘法估计参数,根据回归残差项 的相关性来判断随机误差项 的序列相关性。一般有两种方法:
可以看出这相当于是说随着时间的推移,残差并不是散乱,而是有序,或者说以一个函数形式出现的。这就说明存在自相关性了。
但是这种定性的分析总是感觉不够精确,所以我们需要更好的方法。
自相关系数说白了就是计算随机误差项之间的相关程度总和的一个量。如果这个量超过了某个数我们就认为这些随机误差项之间有关系,也就是说存在自相关性。
首先给出 误差序列 的系相关系数 定义:
这也是时间序列中一个很重要的统计量。和简单相关系数对比容易得到它的范围是 。
当 接近 -1 时表明误差序列存在负相关,当 接近 1 时表明误差序列存在正相关 。
还是有一个问题就是,误差序列 的真实值是未知的,那么我们就只能使用其估计值:残差 去代替。这就可以得到自相关系数的估计值 。
估计是可以的,但是这样又产生了一个问题,就是这个 作为 的估计值就与样本量有关了(直观来想就是样本量越多估计的越好呗),这就需要构造统计量,做一下显著性检验才能确定自相关性是否存在。一般使用下面的 DW 检验代替对 的检验。
DW (Durbin-Watson)检验其实说白了就是一假设检验。要有假设,需要构造统计量,计算拒绝域,最后根据显著性水平判断。DW 检验是很常用的一种检验自相关的方法。
DW 检验有一定的 使用条件 :
首先需要知道,随机扰动项的一阶自回归形式为:
其中 为自回归系数(数值上等于自相关系数,就是刚刚刚学的自相关系数还记得吗), 是满足 G-M 条件的随机误差项。
为了检验序列相关性,(其实就是检验上面的方程成立) 原假设 是:
构造的 统计量 是:
其中: 是回归估计式的残差 。
接下来的问题就是求拒绝域啦,首先我们来看看 DW 的取值范围:其实只需要将 DW 的分子展开一下就可以得到:
分子的第一项与第二项在 n 比较大的时候几乎是相同的(所以一般来说 DW 检验要求 ),而第三项与分母的比就是我们的 。 所以有 ,换句话说 。 根据以上的分析我们大约知道 DW 的取值范围为 。
因而 DW 值与 的对应关系表如下表所示:
在书上的P109页有一张表。(假装这里有表)
所以 确定拒绝域的方法是:根据样本量 n 和解释变量的数目 k (这里包括常数项)查 DW 分布表,得到临界值 和 ,最后根据计算得到的 DW 值决定模型的自相关状态。 如下图所示:
行,我们费了老大劲把自相关问题检验出来了,下面看看咋处理吧,,,咋整呀,,,
在处理自相关问题的时候需要首先查明自相关产生的原因,我们顺便复习一下 5 点奥(其实我也没记住翻回去看的,逃有几个问题可以直接解决,实在不行咱再想办法:
迭代法的想法就是想办法消掉误差项中相关的那一部分(剩下的不就是不相关的),这样就可以使用普通最小二乘回归啦,最后再把所做的变量替换带回去就可以的。
我们就以一阶自相关来举例:假设我们的模型为:
其中 满足 G-M 条件(期望值相等,相互独立)。
根据这个模型让时间倒退回去一点,就可以得到:
为了消除自相关性,归根结底是要让误差项回到 ,(谁让人家满足G-M条件嘛)
这就需要我们得到 。所以我们来计算
对应的变量做换元就可以可到: 。这个时候可以看出误差项就满足 G-M 条件啦。接下来就对变换后的模型使用普通最小二乘法就可以啦,然后再把变量带回去。
那么这样的方法可以看出如果真的误差项存在一阶自相关的话,那么很明显是有效的。但是实际情况并不总是如此,有时候误差项的自相关阶数是很高的,所以我们的方法是不停的迭代,直到我们的 DW 检验能够说明它没有自相关了为止,可以说是简单粗暴啊。
差分法的适用范围就更窄了,它是适用于原模型存在 较高程度一阶自相关 的情况才可使用。在迭代法的模型中我们设 ,就可以得到一个差分法的模型:( 注意这个模型不带常数项 ,回归直线过原点)
其中 ,
对它做一个回归就可以得到: (注意 t = 2 开始是因为差分肯定只能从第二项开始才会有数据)。
一般来说我们先使用 估计 ,(注意这里的 是自相关系数,而不是普通相关系数),如果 接近 1 就 采用差分法而不使用迭代法 ,这是因为:
有时候数据中会包含一两个极端或异常的观测值,这些数据与其他数据远远分开,会引起较大的残差,影响回归效果(这可不是啥好事儿),所以呢我们就想着怎么把这些害群之马给踢了,一般对于二元三元呢,我们画一个散点图看一下就知道了,但是多元就麻烦了,这家伙,没法儿画啊,你说气不气人,想想有没有啥其他招吧。
一般来说我们会分为 x y 两个维度讨论异常值:
在数据分析中,刚开始总是要看有没有特别特别“高”的点。一般来说会认为残差 超过 的残差的话它就是异常值。但是问题在于,多元回归中 ,其中 为帽子矩阵 的主对角线元素,这也就说明每一个数据点的误差是不相同的。那么单纯的因为它“特别高”就认为数据异常就不合适了。因为这很有可能是残差导致的,换句话说这个数据“特别高”不是因为它异常,而是因为它“就完全有可能这么高”。换句话说,因为误差是每一个数据点的固有性质,所以如果是因为残差特别大,导致某一个数据点像异常值,那么即使你剔除掉这个异常值,也不会对回归有任何帮助。(就是你踢错人了,人家不异常)
那么应该如何去做呢?我们在之前介绍过一个学生化残差
看似通过把杠杆值的影响去除掉可以解决方差不等的问题,但是如果观测数据中真的存在异常值,学生化残差也没有什么卵用。这是因为这个时候,异常值的存在会使得回归线“偏向”它,进而使得回归的标准差 实际上是偏大的。那么这样子的话,实际的学生化残差是偏小的,这就不能使用 的原则来判断残差了。
为了解决异常值的问题,我们需要别的办法。
我们这么构造删除残差:针对第 i 个观测值,我们计算它的残差时,用其余 n-1 个观测值拟合回归方程,计算出第 i 个观测值的删除拟合值 ,那么这个值显然不会受到第 i 个值是否是异常值的影响。所以我们定义 删除残差 为:
进一步:
删除化学生残差为 :
一般来说,认为 的时候就是异常值点。
首先需要知道啥叫强影响点:还是关于残差的方差式 ,可以看出 大的点残差小,因此如果观测值的杠杆值( )大,就会使得回归方程偏移产生影响。所以一般来说 杠杆值大的点我们叫做强影响点 ,注意它不一定是 y 的异常值。
强影响点并不总是 y 值的异常点, 此强影响点并不总会对回归方程造成不良影响 ,但是实际上,强影响点还是很需要被关注的,这是因为:
实际情况是很复杂的,所以一般使用一个粗略的标准,认为 就是异常值, 就是非异常值。
Box-Cox 变换也叫 方差稳定性变换 。这个方法比较特殊,所以把它单独拿出来了,说他特殊是因为它真的太!好!使!了! B-C 变换可以处理异方差、自相关、误差非正态、回归函数非线性等情况。
够狠!
它是对 y 做如下的变换:
在实际应用时,我们一般使用计算机找到一个 使得对数似然函数达到极大,也就是 达到最小即可(具体的推导见 P117)
最后找到最佳的 之后再把方程还原回去。下面举一个特例,考试喜欢这么出一个:
转化为原始变量方程:只需要把 代入,还原为原始方程为:
⑶ 什么是高杠杆点
支点:杠杆绕着转动的固定点,一般情况下该点是不移动的。简单一点讲,就是在杠杆转动时,唯一的一个不动点。你只要找到这一点,就将其判断为支点。动力:使杠杆转动的力。这个力的作用点在杠杆上,你需要知道的是这个力的大小及方向。题目一般都会把这两个条件告诉你,然后你将这个力的方向延长,这条画出来的虚线我们称之为动力作用线。阻力:阻碍杠杆转动的力。阻力的方向的判断比较难,但是必须知道。举例子好理解:用木头撬动石头时,杠杆是要克服石头重力转动的,所以此时石头重力是阻力,方向是竖直向下。初中题目如果没有直接或间接告诉你阻力的方向和大小,一般就是要克服重力转动的,类似于上面的题目。阻力作用线和动力作用线一样,需要画出来。动力臂:从支点到动力作用线的距离。只要画出过支点的垂直于动力作用线的线段,这个线段长度就是动力臂的长度,所谓距离,就是支点离线段的最近距离嘛!阻力臂:从支点到阻力作用线的距离。杠杆是个物理模型.通常支点就是相对”固定”的位置.用筷子夹食物,那么支点在筷子与手的上部(不是手指)接触的部位.有些情况下支点是移动的,例如动滑轮看成动力臂为阻力臂二倍的杠杆时.还有时杠杆的支点是可以任意选定的.例如一座”独木桥”的问题,可将支点选在任意一端(甚至桥上任意一点)