当前位置:   article > 正文

R主成分分析与因子分析_princomp(m1,cor=t)各输出结果解释standard deviations:

princomp(m1,cor=t)各输出结果解释standard deviations:

# 1. 主成分分析

     是降维方法的一种,在原始数据信息损失较小的情况下,利用少数的不相关的综合变量来代替较多的原始变量。一般来说,主成分不超过5个。函数为princomp()。

1.1 实例:longley数据集的变量降维及回归    

  绘制变量相关图

      16年数据,7个变量。从图中可观察到存在多重共线性问题。

  1. library(corrplot)
  2. corr<-cor(longley)
  3. corrplot(corr)

方差膨胀因子(VIF)         

  1. library(car)
  2. vif(lm(Employed~.,data=longley))
  3. -----结果------
  4. GNP.deflator GNP Unemployed Armed.Forces Population Year
  5. 135.53244 1788.51348 33.61889 3.58893 399.15102 758.98060

       一般认为:0<VIF<10,不存在共线性;10<=VIF<100,存在较强多重共线性;VIF>100,多重共线性非常严重。上述表明GNP.deflator、GNP、Population和Year的多重共线性非常严重。

主成分分析     

为解决多重共线性,接下来进行主成分分析。去掉响应变量之后进行分析:

  1. pr1<-princomp(longley[,-7],cor=TRUE)
  2. -----结果-----
  3. Standard deviations: 各主成分的标准差,即特征值的开平方
  4. Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
  5. 2.14554820 1.08413122 0.45102702 0.12218125 0.05051797 0.01940897
  6. 6 variables and 16 observations.
  1. summary(pr1)
  2. -------结果-------
  3. Importance of components:分别为主成分的标准差、方差贡献率和累积方差贡献率
  4. Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
  5. Standard deviation 2.1455482 1.0841312 0.45102702 0.122181253 0.0505179747 1.940897e-02
  6. Proportion of Variance 0.7672295 0.1958901 0.03390423 0.002488043 0.0004253443 6.278469e-05
  7. Cumulative Proportion 0.7672295 0.9631196 0.99702383 0.999511871 0.9999372153 1.000000e+00

       一般选取累计贡献率在85%以上的主成分,本例的前两个主成分累计贡献率已达到96%,即可以解释原始变量96%的信息,故应该选择前两个主成分,剔除后四个主成分,达到了降维的目的。

loadings()输出载荷矩阵 

  1. loadings(pr1)
  2. -------结果--------
  3. Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
  4. GNP.deflator 0.462 0.149 0.793 0.338 0.135
  5. GNP 0.462 0.278 -0.122 -0.150 -0.818
  6. Unemployed 0.321 -0.596 -0.728 -0.107
  7. Armed.Forces 0.202 0.798 -0.562
  8. Population 0.462 0.196 -0.590 0.549 0.312
  9. Year 0.465 0.128 -0.750 0.450
  10. Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
  11. SS loadings 1.000 1.000 1.000 1.000 1.000 1.000
  12. Proportion Var 0.167 0.167 0.167 0.167 0.167 0.167
  13. Cumulative Var 0.167 0.333 0.500 0.667 0.833 1.000

     根据载荷矩阵,可以得到主成分与原始变量的线性关系:

F_{1}=0.462*GNP.deflator+0.462*GNP+0.321*Unemployed +0.202*Armed.Forces+0.462*Population+0.465*YearF_{2}=-0.596*Unemployed+0.798*Armed.Forces

 predict()输出主成分得分

  1. predict(pr1) # 计算主成分得分
  2. sort(predict(pr1)[,1],decreasing = T) #第一主成分降序排列
  3. -----结果-----
  4. Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 ...
  5. 1947 -3.59294203 -0.7761110 0.31804507 -0.169624216 0.009085721 ...
  6. 1948 -3.10924187 -0.8768853 0.66329350 0.130051755 0.063565251 ...
  7. 1949 -2.42014988 -1.5905016 -0.50961596 -0.009106066 0.005934717 ...
  8. ---------------
  9. 1962 1961 1960 1959 1958
  10. 3.45445683 3.17896368 2.43855615 2.00361238 1.87669233 ....

 screeplot()绘制碎石图

screeplot(pr1,type="lines",main="pr1")

 

     折线图越靠近x轴,说明主成分解释原始变量的信息越多。可以看出选择两个主成分是合理的。

主成分回归 

      前三个主成分的累计贡献率为99.7%,将前三个主成分提出来,合并到longley数据集中。

  1. lm.pr1<-lm(Employed~F1+F2+F3,data=longley)
  2. summary(lm.pr1)
  3. -------结果--------
  4. Coefficients:
  5. Estimate Std. Error t value Pr(>|t|)
  6. (Intercept) 65.3170 0.1163 561.701 < 2e-16 ***
  7. F1 1.5154 0.0542 27.961 2.71e-12 ***
  8. F2 0.3794 0.1073 3.537 0.00409 **
  9. F3 1.8013 0.2578 6.987 1.46e-05 ***
  10. Multiple R-squared: 0.986, Adjusted R-squared: 0.9825

      由结果看,各系数通过显著性检验且Adjusted R-squared为0.982,回归方程为:

Employed=65.3170+1.5154F1+0.3794F2+1.8013F3

      输出原始变量所对应的回归系数:

  1. beta<-coef(lm.pr1) # [1] 4 1
  2. A<-loadings(pr1)[,1:3]
  3. x.mean<-pr1$center
  4. dim(as.matrix(x.mean))
  5. x.sd<-pr1$scale
  6. coef<-A%*%beta[2:4]/x.sd # (6,3)*(3,1)->(6,1)
  7. beta0<-beta[1]-x.mean%*%coef # 1
  8. c(beta0,coef)
  9. ------结果------
  10. [1] -3.587128e+02 9.478789e-02 1.267421e-02 -1.161491e-02
  11. [5] -5.987296e-03 1.538621e-01 2.029575e-01

转为原始变量回归方程:

Employed=-358.71+947.88*GNP.deflator+126.74*GNP-116.1491*Unemployed-598.73*Armed.Forces+15.39*Population+20.29*Year

# 2.因子分析

2.2 实例:能力和智商测试的因子分析探索

2.2.1 数据预处理      

 ability.cov数据集,112个样本,六个变量。

  1. data("ability.cov")
  2. class(ability.cov)
  3. ---------结果---------
  4. $cov
  5. general picture blocks maze reading vocab
  6. general 24.641 5.991 33.520 6.023 20.755 29.701
  7. picture 5.991 6.700 18.137 1.782 4.936 7.204
  8. blocks 33.520 18.137 149.831 19.424 31.430 50.753
  9. maze 6.023 1.782 19.424 12.711 4.757 9.075
  10. reading 20.755 4.936 31.430 4.757 52.604 66.762
  11. vocab 29.701 7.204 50.753 9.075 66.762 135.292
  12. $center
  13. [1] 0 0 0 0 0 0
  14. $n.obs
  15. [1] 112
  16. ---------------
  17. [1] "list"

      提取协方差矩阵,并利用函数cov2cor()将其转化为相关矩阵:

  1. corr<-cov2cor(cova)
  2. --------结果--------
  3. general picture blocks maze reading vocab
  4. general 1.0000000 0.4662649 0.5516632 0.3403250 0.5764799 0.5144058
  5. picture 0.4662649 1.0000000 0.5724364 0.1930992 0.2629229 0.2392766
  6. blocks 0.5516632 0.5724364 1.0000000 0.4450901 0.3540252 0.3564715
  7. maze 0.3403250 0.1930992 0.4450901 1.0000000 0.1839645 0.2188370
  8. reading 0.5764799 0.2629229 0.3540252 0.1839645 1.0000000 0.7913779
  9. vocab 0.5144058 0.2392766 0.3564715 0.2188370 0.7913779 1.0000000

   绘制相关图,发现存在多重共线性问题。

  1. library(corrplot)
  2. corrplot(corr)

 2.2.2 因子分析

  1. (fa1<-factanal(covmat=corr,factors=2,rotrtion="none"))
  2. ------结果------
  3. Uniquenesses:特殊方差
  4. general picture blocks maze reading vocab
  5. 0.455 0.589 0.218 0.769 0.052 0.334
  6. Loadings:因子载荷矩阵
  7. Factor1 Factor2
  8. general 0.499 0.543
  9. picture 0.156 0.622
  10. blocks 0.206 0.860
  11. maze 0.109 0.468
  12. reading 0.956 0.182
  13. vocab 0.785 0.225
  14. Factor1 Factor2
  15. SS loadings 1.858 1.724
  16. Proportion Var 0.310 0.287
  17. Cumulative Var 0.310 0.597

   接下来采用正交/斜交旋转法提取因子:

  1. update(fa1,factors=2,rotation="varimax") # 正交旋转
  2. update(fa1,factors=2,rotation="promax") # 斜交旋转

   两种方法在因子载荷上有所不同:

  1. -------正交旋转-------
  2. Uniquenesses:
  3. general picture blocks maze reading vocab
  4. 0.455 0.589 0.218 0.769 0.052 0.334
  5. Loadings:
  6. Factor1 Factor2
  7. general 0.499 0.543 general=0.499*Factor1+0.543*Factor2
  8. picture 0.156 0.622
  9. blocks 0.206 0.860
  10. maze 0.109 0.468
  11. reading 0.956 0.182
  12. vocab 0.785 0.225
  13. --------斜交旋转--------
  14. Uniquenesses:
  15. general picture blocks maze reading vocab
  16. 0.455 0.589 0.218 0.769 0.052 0.334
  17. Loadings:
  18. Factor1 Factor2
  19. general 0.364 0.470
  20. picture 0.671
  21. blocks 0.932
  22. maze 0.508
  23. reading 1.023
  24. vocab 0.811

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/94127
推荐阅读
相关标签
  

闽ICP备14008679号