主成分回归克服多重共线性的R语言实现 下载本文

内容发布更新时间 : 2024/5/7 11:06:00星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

主成分回归克服多重共线性的R语言实现

作者:汪朋

来源:《科技资讯》2015年第28期

摘要:多重共线性是回归分析中容易出现的一类重要问题,现有的克服多重共线性的方法有很多,这其中主成分回归是非常有效的一种,但该方法计算复杂,必须借助于计算软件才能完成。为此,本文在已有R函数的基础上,通过自编一定的R函数和代码,探讨了应用R语言实现主成分回归的过程。最后的案例表明,通过R语言实现主成分回归来克服模型的多重共线性,过程简单,效果明显,且容易被学习者和应用者掌握。 关键词:主成分回归 多重共线性 R语言

中图分类号: 文献标识码:A 文章编号:1672-3791(2015)03(b)-0000-00 1引言

回归模型是应用最为广泛的统计模型之一,常被用来处理多变量间相依关系问题,而多重共线性问题是回归分析中一个非常棘手的问题,最早是R.Frisch提出。大量实践表明,当模型存在严重的多重共线性时,模型的参数估计变得不够稳定,甚至出现估计的回归系数与其实际意义不相符,模型的显著性检验和预测功能失效等严重后果。正因如此,从20世纪六七十年代至今,人们提出了多种方法来克服模型的多重共线性,比较常用的有逐步回归法、岭回归法和主成分回归法等。逐步回归法是剔除变量,容易造成信息损失和结构分析的预期目的难以实现的问题;岭回归法要求选择比较准确的岭参数,而岭参数的选择主观性很强;相比之下,主成分回归法通过将自变量分解成几个不相关的主成分,能完全克服模型的多重共线性,且选择的主成分能基本上概括原变量的信息,使得主成分回归法成为克服多重共线性中的一种较为有效的方法,但该方法计算复杂,需要借助于计算软件才能完成。目前主流的统计软件虽一般提供了主成分分析的功能,都基本上没有直接实现主成分回归的模块,因此,本文在R语言提供的主成分分析的函数的基础上,通过自编相关的函数,来探讨如何快速简便地运用主成分回归法克服回归模型的多重共线性。

二、主成分回归法的R语言实现过程

主成分回归法是利用主成分分析找到解释变量的若干个主成份,由于主成份之间是互不相关的,因此考虑将被解释变量关于这些主成份进行回归,可以消除模型的多重共线性。 应用R语言克服模型的多重共线性,具体步骤如下:

(1)运用princomp( )函数进行主成分分析,使用方法如下: pr = princomp(~X1+X2+…4+Xk, cor=TRUE )

龙源期刊网 http://www.qikan.com.cn

这里cor =TRUE表示用样本的相关矩阵R作主成分分析,cor=FALSE(默认值),表示用样本的协方差作主成分分析。

在这一步中还可以使用summmary( )函数来提取因子载荷矩阵等模型的各项信息。 (2)根据(1)中得到的结果选定主成分z1,z2,…,zm,然后将被解释变量关于这些主成分进行回归,代码如下: pre=predict(pr) z1=pre[,1] z2=pre[,2] ………… zm=pre[,m]

model.pr=lm(Y~z1+z2+…+zm) summary(model.pr)

(3)运用自编函数将主成分回归模型转换为关于原变量的回归模型,自编函数的代码如下:

prc.trans=function(formula, prc.object){

object=lm(formula); X=as.matrix(object$model)[,-1] pr=princomp(~X, cor=TRUE); A=loadings(pr) apha=coef(prc.object); n=length(apha) if (n

beta=A[,1:n-1]*apha[2:n] } else {

beta=A[,1:n-1]%*%apha[2:n] } xbar=apply(X,2,mean); s=sd(X)

龙源期刊网 http://www.qikan.com.cn

b=beta/s; b0=apha[1]-sum(b*xbar) coefficients=c(b0,b)

coefficients=as.matrix(coefficients)

rownames(coefficients)=rownames(summary(object)$coefficients) colnames(coefficients)=\ coefficients }

该函数的prc.object参数为做主成分回归所返回的对象。

有了上面的prc.trans( )函数,就可、可以很方便地将进行系数转换了,转换代码如下: prc.trans(Y~X1+X2+…+Xk, model.pr) 三、案例分析

为了验证上节内容的可行性,下面选取1991—2013年西藏第三产业及一些影响因素的数据来验证上节提出的方法和结论。

根据经济学的有关理论和经验知,第三产业的发展主要与第三产业的规模、最终消费、资本形成总额、本国交通运输规模等因素有关。为此考虑 ——第三产业从业人员数(反映第三产业的规模); ——财政支出(最终消费的构成因素); ——全区居民消费水平(最终消费的影响因素); ——全社会的固定资产投资(GDP的影响因素); ——旅客周转量(反映交通运输规模)。

对西藏第三产业总产值Y的影响,从而寻找影响西藏第三产业发展的关键因素。有关数据见表1。

表1 西藏1991—2012年第三产业产值及其影响因素的数据