楼主: 慕目穆木
6160 3

[问答] R用相关系数矩阵作主成分分析的三种方法怎么得出来的结果不一样? [推广有奖]

  • 0关注
  • 1粉丝

已卖:20份资源

硕士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
56 个
通用积分
0.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5016 点
帖子
91
精华
0
在线时间
150 小时
注册时间
2016-9-8
最后登录
2019-2-25

楼主
慕目穆木 学生认证  发表于 2017-11-12 11:23:02 |AI写论文
8论坛币
  1. head(grades1)
复制代码
数据结构 随机过程 生存分析 风险 利息理论 时间序列 多元 回归分析 抽样 非参 经济计量学 统计预测与决策 寿险精算学 毛中特
1       78       63       78   88       81       79   90       84   92   84         81             81         90     78
2       85       61      100   85       61       83   79       68   82   91         88             84         89     74
3       69       62       90   84       66       89   85       79   86   84         68             80         87     74
4       52       32       95   68       60       65   63       70   88   73         62             66         77     72
5       85       78      100   93       82       95   86       87   84   93         92             92         97     78
6       98      100      100   99      100       89   97       91   92   96         95             94         98     82
数据长这样

方法1:用求矩阵特征值和特征向量的函数
  1. a<-eigen(cor(grades1))          #求样本相关系数矩阵的特征值和特征向量
复制代码
[1] 8.568 1.044 0.852 0.700 0.657 0.483 0.377 0.322 0.253 0.219 0.170 0.149 0.120 0.088


方法2:用作主成分分析的函数求特征值
  1. pcag<-princomp(grades1,cor=T)      #用样本数据,然后选择cor=T,也是求样本数据相关系数矩阵的特征值
复制代码
Comp.1  Comp.2  Comp.3  Comp.4  Comp.5  Comp.6  Comp.7  Comp.8  Comp.9 Comp.10 Comp.11 Comp.12 Comp.13
  2.927   1.022   0.923   0.836   0.811   0.695   0.614   0.567   0.503   0.468   0.412   0.386   0.346   0.296


  1. pcag2<-princomp(cor(grades1),cor=F)   #直接用样本相关系数矩阵作主成分分析
  2. round(pcag2$sdev,3)
复制代码
Comp.1  Comp.2  Comp.3  Comp.4  Comp.5  Comp.6  Comp.7  Comp.8  Comp.9 Comp.10 Comp.11 Comp.12 Comp.13
  0.332   0.278   0.208   0.182   0.129   0.125   0.096   0.084   0.059   0.054   0.040   0.032   0.024   0.000




在我看来这三个方法都是利用样本相关系数矩阵作主成分分析求出特征值和特征向量,但为什么结果差这么多,到底是哪里出错了呢?还是我理解错了?   
希望得到大神们的帮助,谢谢!



沙发
慕目穆木 学生认证  发表于 2017-11-12 18:50:07
后面我又用principle()函数做了一下,结果还是不一样

藤椅
慕目穆木 学生认证  发表于 2017-11-13 18:41:47
有人吗 ,急呀

板凳
突击检查好 在职认证  发表于 2019-6-1 14:53:53
princomp函数会先标准化原数据,标准化数据的自由度是n,不是n-1,scale标准化用的是n-1,所以你自己用n除算出的标准化数据,代人princomp结果和不加cor=T是一样的。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 热心帮助其他会员

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-7 17:35