UA MATH571A QE练习 R语言 多重共线性与岭回归

QE回归2017年1月的第4题目的是通过高中成绩排名(X1X_1X1​)与ACT分数(X2X_2X2​)预测大学第一年的GPA(YYY)。初始模型是
Y=β0+β1X1+β2X2+β12X1X2+ϵY= \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_{12}X_1X_2 + \epsilonY=β0​+β1​X1​+β2​X2​+β12​X1​X2​+ϵ

然而高中成绩排名与ACT分数很有可能是正相关的,因此这个模型有潜在的多重共线性,我们先来检查一下样本数据有没有多重共线性。首先读取数据,画出相关性图,并计算相关性矩阵

college.df = read.csv( file.choose() )
attach( college.df )
X1 = class.rank; X2 = ACT; X3=X1*X2
Y = GPA
pairs( Y~X1+X2+X3, pch=19 ) > cor( cbind(X1,X2,X3) ) X1        X2        X3
X1 1.0000000 0.4425075 0.8883073
X2 0.4425075 1.0000000 0.7890032
X3 0.8883073 0.7890032 1.0000000


其中X1与X3,X2与X3都具有比较明显的线性关系,基本可以定性地判断初始模型是存在多重共线性的。接下来用variance inflation factor(VIF)定量判断一下是否存在多重共线性:

> require( car )
载入需要的程辑包:car
载入需要的程辑包:carData
> vif( lm(Y ~ X1+X2+X3) ) X1       X2       X3
29.35675 16.40282 62.54291

VIF的判断准则是,如果最大的VIF数值超过10,所有的VIF的均值超过6,那么模型就是有多重共线性的,显然这个题中这两个标准都满足,因此存在多重共线性。

当模型存在多重共线性时,我们可以用岭回归(ridge regression)代替OLS,降低模型的MSE。在做岭回归之前,先对解释变量做中心化

U = scale( Y, scale=F )
Z1 = scale( X1 )
Z2 = scale( X2 )
Z3 = scale( X3 )

做岭回归需要genridge包,如果没有的话可以当场下载

install.packages("genridge")

下好之后就要用这个包里的ridgeplot()函数来调参了

require( genridge )
c = seq( from=.01,to=10,by=.01 )
traceplot( ridge(U~Z1+Z2+Z3, lambda=c) )


岭回归的目标函数是Quadratic Loss + L2L_2L2​ penalty,这里的变量c,也即是图中的ridge constant,表示L2L_2L2​ penalty前的系数,c越大,penalty就会越严格,系数就会被限制在更小的范围内。图中两条竖线代表了岭回归的HKB估计量与LW估计量,注意到LW估计量附近岭回归系数关于c的曲线更平缓,说明LW估计量比HKB估计量更stable,LW估计量是较好的选择。估计ridge regression,获得它的模型对象并查看

ri <- ridge(U~Z1+Z2+Z3,lambda=c)
View(ri)


会发现这个模型对象是一个有十三个元素的list,ridge()实际上做的运算是对1000个c的取值都估计了一遍模型,然后把结果存了下来。其中kHKB和kLW分别就是HKB估计量与LW估计量对应的L2L_2L2​ penalty系数。可以简单查看一下

> print( ri$kLW )
[1] 3.531847
> print( ri$kHKB)
[1] 0.555701

基本还是符合他们在图中的位置的。接下来我们对岭回归的LW估计量进行简单诊断

cLW = ri$kLW
college.ridge = ridge( U~Z1+Z2+Z3, lambda=cLW )
Zmtx = as.matrix( cbind(Z1,Z2,Z3) )
Uhat = Zmtx %*% college.ridge$coef[,1:3]
RawResid = U - Uhat
plot( RawResid ~ Uhat, pch=19 ); abline( h=0 )


画出LW估计量下岭回归残差关于拟合值的散点图,非常明显这个模型还有异方差性。后续的操作就是对残差做一下Brown-Forsythe检验:

require(car)
G<-(Uhat<0)[order(Uhat)]
group<-as.factor(G)
BF.htest = leveneTest(RawResid[order(Uhat)],group)
> BF.htest
Levene's Test for Homogeneity of Variance (center = median)Df F value   Pr(>F)
group   1  6.8326 0.009143 **703
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

结果是显著的,说明的确是存在异方差性的。要同时解决异方差与多重共线性的问题,我们需要用WLS Loss function + L2L_2L2​ penalty,那么做到这里这个题就算完成了。

UA MATH571A QE练习 R语言 多重共线性与岭回归相关推荐

  1. UA MATH571A QE练习 R语言 非参数回归 上

    UA MATH571A QE练习 R语言 非参数回归上 2014年5月第五题 2015年1月第四题 2015年5月第四题 这一篇介绍2014年5月第五题.2015年1月第四题.2015年5月第四题. ...

  2. UA MATH571A QE练习 R语言 单因子试验的回归分析

    UA MATH571A QE练习 R语言 单因子试验的回归分析 2015年5月的第六题是单因子试验,因为历年只有这一道,所以单独做一下. 土壤中的硅主要以硅酸盐矿物的形式存在,受成土母质和成土过程的影 ...

  3. R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

    概述和定义 在本文中,我们将考虑一些线性模型的替代拟合方法,除了通常的  普通最小二乘法.这些替代方法有时可以提供更好的预测准确性和模型可解释性.最近我们被客户要求撰写关于模型选择的研究报告,包括一些 ...

  4. R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化、岭回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合岭回归模型(ridge regression)实战:岭回归模型的模型系数(ridge regression coefficients)及可视化.岭回归模型分类评估计算(混淆矩阵. ...

  5. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择分类心肌梗塞数据模型案例...

    全文下载链接:http://tecdat.cn/?p=21444 在本文中,逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给 ...

  6. UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归4 NBA球员的工资 Box-Cox变换 Full Model 模型再诊断 总结 上一讲对一元线性回归模型进行了诊断,发现模型主要存在三个问题: 工 ...

  7. UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资 残差分析 正态性.同方差性的检验 欠拟合检验 前两讲已经完成了大致的分析了,我们已经明确了NBA球员名次与工资的负相关关系,接 ...

  8. UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资 方差分析 相关性分析 上一讲完成了解释NBA球员工资的一个简单的一元线性回归模型的估计.分析,展示了一下简单的预测,这一讲我们 ...

  9. UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资

    UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资 基础回归分析 571A另一个系列的文章介绍了回归分析的理论,这个系列的文章介绍R语言做回归分析的实践,但不会涉及R语言编程,只 ...

最新文章

  1. python 字符串按指定分隔符分割
  2. #include quot;*.cquot;文件的妙用
  3. 又来说一下顺序~关于唯一索引和唯一约束的顺序
  4. 人生如戏,请给我好一点儿的演技
  5. Dell服务器相关操作
  6. 学点 C 语言(41): 函数 - 关于 main 函数
  7. 启动非java虚拟机方式下运行matlab
  8. Java实现replaceAll 把 \ 替换成 /
  9. 关于protege的dot error的问题
  10. springmvc注解@RequestMapping
  11. SpringBoot 操作 Redis的各种实现(以及Jedis、Redisson、Lettuce的区别比较)
  12. 华为ensp静态路由配置
  13. 【论文阅读】Rethinking the Value of Network Pruning
  14. 注册表禁用计算机管理,解除封锁注册表被禁用的几种解决办法
  15. 服务器维护 灵魂兽,魔兽世界7.0新灵魂兽麋鹿捕捉方法
  16. 网站装饰html代码,html常用装饰代码分享
  17. 两个非常有意思的适合桌面使用的Linux task调度器: BFS和MuqSS
  18. 2019年中兴秋招在线笔试题目
  19. 静态重定位和动态重定位
  20. vue 同局域网访问不到问题

热门文章

  1. centos下实现程序开机自启动(tomcat为例)
  2. GNU Radio ieee802-15-4、ZigBee 实现
  3. 软件设计中的一些原则
  4. 软件设计原则——开闭原则
  5. MySQL 数据库修改访问权限,不能使用ip连接mysql问题处理:Host ‘host.docker.internal‘ is not allowed to connect to this ...
  6. Python 库安装方法:pip安装tar.gz压缩包,pip安装whl文件
  7. Windows 技巧篇-通过“控制面板-程序和附件“查看程序安装位置实例演示
  8. GD32F207移植FreeRtos,程序运行vTaskStartScheduler后进入HardFault_Handler死循环解决方法
  9. CTFshow 爆破 web26
  10. [YTU]_2641 9 填空题:静态成员---计算学生个数)