楼主: gnehsijux
6370 8

[实际应用] matlab、R软件等做主成分分析结果不同?为什么? [推广有奖]

  • 0关注
  • 1粉丝

初中生

14%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
135 点
帖子
7
精华
0
在线时间
14 小时
注册时间
2015-8-29
最后登录
2018-4-5

5论坛币
同样一组数据,我用spss、matlab、R中的princomp函数和vegan程序包中的rda函数多种计算方法做主成分分析,结果竟然不一样。我仔细看了下,特征值和贡献率都一样,问题出在因子载荷和得分系数上。我会给出原始数据,希望高手用自己熟悉的软件帮忙计算下啊,如果能同时用多个软件计算就更好了。实在感激不尽。本人新手,金币实在不多。
首先看因子载荷。以spss结果为准,princomp函数的PC2值刚好与spss结果为相反数;matlab的PC1结果与SPSS结果为相反数,rda函数与spss结果接近,数值有所差异。

因子载荷图
R princompR rdamatlabSPSS
Comp.1Comp.2PC1PC2
   0.65  -0.01  -1.01   0.02   0.65   0.01  -0.65   0.01
硫化氢  -0.39  -0.49   0.62   0.68  -0.39   0.49   0.39   0.49
二氧化碳  -0.28   0.22   0.44  -0.30  -0.28  -0.22   0.28  -0.22
碳4   0.39  -0.47  -0.61   0.65   0.39   0.47  -0.39   0.47
环氧氯丙烷  -0.45  -0.22   0.70   0.31  -0.45   0.22   0.45   0.22
环己烷   0.06  -0.67  -0.10   0.93   0.06   0.67  -0.06   0.67
其次看得分值。得分值的情况与因子载荷一样。由于得分值不同,最后计算的总分值也就不同了。

得分R princompR rdamatlabSPSS
Comp.1Comp.2PC1PC2PC1PC2PC1PC2

1

  -0.07   1.24   0.04  -0.84  -0.06  -1.16

0.07

-1.18

2

  -0.36   2.86   0.21  -1.92  -0.34  -2.67

0.34

-2.66

3

  -1.80  -1.58   1.07   1.06  -1.69   1.48

1.69

1.49

4

  -2.32  -0.61   1.38   0.41  -2.17   0.57

2.19

0.56

5

   2.81  -1.06  -1.68   0.71   2.63   1.00

-2.65

0.99

6

   0.53   0.08  -0.31  -0.05   0.49  -0.08

-0.5

-0.06

7

   0.07  -0.79  -0.04   0.53   0.06   0.74

-0.06

0.75

8

   1.14  -0.14  -0.68   0.09   1.07   0.13

-1.08

0.11


但是我不清楚问题出在哪里啊。
以下是每个方法的过程,请诸位看看:
R princomp函数:

mydata<-read.table ("E:/rawdata.txt",header=TRUE)

mydata=scale(mydata)

mydata.pr<-princomp(mydata,cor= TRUE)

mydata.pr$loadings[,1:2]

mydata.pr$scores[,1:2]


R rda函数:

rawdata<-read.table ("E:/rawdata.txt",header=TRUE)

mydata.pca=rda(rawdata,scale=T)

summary(mydata.pca)


matlab:data为原始数据

sddata=zscore(data);%将数据进行标准化

[coeff,score,latent,tsquare,explained]=pca(sddata)


spss略。

原始数据很简单:

硫化氢二氧化碳碳4环氧氯丙烷环己烷
site 1

0.056

0.084

0.031

0.038

0.008

0.022

site 2

0.049

0.055

0.1

0.11

0.022

0.007

site 3

0.038

0.13

0.079

0.17

0.058

0.043

site 4

0.034

0.095

0.058

0.16

0.2

0.029

site 5

0.084

0.066

0.029

0.32

0.012

0.041

site 6

0.064

0.072

0.1

0.21

0.028

0.038

site 7

0.048

0.089

0.062

0.26

0.038

0.036

site 8

0.069

0.087

0.027

0.25

0.045

0.021



关键词:MATLAB 主成分分析 matla atlab 结果不同 计算方法 matlab 硫化氢 软件 程序
沙发
lzsxy2009 发表于 2015-8-30 12:41:45 |只看作者 |坛友微信交流群
算法不同,涉及到模型具体参数设置,有些与数据存储也有关系。

使用道具

藤椅
gnehsijux 发表于 2015-8-30 12:44:21 |只看作者 |坛友微信交流群
lzsxy2009 发表于 2015-8-30 12:41
算法不同,涉及到模型具体参数设置,有些与数据存储也有关系。
问题是这几种结果完全背道而驰啊,除了SPSS和r软件中的rda函数结果算是比较接近的。肯定是哪儿出了问题,就是一个正负数的问题,还请多多指教。
原始数据很简单的。

使用道具

板凳
gnehsijux 发表于 2015-8-31 11:06:24 |只看作者 |坛友微信交流群
为什么都没有人回复?问题太简单了吗?大家都没有碰到这种问题?
我也是刚接触,只知道操作不明所以。还请高手多多指教啊

使用道具

报纸
gnehsijux 发表于 2015-8-31 22:07:00 |只看作者 |坛友微信交流群
我将这个问题凝练下:
为什么不同软件计算出来的因子载荷数值可能互为相反数?

使用道具

地板
gnehsijux 发表于 2015-9-8 21:11:35 |只看作者 |坛友微信交流群
http://www.ilovematlab.cn/thread-203720-1-1.html
http://www.zybang.com/question/329e58313c20d595115355cfd1323141.html
http://www.zybang.com/question/6ce3a2ea57eda77ff3e48ee1ac4e8b47.html
https://bbs.pinggu.org/thread-828716-1-1.html
http://emuch.net/bbs/viewthread.php?tid=3664445
一些帖子,供参考

使用道具

7
luangao 在职认证  发表于 2015-12-17 10:17:51 |只看作者 |坛友微信交流群
我也很想知道原因。

使用道具

8
陌上花似锦12 发表于 2017-12-5 10:42:40 |只看作者 |坛友微信交流群
你好,请问这个问题解决了么?我现在也遇到了这个问题,求帮助,不胜感激

使用道具

9
槿羽之南 发表于 2019-3-10 15:28:20 |只看作者 |坛友微信交流群
我也遇到了类似的问题诶,Eviews、R和SPSS结果出来都不一样,请问有人可以解答一下吗?谢谢了!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 08:21