主成分分析(R语言)

代码实现如下:

data3.3<-read.csv("C:/Users/Administrator/Desktop/data3.3.csv",head=TRUE)
datas<-data.frame(scale(data3.3[,1:6]))  
pr3.3<-princomp(~x1+x2+x3+x4+x5,datas,cor=T)
# 对5个变量做主成分分析,其中cor=T表明是用相关系数矩阵进行主成分分析
summary(pr3.3,loadings=TRUE)  # 输出主成分分析的结果
pr3.3$scores[,1:2]  # 输出前两个主成分的得分

输出结果为:
在这里插入图片描述
在这里插入图片描述
  summary()的输出结果中Inportance of components部分第一行是5个主成分的标准差,即主成分所对应的特征跟的算术平方根 λ k \sqrt\lambda_{k} ;第二行是各主成分方差所占的比例,反映了主成分所能解释数据变异的比例,也就是包含原数据信息的比例;第三行是累积比例。
  第一个主成分Comp.1的方差百分比为79.826%,含有原始5个变量近80%的信息量;前面两个主成分累积百分比为98.468%,几乎包含了5个变量的全部信息,因此取前两个主成分已经足够。
  另外,Loadings部分输出的矩阵为各主成分表达式中 X i X_{i}^{*} 的系数,其中空白部分为默认的为输出的<0.1的值。
  现在,我们仅保留前两个主成分对其进行最小二乘回归。
 代码实现如下:

pre3.3<-pr3.3$scores[,1:2]  # 将前两个主成分的得分保存在变量pre3.3中
datas$z1<-pre3.3[,1]  # 将第一主成分的得分添加在数据框datas中,变量名为z1
datas$z2<-pre3.3[,2]  # 将第二主成分的得分添加在数据框datas中,变量名为z2
pcr3.3<-lm(y~z1+z2-1,datas)
summary(pcr3.3)

输出结果为:
  在这里插入图片描述
  由输出结果可以知道,主成分的回归方程为:
       
        y ^ = 0.473 z 1 + 0.194 z 2 \hat{y}^{*}=0.473z_{1}+0.194z_{2}

由于主成分是标准化后自变量的线性组合,如果想要得到 y y^{*} 关于自变量 x 1 , x 2 , x 3 , x 4 , x 5 x_{1}^{*},x_{2}^{*},x_{3}^{*},x_{4}^{*},x_{5}^{*} 的回归方程,只需要分别将下面两个式子
  
   z 1 = 0.493 x 1 + 0.495 x 2 + 0.207 x 3 + 0.482 x 4 + 0.486 x 5 z_{1}=0.493x_{1}^{*}+0.495x_{2}^{*}+0.207x_{3}^{*}+0.482x_{4}^{*}+0.486x_{5}^{*}
   z 1 = 0.171 x 1 + 0.137 x 2 0.941 x 3 + 0.221 x 4 0.133 x 5 z_{1}=0.171x_{1}^{*}+0.137x_{2}^{*}-0.941x_{3}^{*}+0.221x_{4}^{*}-0.133x_{5}^{*}

代入上式即可。

猜你喜欢

转载自blog.csdn.net/qq_38204302/article/details/86596506