R与数据分析旧笔记(八)多重共线性
多重共线性(线性代数叫线性相关)
多重共线性(线性代数叫线性相关)
1.什么是多重共线性
2.多重共线性对回归模型的影响
3.利用计算特征根发现多重共线性
4.Kappa()函数
例题1
考虑一个有六个回归自变量的线性回归问题,原始数据列在下表中,这里共有12组数据,除第一组外,自变量的其余11组数据满足线性关系
试用求矩阵条件数的方法,分析出自变量间存在多重共线性。
| 序号 | |||||||
|---|---|---|---|---|---|---|---|
| 1 | 10.006 | 8.000 | 1.000 | 1.000 | 1.000 | 0.541 | -0.099 |
| 2 | 9.737 | 8.000 | 1.000 | 1.000 | 0.000 | 0.130 | 0.070 |
| 3 | 15.087 | 8.000 | 1.000 | 1.000 | 0.000 | 2.116 | 0.115 |
| 4 | 8.422 | 0.000 | 0.000 | 9.000 | 1.000 | -2.397 | 0.252 |
| 5 | 8.625 | 0.000 | 0.000 | 9.000 | 1.000 | -0.046 | 0.017 |
| 6 | 16.289 | 0.000 | 0.000 | 9.000 | 1.000 | 0.365 | 1.504 |
| 7 | 5.958 | 2.000 | 7.000 | 0.000 | 1.000 | 1.996 | -0.865 |
| 8 | 9.313 | 2.000 | 7.000 | 0.000 | 1.000 | 0.228 | -0.055 |
| 9 | 12.960 | 2.000 | 7.000 | 0.000 | 1.000 | 1.380 | 0.502 |
| 10 | 5.541 | 0.000 | 0.000 | 0.000 | 10.000 | 0.257 | 0.101 |
| 11 | 8.756 | 0.000 | 0.000 | 0.000 | 10.000 | 0.257 | 0.101 |
| 12 | 10.937 | 0.000 | 0.000 | 0.000 | 10.000 | 0.440 | 0.432 |
解:用数据框方法输入数据,由自变量中心化和标准化得到的矩阵
本质上就由这些自变量生成的相关矩阵,再用
kappa()函数求出矩阵的条件数,用
eigen()函数求出矩阵的最小特征值和相应的特征向量,求解问题的R程序如下(程序名:exam0618.R)
> collinear<-data.frame(
+ Y=c(10.006, 9.737, 15.087, 8.422, 8.625, 16.289,
+ 5.958, 9.313, 12.960, 5.541, 8.756, 10.937),
+ X1=rep(c(8, 0, 2, 0), c(3, 3, 3, 3)),
+ X2=rep(c(1, 0, 7, 0), c(3, 3, 3, 3)),
+ X3=rep(c(1, 9, 0), c(3, 3, 6)),
+ X4=rep(c(1, 0, 1, 10), c(1, 2, 6, 3)),
+ X5=c(0.541, 0.130, 2.116, -2.397, -0.046, 0.365,
+ 1.996, 0.228, 1.38, -0.798, 0.257, 0.440),
+ X6=c(-0.099, 0.070, 0.115, 0.252, 0.017, 1.504,
+ -0.865, -0.055, 0.502, -0.399, 0.101, 0.432)
+ )
> XX<-cor(collinear[2:7])
> kappa(XX,exact=T)
[1] 2195.908
得到,条件数是,认为有严重的多重共线性。
进一步,找出哪些变量是多重共线性的。计算矩阵的特征值和相应的特征向量
> eigen(XX)
$values
[1] 2.428787365 1.546152096 0.922077664 0.793984690 0.307892134 0.001106051
$vectors
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.3907189 0.33968212 0.67980398 -0.07990398 0.2510370 -0.447679719
[2,] -0.4556030 0.05392140 -0.70012501 -0.05768633 0.3444655 -0.421140280
[3,] 0.4826405 0.45332584 -0.16077736 -0.19102517 -0.4536372 -0.541689124
[4,] 0.1876590 -0.73546592 0.13587323 0.27645223 -0.0152087 -0.573371872
[5,] -0.4977330 0.09713874 -0.03185053 0.56356440 -0.6512834 -0.006052127
[6,] 0.3519499 0.35476494 -0.04864335 0.74817535 0.4337463 -0.002166594
得到
即
由于前的系数近似为0,因此,有
所以存在着使得
这说明变量存在多重共线性,与题目中给的变量是相同的。
注意:kappa()函数也可以求线性模型的条件数,但实际上是计算由计算自变量构成矩阵的条件数,即
kappa(lm.model)=
R与数据分析旧笔记(八)多重共线性的更多相关文章
- R与数据分析旧笔记(十八完结) 因子分析
因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...
- R与数据分析旧笔记(⑦)回归诊断
回归诊断 回归诊断 1.样本是否符合正态分布假设? 2.是否存在离群值导致模型发生较大误差? 3.线性模型是否合理? 4.误差是否满足独立性.等方差.正态分布等假设条件? 5.是否存在多重共线性 正态 ...
- R与数据分析旧笔记(五)数学分析基本
R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...
- R与数据分析旧笔记(三)不知道取什么题目
连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...
- R与数据分析旧笔记(一)基本数学函数的使用
创建向量矩阵 > x1=c(2,3,6,8) > x2=c(1,2,3,4) > a1=(1:100) > length(a1) [1] 100 > length(x1) ...
- R与数据分析旧笔记(十七) 主成分分析
主成分分析 主成分分析 Pearson于1901年提出的,再由Hotelling(1933)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...
- R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN
基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...
- R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法
基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...
- R与数据分析旧笔记(十三) 聚类初步
聚类 聚类 关键度量指标:距离 常用距离 绝对值距离 绝对值距离也称为"棋盘距离"或"城市街区距离". 欧氏(Euclide)距离 闵可夫斯基(Minkowsk ...
随机推荐
- java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)—–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...
- sql权限报表小知识
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIG ...
- trim()函数IE7/8不兼容
js中重写trim()函数 <script type="text/javascript"> String.prototype.trim = function() ...
- KVC和KVO
OC中的一个比较有特色的知识点:KVC和KVO 一.KVC操作OC中的KVC操作就和Java中使用反射机制去访问类的private权限的变量,很暴力的,这样做就会破坏类的封装性,本来类中的的priva ...
- 更改Oracle数据文件名及数据文件存放路径
更改Oracle数据文件名及数据文件存放路径 SQL> select * from v$dbfile; FILE# NAME ---------- ---------------- ...
- JAVA关键字transient
转载自http://www.cnblogs.com/liuling/archive/2013/05/05/transient.html 1.transient关键字只能修饰变量,而不能修饰方法和类.注 ...
- 重拾php---以及zend-studio 的使用快捷方式
感觉好久没有碰php了,今天心血来潮,重新入门.先整理一下刚刚学习的笔记. 一个字符串是用双引号括起来的一个词或一个句字,比如:“Hi,imooc!”.你可以用PHP语言输出把这个字符串输出,像这样: ...
- SQL Server 行的删除与修改-------------(未完待续P222 deep SQL Server 222 )
删除: 1.堆表:当行被删除时,不会自动重新组织页面上的空间.删除行时不会从物理页面上删除, 而只是把行偏移设置为 0 .表示空间没有使用.除了页面上没有被回收空间之外,堆中的 空白页也常常不会被回收 ...
- 偷懒的inline-block解决方法
最近这几天看了inline-block的用法,用它来代替浮动实现水平排列很不错,只是要解决一下浏览器兼容和间隙的问题.关于ie6,7的兼容问题 <inline-block 前世今生>(ht ...
- Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)
目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本 ...