多重共线性(线性代数叫线性相关)

多重共线性(线性代数叫线性相关)


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与数据分析旧笔记(八)多重共线性的更多相关文章

  1. R与数据分析旧笔记(十八完结) 因子分析

    因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...

  2. R与数据分析旧笔记(⑦)回归诊断

    回归诊断 回归诊断 1.样本是否符合正态分布假设? 2.是否存在离群值导致模型发生较大误差? 3.线性模型是否合理? 4.误差是否满足独立性.等方差.正态分布等假设条件? 5.是否存在多重共线性 正态 ...

  3. R与数据分析旧笔记(五)数学分析基本

    R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...

  4. R与数据分析旧笔记(三)不知道取什么题目

    连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...

  5. R与数据分析旧笔记(一)基本数学函数的使用

    创建向量矩阵 > x1=c(2,3,6,8) > x2=c(1,2,3,4) > a1=(1:100) > length(a1) [1] 100 > length(x1) ...

  6. R与数据分析旧笔记(十七) 主成分分析

    主成分分析 主成分分析 Pearson于1901年提出的,再由Hotelling(1933)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...

  7. R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN

    基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...

  8. R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法

    基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...

  9. R与数据分析旧笔记(十三) 聚类初步

    聚类 聚类 关键度量指标:距离 常用距离 绝对值距离 绝对值距离也称为"棋盘距离"或"城市街区距离". 欧氏(Euclide)距离 闵可夫斯基(Minkowsk ...

随机推荐

  1. C++关注备注部分知识点

    //关注备注部分知识点. #include <iostream> #include <string><span style="white-space:pre&q ...

  2. mongodb 2.6.6 在window10下的安装

    首先感谢波仔的知道,其次感叹下WIN10的牛叉,兼容性还不错. 首先,下载mongodb 2.6.6 安装包,可惜,官网太慢,还得注册.不过还好,我是个好人:http://pan.baidu.com/ ...

  3. C#数据绑定中,时间为空时显示时间为原始日期问题

    这个问题一般出现在用实体时,实体的时间格式没有加?号.加了之后就默认为空,没有数据时不会为原始时间了.

  4. JS onkeydown控制HTML Input 只录入浮点数值

    // -1) return false; return index == 0 } keychar = String.fromCharCode(keynum) var newVal = oriVal.s ...

  5. Angular基础知识

    AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 ng-directives 扩展了 HTML. ...

  6. maven 引用自己的jar

    <build>    <plugins>        <plugin>            <groupId>org.apache.maven.pl ...

  7. java.util.vector中的vector的详细用法

    ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用.包括Vector的创 ...

  8. EC读书笔记系列之13:条款25 考虑写出一个不抛异常的swap函数

    记住: ★当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定其不抛出异常 ★若你提供一个member swap,也该提供一个non-member swap来调用前者.对于cla ...

  9. 汇编语言学习系列 for循环实现

    假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位). #include<stdio.h> int fact_for(int n) { int i; ; ; i & ...

  10. jQuery on()方法绑定动态元素的点击事件无效

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...