全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
16067 17
2015-04-24
同一样本数据,2种不同代码得出的主成分得分系数为什么不一样?下面的完整代码,求问,很困惑,不知道哪一种是对的?

法一:

shuju<-read.csv(file="shuju.csv",header=TRUE,sep=",")

library(psych)

library(GPArotation)

fa.parallel(shuju[,-1],fa="pc",n.iter=100,show.legend=FALSE)

pc<-principal(shuju[,-1],nfactors=4,score=T)

          RC1     RC2     RC3    RC4  h2        u2

Open       0.95    0.11    0.21   0.16   0.98       0.0220

High       0.95   0.15    0.20    0.18    0.99        0.0074

Low        0.94   0.17    0.22   0.13   0.99       0.0147

Close      0.94   0.22    0.21    0.14    0.99        0.0094

Volume     0.67   0.26    0.14    0.59    0.88      0.1215

Chengjiaoe 0.72   0.27    0.12    0.56     0.91         0.0851

MA5        0.95  0.00    0.20    0.16   0.98       0.0228

AR26       0.14   0.23    0.92    0.17    0.96       0.0448

BR26       0.33   0.23    0.89    0.15   0.97        0.0329

BIAS12     0.19   0.89    0.30    0.16     0.93        0.0668

OBV        0.88   0.16    -0.02    0.29    0.88       0.1214

PSY        0.36   0.16    0.38    0.73    0.83        0.1656

K          0.19   0.79    0.29    0.29    0.83       0.1697

WR        -0.10   -0.93   -0.0     0.02    0.88       0.1231

法二:

shuju.pr<-princomp(shuju[,-1],cor=TRUE)

summary(shuju.pr,loadings=TRUE)

Loadings:

          Comp.1   Comp.2   Comp.3  Comp.4   

Open      -0.312    0.199              0.182                     

High      -0.319     0.178              0.158                                    

Low       -0.316    0.165              0.233                        

Close     -0.320     0.144              0.213                           

Volume    -0.293                          -0.411                        

Chengjiaoe  -0.302                        -0.365                        

MA5       -0.301   0.258               0.162                     

AR26      -0.186    -0.332     0.568     0.126            

BR26      -0.230   -0.254      0.520     0.206                             

BIAS12    -0.203   -0.466      -0.239                              

OBV       -0.288    0.209    -0.181                  

PSY       -0.241               0.210         -0.628                 

K         -0.207   -0.422     -0.186                             

WR          0.134  0.435      0.466             -0.209  



二维码

扫码加我 拉你入群

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

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

全部回复
2015-4-25 13:39:45
principaL做主成分默认是方差极大旋转,所以得到的PC1 PC2 并不是按照方差贡献率排序的(也就是不是让PC1解释最多方差,PC2其次…这种,而是让PC间尽量不相交) 想要得到真正的PC成分,rotate改成‘none’ 当然具体情况再看具体怎么选
而且 principal输出的RC1 RC2 RC3 是主成分与原始变量的相关系数,h2是联合解释率,u2是1-h2,所以你从princal的结果是看不出PC到底是什么
既然都看不出是什么,为什么你断定两种方法结果不同
-----------------------------------------------
用princomp输出的结果跟前者不一样,SS loading输出的把原始变量变成PC需要的系数,而不是成分
二维码

扫码加我 拉你入群

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

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

2015-4-25 19:15:32
katymeala 发表于 2015-4-25 13:39
principaL做主成分默认是方差极大旋转,所以得到的PC1 PC2 并不是按照方差贡献率排序的(也就是不是让PC1解 ...
谢谢你,是我理解的不透。
方法一经过 new_shuju<-pc$scores 得到的是最终需要的新数据吗?不太明白主成分得分这个概念
二维码

扫码加我 拉你入群

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

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

2015-4-25 19:52:31
bbjjlovely 发表于 2015-4-25 19:15
谢谢你,是我理解的不透。
方法一经过 new_shuju
是的
主成分分析是把几个变量整成一个变量,例如一个n*m的矩阵(n个人,每个人m个指标),转换成n*l的数据矩阵(l<m) l就是主成分的个数 是m个变量的线性组合的结果 所以pc$scores得到的主成分得分就是这个n*l的矩阵
二维码

扫码加我 拉你入群

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

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

2015-4-25 20:18:57
katymeala 发表于 2015-4-25 19:52
是的
主成分分析是把几个变量整成一个变量,例如一个n*m的矩阵(n个人,每个人m个指标),转换成n*l的数据 ...
还有个问题哦,最后的方程这样对吧:
y1=-0.312x1-0.319x2...+0.314x14
y4=0.182x1    ...          -0.209x14
这里面的x1 x2是什么数据?
这个系数,也就是法2里的loadings,叫主成分载荷吗?
二维码

扫码加我 拉你入群

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

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

2015-4-25 20:25:57
bbjjlovely 发表于 2015-4-25 20:18
还有个问题哦,最后的方程这样对吧:
y1=-0.312x1-0.319x2...+0.314x14
y4=0.182x1    ...          -0 ...
x1-x14就是14个指标,就是前面说的n*m里的m,就是原始数据
系数loading跟法1的$weights一样

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群