spss、R做出来的主成分分析因子载荷和得分结果不同
同样一组数据,我用spss、matlab、R中的princomp函数和vegan程序包中的rda函数多种计算方法做主成分分析,结果竟然不一样。我仔细看了下,特征值和贡献率都一样,问题出在因子载荷和得分系数上。我会给出原始数据,希望高手用自己熟悉的软件帮忙计算下啊,如果能同时用多个软件计算就更好了。实在感激不尽。
首先看因子载荷。以spss结果为准,princomp函数的PC2值刚好与spss结果为相反数;matlab的PC1结果与SPSS结果为相反数,rda函数与spss结果接近,数值有所差异。
因子载荷图 | ||||||||
R princomp | R rda | matlab | SPSS | |||||
Comp.1 | Comp.2 | PC1 | PC2 | |||||
氯 | 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 princomp | R rda | matlab | SPSS | ||||
Comp.1 | Comp.2 | PC1 | PC2 | PC1 | PC2 | PC1 | PC2 | |
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 |
其实仔细看结果,R princomp,matlab,SPSS的PCA结果是一样的。rda的算法不同啊。
转载请注明:数据分析 » spss、R做出来的主成分分析因子载荷和得分结果不同