如何用r语言进行多重共线性检验

Python0276

如何用r语言进行多重共线性检验,第1张

就是你之前一个无限制模型(Unrestricted Model)的那个对象(object),比如题主这里举例说可以是: lm.test<-lm(y~X1+X2+X3,data=D).这个model就是lm.test这个线性回归对象。

正文共: 4314字 54图

预计阅读时间: 11分钟

嘿喽,我是则已。这是stata的第五期学习。

前面学习了聚类分析、ols回归分析。今天来学习:回归检验。学到这里,恭喜你,你已经对最基本回归分析整个流程都走了一遍。接下来涉及的非线性回归,Logit回归,因变量受限回归,时间序列分析,面板数据分析都与最基本的回归方法有一些联系。

划线部分是自己要研究的变量。

回归检验

前面我们学习了最小二乘回归,这种回归方法简单并且满足我们大部分的研究需要,但是能进行这种回归的前提是有条件的:变量无异方差,变量无自相关,变量无多重共线性。 所以在进行回归之后我们要检验一下数据是否存在这样的问题,如果存在了,我们要进行处理之后再进行一次最小二乘回归分析。本回归检验包含三部分:异方差检验与应对、自相关检验与应对、多重共线性检验与应对。 01 异方差检验与应对 能进行回归分析的一个基本假设:因变量的方差不随自身预测值和其他自变量的值变化而改变。但是如果在回归时不满足这个假设条件,就会出现异方差的情况。常用来判断是否出现异方差的检验办法有:绘制残差序列图、怀特检验、BP检验 解决出现异方差的的方法有:使用标准差进行回归、使用加权最小二乘回归分析方法进行回归。 首先对数据进行描述性分析,看看数据特征: summarize V1 V2 V3 V4 V5,detail

结果分析:描述性分析可以进行简单的数字分析,也可以进行比较仔细地数字分析,这里进行的是比较详细的分析,故加了detail。进行描述性分析是为了看看样本中是否存在极端的数据,看看极大值、极小值,还有数据之间是不是差距过大。 数据整体不错,进行下一步相关性分析:correlate V1 V2 V3 V4 V5

结果分析:大家可以发现在回归前数据必定会进行描述性分析和相关性分析,进行相关性分析是为了看看变量之间有没有关系。可以看出它们的关系还是可以接受的。 进行回归分析:regress V1 V2 V3 V4 V5

结果分析:F值为437.69,P值为0可以看出模型是非常显著的。R-squared超过了92%说明模型解释能力近乎完美的。但是V5的P值是0.518,比较不显著的。由下表Coef、cons可以得到该模型的方程式: V1=0.7203941V2+0.4363412V3+0.426517V4-0.2198884V5+0.3897354 获取方差和协方差矩阵:vce

结果分析:自变量方差和协方差都不大。 检验各个变量系数的显著性:test V2 V3 V4 V5

结果分析:发现自变量联合系数检验是非常显著的。通过了假设检验。 预测因变量的拟合值和残差: predict yhat predict e,resid

以上回归步骤操作完毕,下面我们来进行检验是否存在异方差,绘制残差与因变量的散点图:rvfplot

图形分析:Fitted values指回归得到的拟合值,Residuals指残差。可以看出,残差随着拟合值的不同而不同,尤其是在4-8,变动那是相当剧烈。,同一个拟合值对应非常多残差。所以存在一定异方差。 再来看看残差与自变量的散点图: rvpplot V2

结果分析:还是可以看到残差在0-4的波动还是比较剧烈的。数据还是存在一定的异方差。 绘制残差序列图只是比较粗略的看到是否存在异方差,为了精确测量,应该使用怀特检验:estat imtest,white

结果分析:怀特检验的原假设:数据是同方差,不存在异方差。我们观察P值为0是非常显著地拒绝了原假设,P值越小越拒绝,所以我们认为数据存在严重的异方差的。 下面我们用BP检验:estat hettest,iid

BP检验有很多方法,上面用的是得克尼克值来检验的。 也可以用方程右边的解释变量来解释异方差:estat hettest,rhs iid

也可以指定变量来进行BP检验:estat hettest V2,rhs iid

结果解释:BP检验的原假设也是:数据是同方差,不存在异方差。 既然我们已经发现了数据存在异方差,我们必须重新回归一次。 使用稳健性标准差对数据进行回归:regress V1 V2 V3 V4 V5,robust

结果分析:可以看出模型的F值是175.79,P值是0,模型也是非常显著的。R值也是超过92%,说明模型的解释力度很强。同时也可以得到模型的方程式,特别是V5的P值减,显著性得到一定的提高。可见我们利用稳健性标准差进行回归取得了一定的效果。 试试另外一种:使用加权平均数最小二乘回归分析来解决数据的异方差性:reg V1-V5

先删除第一回归分析预测的残差e,并重新进行预测e,然后进行平方变换: drop e predict e,resid gen ee=e^2 在残差进行平方变换的基础上再进行取对数: gen lnee=ln(ee) 再进行一次回归:reg lnee V2,nocon

删除掉第一次回归预测的拟合值,并重新预测拟合值: drop yhat predict yhat 对预测的拟合值进行指数变换:gen yhatthat=exp(yhat)

最后进行加权最小二乘回归分析:reg V1 V2 V3 V4 V5[aw=1/yhatthat]

结果分析:模型的F值,P值及R方值都得到了很大程度的提高。这就是我们使用加权最小二乘回归分析得到模型的改善效果。

02 自相关检验与应对 自相关性指随机误差项的各期望值之间存在相关关系,引起自相关性的原因有很多:经济变量惯性作用、经济行为的滞后性等。自相关性会使T检验不再显著,模型的预测功能失效。判断存在方法:绘制残差序列图,BG检验,Box-Pierce检验,DW检验。 解决自相关的方法:自相关异方差稳健的标准差进行回归、使用广义最小二乘回归分析方法进行回归。

跟上面一样,先进行描述性分析,相关性分析,回归分析,获取方差和协方差矩阵,检各个变量系数显著性,预测模型拟合值和残差。

由于自相关性往往出现在时间序列数据,故对这类数据进行分析还需要添加一些额外步骤: 首先对时间序列数据进行定义: tsset month

结果分析:把整个数据的变量定义为以月为周期的时间序列数据。 绘制残差滞后一期的散点图:scatter e l.e

结果分析:l.e指残差数据滞后一期,如要残差数据滞后两期则是l2.e。可以看到数据之间存在正相关的关系,即它y轴随着纵轴的数据变大。 如要更精致的图,我们可以绘制残差的自相关图,探索一下它的自相关阶数: ac e

结果分析:横轴表示滞后的阶数lag,阴影部分表示95%的自相关置信区间。阴影部分之外,表示自相关系数显著不为0。例如:从左往右第一条竖线的在阴影之外表示一阶自相关系数显著不为零。所以说数据主要存在一阶自相关。 我们也可以绘制一下偏自相关图:pac e

结果分析:从这个偏自相关图,同样可以看出这个一阶自相关。 还可以用BG检验自相关性:estat bgodfre

结果分析:BG检验的原假设是:数据没有自相关性。可以看到P值远远小于0.05,所以显著拒绝了原假设。即数据存在自相关。 还可以用BPQ假设检验自相关:wntestq e

结果分析:BPQ检验的原假设也是:数据不存在自相关。可以看出是显著拒绝了原假设的。 还可以用DW检验:estat dwatson

结果分析:DW检验的原假设是数据没有自相关的值正好等于2。我们的数据是0.35,所以远远小于2,存在正自相关。 既然已经知道了存在自相关性,我们要设法改进模型。 异方差稳健的标准差对数据进行重新回归分析,首先确定异方差稳健的标准差进行回归之后的阶数:di 49^0.25

结果分析:这个阶数是样本个数的0.25次幂,所以确定了阶数是3。 再进行异方差自相关稳健性的标准差分析:newey profit asset,lag(3)

结果分析:利用确定因变量profit,自变量asset,阶数3来进行分析。我们可以看到模型是非常显著的。 可以使用广义的最小二乘回归分析方法来解决数据的异方差,corc估计法: prais profit asset,corc

结果分析:怎么看还是和前面一样。特别的,我们看到最后那两行,发现DW的值由0.35变化到了1.92,基本上接近了2。所以模型消除了自相关。 广义的最小二乘估计法去解决异方差问题,还有pw估计法: prais profit asset,nolog

结果分析:同样的,pw估计方也是DW检验值接近2,基本上消除了自相关性。

03 多重共线性检验与应对 多重共线性指如果某自变量能够被其他自变量通过线性组合得到,则存在严重的多重共线性。若一个自变量能被其他自变量解释,则存在相近的多重共线性。多重共线性会导致系数估计不准确,使部分系数的显著性很弱。 解决多重共线性的方法有两种:剔除不显著的变量、进行因子分析提取相关性较弱的几个主因子

跟上面一样,先进行描述性分析,相关性分析,回归分析。

结果分析:注意我们回归全是自变量,看到回归分析后的结果,这些自变量的系数P值都大于0.05,说明系数存在不显著的问题,判断数据可能存在多重共线性。 进行多重共线性检验:estat vif

结果分析:vif指方差膨胀因子,方差膨胀因子和合理值是10以内,可看出我们的结果是41.77, 所以存在较高的多重共线性。 剔除较高的V5,重新进行回归:regress V2 V3 V4 V6

再进行多重共线性检验:estat vif

结果分析:可以发现V6方差因子值较大。但是整体的方差值降到10.85,得到很大的改善。 再剔除V6,回归并检验: regress V2 V3 V4 estat vif

结果分析:可以看出膨胀因子变成1,多重共线性得到很大改善。不过看到V4的回归系数显著性不是很好。 试试删除V4再进行回归检验: regress V2 V3 estat vif

结果分析:模型的解释能力R方值、模型的显著性都近乎完美。所以V3是最能解释V1的变量。 还可以用因子分析来检验模型的多重共线性:factor V3 V4 V5 V6,pcf

结果分析:可以看出只保留了一个主成因子,这个因子特征值和解释力度都很大。 提取公因子变量:predict f1

回归分析:reg V2 f1

vif检验:vif

结果分析:可以看出多重共线性没了。模型中各个系数的值也是非常显著的。

今天学习了回归检验,它是在对回归之后的模型进行检验的方法。主要涉及异方差检验,自相关性检验,多重共线性检验。一旦数据出现这些问题:前两个问题可以通过绘制图形大致了解是否存在,后一个问题只要在回归之后分析各自变量的系数的P值来判断是否显著从而判断出数据是否存在。解决它们的方法多种多样,根据自己的需要选择适当方法。好啦,今天的学习到这里!如果有什么不懂,或者需要软件和教学资源请到后台联系我。

- End -

“如果喜欢这期内容 那么请关注我吧”

r 语言dw检验诊断序列的自相关性

好的铁观音一般多少钱一斤

精选推荐

广告

R语言使用lm函数构建线性回归模型、使用lrtest包的dwtest函数执行残差自相关检验Durbin–Watson检验(Autocorrelation Durbin–Watson Test)

487阅读·0评论·0点赞

2022年7月11日

自相关性的诊断以及修正方法r语言代码

2.3W阅读·14评论·21点赞

2015年10月13日

R语言:相关性分析检验

964阅读·1评论·0点赞

2022年10月3日

违背基本假设的几种情况——自相关性(R语言)

4398阅读·0评论·8点赞

2019年1月20日

r语言确定最优滞后阶数_计量经济学与R语言(四)自相关

3061阅读·0评论·0点赞

2020年12月8日

r语言 相关性作图_R语言学习指南(6) 初探相关性热图

7649阅读·0评论·3点赞

2020年12月24日

高清播放机,图片大全,点击查看详情!

精选推荐

广告

r语言实现自相关分析和偏相关分析

1.4W阅读·0评论·6点赞

2020年8月6日

R语言--数据挖掘7--预测性建模:线性回归

3830阅读·0评论·4点赞

2021年5月10日

异方差与R语言实践

1.1W阅读·8评论·10点赞

2020年3月23日

R语言与回归分析几个假设的检验

3.9W阅读·3评论·12点赞

2012年11月10日

r语言相关性分析_R语言 相关性分析与检验

4473阅读·0评论·4点赞

2020年12月8日

R语言使用lm函数构建线性回归模型、使用lrtest包的dwtest函数执行残差自相关检验Durbin–Watson检验、使用acf函数执行自相关的可视化检验

401阅读·0评论·0点赞

2022年9月12日

DW(德宾-沃森)统计量临界值表

12.7W阅读·2评论·5点赞

2015年12月9日

学习R过程中的一些小总结

257阅读·0评论·0点赞

2020年3月22日

【零基础Eviews实例】02自相关(序列相关)的检验与修正

4.7W阅读·10评论·49点赞

2020年12月4日

R语言之违背基本假设的几种情况xt4.13

5549阅读·3评论·24点赞

2020年11月2日

检验杜宾 瓦森检验法R语言_回归分析 | R语言回归算法、模型诊断

1527阅读·0评论·1点赞

2020年12月23日

R语言使用lm函数构建线性回归模型、使用lrtest包的dwtest函数执行残差自相关检验Durbin–Watson检验、设置alternative参数为two.sided执行双边检验是否存在负自相关

28阅读·0评论·0点赞

2022年8月24日

moran指数 r语言_使用R进行空间自相关检验

3592阅读·0评论·4点赞

2020年12月21日

R语言使用lm函数构建线性回归模型、使用car包中的oulierTest函数识别样本数据中可能的离群值( identify possible outliers)

319阅读·0评论·0点赞

2022年7月11日

去首页

看看更多热门内容

信贷行业中常见的评分卡包括:申请评分卡(Application)、行为评分卡(Behavior)、催收评分卡(Collection)以及反欺诈评分卡(Anti-Fraud),简称为A卡、B卡、C卡和F卡。

A卡,主要应用于贷前准入环节对新用户的信用评级。

B卡,主要应用于贷中管理环节对存量用户的行为预测。

C卡,主要应用于贷后催收环节对存量用户是否催收的预测管理。

F卡,主要应用于贷前准入环节对新用户可能存在的欺诈行为进行预测。

本文通过历史数据建立Logistic回归模型,预测用户出现违约的概率,从而建立申请评分卡模型。

本文数据来自“klaR”包中的German credit data。

加载要用到的数据,并进行初步数据观察:

该数据集包含了1000个样本,每个样本包括21个变量,变量含义如下:

数据清洗主要工作包括缺失值和异常值处理。

查看缺失值情况:

从以上结果可看出,本数据集不存在缺失值。

查看定量指标异常值情况:

从图2可以看出,定量指标中存在异常值。下面,让我们具体来看一下:

根据具体情况来看,定量指标中存在的异常值是基本符合实际情况的,而且数据集样本数量较少,因此不对异常值做处理。(本例比较特殊,实际工作中的情况肯定会比较复杂)

本数据集包含了定量和定性两类指标,接下来我们用不同的方法,筛选出对违约状态影响最大的指标,作为构建模型的变量。

首先,根据简单随机抽样,将数据集划分为训练集和测试集:

以下用随机森林法和Logistic回归方法,寻找对因变量影响最显著的自变量:

综合以上两种方法的结果,我们筛选出了对违约状态影响最显著的四个指标 :duration(3)、age(3)、amount(2)和installment_rate(2)。

通过R中的informationvalue包,计算各指标的IV值,得到各定性指标间的重要性度量,选取其中的high predictive指标:

根据以上结果,我们选择status、credit_history、savings和purpose四个high predictive指标构建模型。

综上,我们共选择了8个变量作为入模变量。

计算定量指标的WOE之前,需要先对定量指标进行分段。下面,优先采用最优分段,其原理是基于条件推理树(conditional inference trees, Ctree)的递归分割算法,核心算法用函数ctree()表示。

从上图可以看出,woe值相差较大,分段效果不错。以下针对amount、age采用相同分段方法。

installment_rate只有1、2、3、4四个值,四个值对应的woe值差别较大,且具有单调性,采用等距分段。

接下来我们需要对定性指标做必要的降维处理,方便计算其WOE值。首先,我们查看一下入模的定性指标的概况:

由以上概况可知,定性指标status、credit_history、和savings的维数最高为5维,最低为4维,维数适中,可以不进行处理。

定性指标purpose的维数多于7维,明显高于其他定性指标。为了避免“维数灾难”,我们根据三条准则进行降维:1.维度间属性相似;2.合并后woe有明显变化;3.单个维度样本量不应过小。

用klaR包中的woe()函数获取入模变量的woe值。

至此,我们已经获得了入模变量对应的woe值。值的注意的是,我们之前将好客户设定为0,坏客户设定为1,所以woe值越大,代表客户违约的概率越大,但traindata中的woe实际是按照好客户为1,坏客户为0计算的,所以与之前变量分箱中计算的woe正好相反。

下面正式开始构建模型,并转换为标准评分卡。

从以上逻辑回归的结果来看,各个变量都通过了显著性检验。同时,为防止多重共线性问题的出现,我们对模型进行VIF检验:

从结果可知,所有变量VIF均小于4,可以判断模型中不存在多重共线性问题。

根据 信用评分卡模型的建立 ,我们可以得到:

获取基础分以及训练集中各变量的分数:

输出CSV格式的标准评分卡:

对测试集中的样本做同样的降维处理:

从以上结果可知,模型准确率ACC为0.77,AUC为0.805,Gini系数为0.61,整体效果尚可。

本文通过对Germancredit数据的挖掘分析,从数据清洗、变量筛选、WOE计算、建模分析到模型验证,创建了一个简单的申请评分卡。

本文用到的数据集比较简单,在实操中,数据清洗应该会占用更多时间和精力。

本文仅进行了一次样本抽样,在实操中,应进行K折交叉检验,提升模型准确度。

开发的模型是基于某一时间的特定样本的,随着时间的推移和信贷政策的变化,样本会发生变化,从而造成模型的区分能力和稳定性变差。一般需要定期对模型的使用情况进行检测并报告模型区分能力和稳定性的变化情况,必要时应采取包括修正模型或重建模型等措施。这是后面需要认真学习的地方!

信用标准评分卡模型开发及实现

信用评分卡模型的建立