• 一个主成分分析例子


    文档排版有问题,可以下载附件,,假设有一个数据框a,num是样本序号,var1-var4是四个变量
    > a
       num var1 var2  var3 var4
    1    1 21.0 10.7  99.7  9.5
    2    2  9.5 17.9 139.6 18.7
    3    3 21.2  8.4  90.0  6.8
    4    4 12.0 22.7  42.5 24.1
    5    5  6.8 21.2  55.2 22.4
    6    6  8.2 22.4  55.6 22.6
    7    7  3.6 29.2  68.3 26.7
    8    8 19.5 15.2  18.8 17.4
    9    9 24.8  5.4  43.7  2.9
    10  10  8.4 18.6 146.2 19.7
    11  11 28.9  4.4   4.9  1.1
    12  12 19.5 15.1  10.2 18.5
    13  13 28.3  4.7  13.3  1.8
    14  14 24.7 12.1 116.8 12.6
    15  15 12.8 23.6  90.0 23.7
    16  16 23.1  6.8 100.1  3.7
    17  17 15.1 13.7 100.9 14.2
    18  18  2.9  6.2  80.7  2.7
    19  19 18.4 11.8  99.3 13.8
    20  20 22.9 12.3  47.6 13.3
    21  21  5.8 29.4  83.5 27.6
    22  22 18.8  8.6  61.1  8.9
    对四个变量进行主成分分析
    pr<-princomp(~var1+var2+var3+var4,data=a,cor=TRUE,scores=TRUE)  #从相关矩阵求解,并列出主成分得分

    > summary(pr,loadings=TRUE)
    Importance of components:
                              Comp.1    Comp.2     Comp.3     Comp.4
    Standard deviation     1.6430057 0.9753338 0.57235000 0.14721331
    Proportion of Variance 0.6748669 0.2378190 0.08189613 0.00541794
    Cumulative Proportion  0.6748669 0.9126859 0.99458206 1.00000000
    Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
    var1  0.530  0.111  0.836       
    var2 -0.582  0.232  0.262 -0.734
    var3 -0.233 -0.934  0.271       
    var4 -0.571  0.247  0.399  0.674
    Standard deviation 表示特征根的开方,Proportion表示主成分的贡献率,也就是,比如第1个特征值的贡献率0.6749 = 2.69946764 / (2.69946764+0.95127608+0.32758452+0.02167176)。
    可以看出前两个主成分已经贡献了90%以上,可以保留两个主成分
    loadings表示主成分的系数矩阵
    > cor(a[,-1])        #列出四个变量的相关系数矩阵
               var1       var2       var3       var4
    var1  1.0000000 -0.7352556 -0.3579002 -0.6830847
    var2 -0.7352556  1.0000000  0.1825704  0.9752175
    var3 -0.3579002  0.1825704  1.0000000  0.1738883
    var4 -0.6830847  0.9752175  0.1738883  1.0000000

    e<-cbind(a,prscores)       #加入主成分得分 
     
     
    > head(e) 
      num var1 var2  var3 var4    Comp.1     Comp.2      Comp.3       Comp.4 
    1   1 21.0 10.7  99.7  9.5  0.775962 -0.8698329  0.34876728 -0.064368645 
    2   2  9.5 17.9 139.6 18.7 -1.422291 -1.4919746  0.09178083  0.082690047 
    3   3 21.2  8.4  90.0  6.8  1.209521 -0.7860833  0.09398025 -0.055128662 
    4   4 12.0 22.7  42.5 24.1 -1.416036  1.1717796  0.11009779  0.055716119 
    5   5  6.8 21.2  55.2 22.4 -1.610139  0.6979540 -0.48820410  0.118147542 
    6   6  8.2 22.4  55.6 22.6 -1.624810  0.7512985 -0.28509515  0.001357859 
     
     
     
     
     
    那么主成分得分是怎么来的呢? 
    先对原始变量进行标准化,然后乘以相应的特征向量就是主成分 
    b<-scale(a[,-1]) 
    b%*%prloadings



    特征值和特征向量隐藏的秘密主成分变量对应的特征向量的每个元素,与对应的特征值的平方根的乘积,等于该主成分变量,与该元素列标签对应的原始变量之间的相关系数。这是特征值与特征向量隐藏的秘密,可以用矩阵代数严格推导出来。不过这句话读起来比较费劲,我们用图8来表示这一关系。图中的eigVec1至eigVec4是4个特征向量,对应的特征值分别为eigVal1至eigVal4。我们在每个列中进行操作,用特征向量每个元素分别乘以对应特征值的平方根,得到该主成分变量与所有原始变量的相关系数。

  • 相关阅读:
    mojoportal学习——文章翻译之超过3个内容面板
    mojoportal学习——文章翻译之mojoportal的皮肤模板
    mojoportal中替换第一层菜单中的连接为空连接
    mojoportal学习——文章翻译之不同的模块使用不同的风格
    mojoportal学习——文章翻译之layout.master文件
    mojoportal学习——文章翻译之mojoportal高级功能之菜单子站点化
    GridView选中行变色(无刷新)
    页面之间传递参数的几种方法荟萃
    ASP.NET程序中常用的三十三种代码(一)
    ASP.NET设计应用程序的七大绝招
  • 原文地址:https://www.cnblogs.com/100thMountain/p/5371407.html
Copyright © 2020-2023  润新知