R语言 检验多重共线性的操作

函数kappa()

df<-data.frame()
df_cor=cor(df)
kappa(df_cor, exact=T) 

当 κ<100κ<100 , 说明共线性程度小;

当 100<κ<1000100<κ<1000 , 有较强的多重共线性;

当 κ>1000κ>1000,存在严重的多重共线性。

函数qr()

x<-matrix()
qr(x)$rank

qr(X)$rank 计算X矩阵的秩,如果不是满秩的,说明其中有xixi可以用其他xjxj的线性组合表示;此时可以进行逐步回归,用step()命令。

fm<-lm()
step(fm)

补充:多重共线性的产生原因、判别、检验、解决方法

最近做回归分析,出现了相关系数与回归方程系数符号相反的问题,经过研究,确认是多重共线性问题并探索了解决方法。

在此将多重共线性的相关知识整理如下。

解释变量理论上的高度相关与观测值高度相关没有必然关系,有可能两个解释变量理论上高度相关,但观测值未必高度相关,反之亦然。所以多重共线性本质上是数据问题。

造成多重共线性的原因有一下几种:

1、解释变量都享有共同的时间趋势;

2、一个解释变量是另一个的滞后,二者往往遵循一个趋势;

3、由于数据收集的基础不够宽,某些解释变量可能会一起变动;

4、某些解释变量间存在某种近似的线性关系;

判别:

1、发现系数估计值的符号不对;

2、某些重要的解释变量t值低,而R方不低

3、当一不太重要的解释变量被删除后,回归结果显著变化;

检验:

1、相关性分析,相关系数高于0.8,表明存在多重共线性;但相关系数低,并不能表示不存在多重共线性;

2、vif检验;

3、条件系数检验;

解决方法:

1、增加数据;

2、对模型施加某些约束条件;

3、删除一个或几个共线变量;

4、将模型适当变形;

5、主成分回归

处理多重共线性的原则:

1、 多重共线性是普遍存在的,轻微的多重共线性问题可不采取措施;

2、 严重的多重共线性问题,一般可根据经验或通过分析回归结果发现。如影响系数符号,重要的解释变量t值很低。要根据不同情况采取必要措施。

3、 如果模型仅用于预测,则只要拟合程度好,可不处理多重共线性问题,存在多重共线性的模型用于预测时,往往不影响预测结果;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言wilcoxon秩和检验及wilcoxon符号秩检验的操作

    说明 wilcoxon秩和及wilcoxon符号秩检验是对原假设的非参数检验,在不需要假设两个样本空间都为正态分布的情况下,测试它们的分布是否完全相同. 操作 #利用mtcars数据 library(stats) data("mtcars") boxplot(mtcars$mpg~mtcars$am,ylab='mpg',names = c('automatic','manual)) #执行wilcoxon秩和检验验证自动档手动档数据分布是否一致 wilcox.test(mpg~am,

  • R语言-如何实现卡方检验

    卡方检验 在数据统计中,卡方检验是一种很重要的方法. 通常卡方检验的应用主要为: 1. 卡方拟合优度检验 2.卡方独立性检验 本文主要通过使用自己编程的方法实现相关检验. 卡方拟合优度检验 理论: 1.我们先做出0假设:H0:总体服从假定的理论分布 2.我们再构造一个统计量: 3.当n充分大时 4.我们得到该拒绝域 代码 #Chi_square Goodness Of Fit Test #函数说明: #n为所得样本数据:p为理论概率 #alpha为置信水平,df为自由度 cgoft <- fun

  • R语言差异检验:非参数检验操作

    非参数检验是在总体方差未知或知道甚少的情况下,利用样本数据对总体分布形态进行推断的方法.它利用数据的大小间的次序关系(秩Rank),而不是具体数值信息,得出推断结论. 它是参数检验所需要的某些条件不满足时所使用的方法. 和参数检验相比,非参数检验的优势如下: 稳健性.对总体分布的条件要求放宽 对数据类型要求不严格,适用有序分类变量 适用范围广 劣势: 没有利用实际数值,损失了部分信息,检验的有效性较差. 非参数性检验的方法非常多,基于方法的检验功效性角度,本文只涉及 双独立样本:Mann-Whi

  • R语言 检验多重共线性的操作

    函数kappa() df<-data.frame() df_cor=cor(df) kappa(df_cor, exact=T) 当 κ<100κ<100 , 说明共线性程度小: 当 100<κ<1000100<κ<1000 , 有较强的多重共线性: 当 κ>1000κ>1000,存在严重的多重共线性. 函数qr() x<-matrix() qr(x)$rank qr(X)$rank 计算X矩阵的秩,如果不是满秩的,说明其中有xixi可以用其他x

  • R语言实现二进制文件读写操作

    二进制文件是一个文件,其中包含仅以位和字节形式存储的信息(0和1),它们是不可读的,因为其中的字节转换为包含许多其他不可打印字符的字符和符号,随便我们尝试使用任何文本编辑器读取二进制文件将显示为类似Ø和ð这样的字符. 但是二进制文件必须由特定程序读取才能使用.例如,Microsoft Word程序的二进制文件只能通过Word程序读取到人类可读的形式.这表明,除了人类可读的文本之外,还有更多的信息,如格式化的字符和页码等,它们也与字母数字字符一起存储.最后,二进制文件是一个连续的字节序列. 我们在

  • R语言对CSV文件操作实例讲解

    在 R 语言中,我们可以从存储在 R 语言环境外的文件中读取数据. 我们还可以将数据写入将被操作系统存储和访问的文件. R 语言可以读取和写入各种文件格式,如​csv​,​excel​,​xml​等. 在本章中,我们将学习从​csv​文件读取数据,然后将数据写入​csv​文件. 该文件应该存在于当前工作目录中,以便 R 语言可以读取它. 当然我们也可以设置我们自己的目录并从那里读取文件. 获取和设置工作目录 您可以使用​getwd()​函数检查R语言工作区指向的目录. 您还可以使用​setwd(

  • R语言对Excel文件操作实例

    Microsoft Excel是最广泛使用的电子表格程序,以.xls或.xlsx格式存储数据. R语言可以直接从这些文件使用一些excel特定的包. 很少这样的包是XLConnect,xlsx,gdata等.我们将使用xlsx包. R语言也可以使用这个包写入excel文件. 安装xlsx软件包 您可以在R控制台中使用以下命令来安装"xlsx"软件包. 它可能会要求安装一些额外的软件包这个软件包依赖. 按照具有所需软件包名称的同一命令安装其他软件包. install.packages(&

  • R语言对数据库进行操作的实例详解

    数据是关系数据库系统以规范化格式存储. 因此,要进行统计计算,我们将需要非常先进和复杂的Sql查询. 但R语言可以轻松地连接到许多关系数据库,如MySql,Oracle,Sql服务器等,并从它们获取记录作为数据框. 一旦数据在R语言环境中可用,它就变成正常的R语言数据集,并且可以使用所有强大的包和函数来操作或分析. 在本教程中,我们将使用MySql作为连接到R语言的参考数据库. RMySQL包 R语言有一个名为"RMySQL"的内置包,它提供与MySql数据库之间的本地连接. 您可以使

  • R语言对Web数据操作实例

    许多网站提供数据供其用户使用. 例如,世界卫生组织(WHO)以CSV,txt和XML文件的形式提供健康和医疗信息的报告. 使用R语言程序,我们可以从这些网站以编程方式提取特定数据. R语言中用于从网站中提取数据的一些包是"RCurl",XML"和"stringr",它们用于连接到URL,识别文件所需的链接并将它们下载到本地环境. 安装R语言的包 处理URL和链接到文件需要以下的包. 如果它们在R语言环境中不可用,您可以使用以下命令安装它们. install

  • R语言的Dataframe常用操作使用

    上节我们简单介绍了Dataframe的定义,这节我们具体来看一下Dataframe的操作 首先,数据框的创建函数为 data.frame( ),参考R语言的帮助文档,我们来了解一下data.frame( )的具体用法: Usage data.frame(..., row.names = NULL, check.rows = FALSE, check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = default.stringsAs

  • R语言绘图样式设置操作(符号,线条,颜色,文本属性)

    设置图像样式有两种方法,一种是全局修改,一种只针对一幅图片有效. 全局修改 a<-c(1:10) #全局修改 old_par<-par(no.readonly=TRUE) #记录默认样式到变量old_par中 par(lty=2,pch=17) #设置线型lty=2虚线,pch=17实心三角形,键值对的方式进行设置 #第一幅图,已经和默认样式不一样了 b<-rnorm(10) plot(a,b,type='b') #第二幅图,和第一幅图样式一样 b<-rnorm(10) plot(

  • R语言:排序的应用操作

    工作中遇到过许多看起来挺复杂的数据筛选,本质上都可以用排序解决,这里以R自带的mtcar数据集为例做一个记录. 首先简单介绍一下mtcar数据集,mtcar(Motor Trend Car Road Tests)是一个32行11列的数据集,记录了32种汽车的11种性能,具体数据如下: > mtcars mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 M

  • R语言刷题检验数据缺失类型过程详解

    目录 题目 解答 下面考虑三种情况: 1. a = 0, b = 0 2. a = 2, b = 0 3. a = 0, b = 2 题目 解答 由于题目要求需要重复三次类似的操作,故首先载入所需要的包,构造生成数据的函数以及绘图的函数: library(tidyr) # 绘图所需 library(ggplot2) # 绘图所需 # 生成数据 GenerateData <- function(a = 0, b = 0, seed = 2018) { set.seed(seed) z1 <- r

随机推荐