楼主: 李会超
11599 10

[R] 〖R语言〗一个主成分分析例子 [推广有奖]

  • 1关注
  • 31粉丝

已卖:1166份资源

教授

33%

还不是VIP/贵宾

-

威望
0
论坛币
121239 个
通用积分
62.0400
学术水平
140 点
热心指数
152 点
信用等级
84 点
经验
56173 点
帖子
1180
精华
1
在线时间
1120 小时
注册时间
2008-11-6
最后登录
2024-4-29

楼主
李会超 发表于 2015-2-12 14:54:28 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币


数据集+主成分分析+主成分得分+特征值和特征向量隐藏的秘密


1、数据集



文档排版有问题,可以下载附件,,假设有一个数据框a,num是样本序号,var1-var4是四个变量



  1. > a
  2.    num var1 var2  var3 var4
  3. 1    1 21.0 10.7  99.7  9.5
  4. 2    2  9.5 17.9 139.6 18.7
  5. 3    3 21.2  8.4  90.0  6.8
  6. 4    4 12.0 22.7  42.5 24.1
  7. 5    5  6.8 21.2  55.2 22.4
  8. 6    6  8.2 22.4  55.6 22.6
  9. 7    7  3.6 29.2  68.3 26.7
  10. 8    8 19.5 15.2  18.8 17.4
  11. 9    9 24.8  5.4  43.7  2.9
  12. 10  10  8.4 18.6 146.2 19.7
  13. 11  11 28.9  4.4   4.9  1.1
  14. 12  12 19.5 15.1  10.2 18.5
  15. 13  13 28.3  4.7  13.3  1.8
  16. 14  14 24.7 12.1 116.8 12.6
  17. 15  15 12.8 23.6  90.0 23.7
  18. 16  16 23.1  6.8 100.1  3.7
  19. 17  17 15.1 13.7 100.9 14.2
  20. 18  18  2.9  6.2  80.7  2.7
  21. 19  19 18.4 11.8  99.3 13.8
  22. 20  20 22.9 12.3  47.6 13.3
  23. 21  21  5.8 29.4  83.5 27.6
  24. 22  22 18.8  8.6  61.1  8.9
复制代码

2、主成分分析



对四个变量进行主成分分析


  1. pr<-princomp(~var1+var2+var3+var4,data=a,cor=TRUE,scores=TRUE)  #从相关矩阵求解,并列出主成分得分

  2. > summary(pr,loadings=TRUE)
  3. Importance of components:
  4.                           Comp.1    Comp.2     Comp.3     Comp.4
  5. Standard deviation     1.6430057 0.9753338 0.57235000 0.14721331
  6. Proportion of Variance 0.6748669 0.2378190 0.08189613 0.00541794
  7. Cumulative Proportion  0.6748669 0.9126859 0.99458206 1.00000000
  8. Loadings:
  9.      Comp.1 Comp.2 Comp.3 Comp.4
  10. var1  0.530  0.111  0.836      
  11. var2 -0.582  0.232  0.262 -0.734
  12. var3 -0.233 -0.934  0.271      
  13. 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表示主成分的系数矩阵


  1. > cor(a[,-1])        #列出四个变量的相关系数矩阵
  2.            var1       var2       var3       var4
  3. var1  1.0000000 -0.7352556 -0.3579002 -0.6830847
  4. var2 -0.7352556  1.0000000  0.1825704  0.9752175
  5. var3 -0.3579002  0.1825704  1.0000000  0.1738883
  6. var4 -0.6830847  0.9752175  0.1738883  1.0000000

  7. e<-cbind(a,pr$scores)       #加入主成分得分


  8. > head(e)
  9.   num var1 var2  var3 var4    Comp.1     Comp.2      Comp.3       Comp.4
  10. 1   1 21.0 10.7  99.7  9.5  0.775962 -0.8698329  0.34876728 -0.064368645
  11. 2   2  9.5 17.9 139.6 18.7 -1.422291 -1.4919746  0.09178083  0.082690047
  12. 3   3 21.2  8.4  90.0  6.8  1.209521 -0.7860833  0.09398025 -0.055128662
  13. 4   4 12.0 22.7  42.5 24.1 -1.416036  1.1717796  0.11009779  0.055716119
  14. 5   5  6.8 21.2  55.2 22.4 -1.610139  0.6979540 -0.48820410  0.118147542
  15. 6   6  8.2 22.4  55.6 22.6 -1.624810  0.7512985 -0.28509515  0.001357859
复制代码






3、主成分得分



那么主成分得分是怎么来的呢?
先对原始变量进行标准化,然后乘以相应的特征向量就是主成分



  1. b<-scale(a[,-1])
  2. b%*%pr$loadings
复制代码





4、特征值和特征向量隐藏的秘密



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









二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:主成分分析 主成分 R语言 Proportion cumulative 秘密 样本

已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
niuniuyiwan + 60 + 60 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 60  论坛币 + 60  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

本帖被以下文库推荐

学无止境,坚持!

沙发
loveyuqing 发表于 2015-2-12 15:13:26
赞赞赞
很清晰

藤椅
xupengswordsman 发表于 2015-3-10 16:04:08
赞一个 谢谢楼主分享

板凳
铁锷未残 学生认证  发表于 2015-6-8 09:21:15
谢谢分享

报纸
421073390 在职认证  发表于 2015-6-10 11:09:44
没看懂!
但是看起来很高大上的样子!

地板
pilk123 发表于 2015-6-27 15:15:10
谢谢分享

7
niuniuyiwan 在职认证  发表于 2015-8-6 22:37:33
好人,好文,好帖,感谢分享

8
suhongxia 发表于 2016-6-22 09:32:28
请问一下loadings里面得到的数据符号为什么和特征向量的符号不一样?会有影响吗?

9
vmit 发表于 2016-8-18 17:42:59
好帖,感谢分享

10
济江篇已出1 发表于 2016-10-26 21:47:14
谢谢分想

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 17:50