主成分分析(principalcomponentanalysis)是将多指标化为少数几个综合指标的一种统计分析方法,这种降维的技术而生成的主成分,能够反映原始变量的绝大部分信息,通常表示为原始变量的线性组合。下面主要介绍在R中的主成分分析(1)概念:①主成分的均值和协方差阵②主成分的总方差贡献率及累计贡献率③原始变量与主成分变量之间的相关系数④m个主成分对原始变量的贡献率⑤原始变量对主成分的影响(2)从相关矩阵或者协方差矩阵出发求主成分①变量的标准化scale()(3)在R中,可以用stats包中的prcomp函数及princmp()函数进行主成分分析。##类'formula'的S3方法prcomp(formula,data=NULL,subset,na.action,...)##DefaultS3method:prcomp(x,retx=TRUE,center=TRUE,scale=FALSE,tol=NULL,...)参数介绍:formula:在公式方法中设定的没有因变量的公式,用来指明数据分析用到的数据框汇中的列data:包含在formula中指定的数据的数据框对象,subset:向量对象,用来指定分析时用到的观测值,其为可选参数na.action:指定处理缺失值的函数x:在默认的方法下,指定用来分析的数值型或者复数矩阵retx:逻辑变量,指定是否返回旋转变量center:逻辑变量,指定是否将变量中心化scale:逻辑变量,指定是否将变量标准化tol:数值型变量,用来指定精度,小于该数值的值将被忽略。princomp(formula,data=NULL,subset,na.action,...)##DefaultS3method:princomp(x,cor=FALSE,scores=TRUE,covmat=NULL,subset=rep_len(TRUE,nrow(as.matrix(x))),...)##S3methodforclass'princomp'predict(object,newdata,...)参数介绍:formula:是没有相应变量的公式cor:逻辑变量,若为cor=T表示用样本的相关矩阵R作主成分分析,cor=F,表示用样本的协方差矩阵s作为主成分分析covmat:协方差矩阵,如果数据不用x提供,可由协方差提供。(4)可以用summary()函数查询关于每个主成分的重要信息summary(object,loadings=F,cutoff=0.1,…)#object是由prcomp得到的对象,loadings是逻辑变量,当loadings=T表示显示loadings的内容,loadings=F是表示不显示(5)使用loadings()函数查看每个变量对主成分的贡献度loadings(x)#x是由函数prcomp()或factanal()得到的对象(6)针对princomp()对象的plot方法。该方法可以绘制展示每个主成分与其自身方差贡献度相关性的悬崖碎石图。plot()(7)用双标图将主成分可视化,画出数据关于主成分的散点图和原坐标在主成分下的向量biplot(model,choices=1:2,scale=1,pc.biplot=F,…)#model是由prcomp()得到的对象,choices是选择的主成分,缺省值是第1,第2主成分。pc.biplot是逻辑变量,缺省值为F,当pc.biplot=T,用Gabriel提出的方法绘图。(8)predict函数是预测主成分的值,predict(object,newdata,…)#object是由prcomp()得到的对象,newdata是由预测值构成的数据框,当newdata缺省时,预测已有数据的主成分值。实例:中学生身体四项指标的主成分分析30名学生,测量其身高(X1)、体重(X2),胸围(X3)和坐高(X4)。对这30名中学生身体四项指标数据做主成分分析。解:用数据框形式输入数据,用prcomp()做主成分分析,由分析,选择相关矩阵作为主成分分析更为合理,因此,cor=T。最后,用summary()列出主成分分析的值,这里选择loadings=T。数据:data数据框data###作主成分分析利用函数princomp(),并显示分析结果data.pr-princomp(data,cor=T)summary(data.pr,loadings=T)Importanceofcomponents:Comp.1Comp.2Comp.3Comp.4Standarddeviation1.87349840.558876430.334944350.25587705ProportionofVariance0.87749910.078085720.028046930.01636827CumulativeProportion0.87749910.955584810.983631731.00000000Loadings:Comp.1Comp.2Comp.3Comp.4X1-0.4980.530-0.5170.452X2-0.516-0.225-0.378-0.736X3-0.484-0.7160.1510.480X4-0.5020.3950.753-0.155###作主成分分析利用函数prcomp(),并显示分析结果data.prcomp-prcomp(data)summary(data.prcomp)Importanceofcomponents:PC1PC2PC3PC4Standarddeviation11.19063.289901.703251.54005ProportionofVariance0.88610.076580.020530.01678CumulativeProportion0.88610.962690.983221.00000以上结果介绍:Standarddeviation:表示主成分的标准差,即主成分的方差的开方,也就是相应的特征值的开方ProportionofVariance:表示方差的贡献率CumulativeProportion:表示方差的累计贡献率在summary()函数的参数中选取了loadings=T,因此列出了loadings的内容,实际是主成分对应于原始变量X1,X2,X3,X4的系数,可以得到主成分Z1=-0.498X1-0.516X2-0.484X3-0.502X4Z2=0.530X1-0.225X2-0.716X3+0.395X4由于前面两个主成分累计贡献率已达到96%,另外两个主成分可以舍去,达到降维的目的。第一主成分对应系数的符号都相同,其值在0.5左右,反映中学生身材魁梧程度;我们称第1主成分为大小因子;第二主成分对应高度与维度的差,第二主成分值大的学生表明该学生细高,值小的说明学生矮胖。我们称第2主成分为体形因子。各样本的主成分的值(用predict()函数)###对主成分做预测predict(data.pr)从第一主成分预测值可以看出,较小的几个值是25,3,5号样本,说明这几个学生身材魁梧,而11,15,29样本的值较大,说明这几个学生身材瘦小;从第二主成分预测值可以看出,较小的几个值是17,8,2号样本,说明这几个学生身材属于矮胖型,而231,19,4样本的值较大,说明这几个学生身材属于细高型的;###画出主成分的碎石图screeplot(data.pr,type=lines)###画出关于第1主成分和第2主成分样本的散点图。biplot(data.pr)主成分分析的应用①主成分分类根据主成分分析,通过散点图可以看出,对于不同的指标,将会聚集在一起,故可以进行分类。②主成分回归对自变量出现多重共线性的时候,主成分分析能够克服经典回归的不足。代码:data-read.table(C:\\data.txt)data.pr-princomp(data,cor=T)summary(data.pr,loadings=T)data.prcomp-prcomp(data)summary(data.prcomp)predict(data.pr)#主成分预测screeplot(data.pr,type=lines)#碎石图biplot(data.pr)#画出关于第1主成分和第2主成分样本的散点图