同样一组数据,我用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.010.020.650.01-0.650.01
硫化氢-0.39-0.490.620.68-0.390.490.390.49
二氧化碳-0.280.220.44-0.30-0.28-0.220.28-0.22
碳40.39-0.47-0.610.650.390.47-0.390.47
环氧氯丙烷-0.45-0.220.700.31-0.450.220.450.22
环己烷0.06-0.67-0.100.930.060.67-0.060.67其次看得分值。得分值的情况与因子载荷一样。由于得分值不同,最后计算的总分值也就不同了。
得分R princompR rdamatlabSPSS
Comp.1Comp.2PC1PC2PC1PC2PC1PC2
1-0.071.240.04-0.84-0.06-1.160.07-1.18
2-0.362.860.21-1.92-0.34-2.670.34-2.66
3-1.80-1.581.071.06-1.691.481.691.49
4-2.32-0.611.380.41-2.170.572.190.56
52.81-1.06-1.680.712.631.00-2.650.99
60.530.08-0.31-0.050.49-0.08-0.5-0.06
70.07-0.79-0.040.530.060.74-0.060.75
81.14-0.14-0.680.091.070.13-1.080.11
但是我不清楚问题出在哪里啊。
以下是每个方法的过程,请诸位看看:
R princomp函数:
mydata
mydata.pr
mydata.pr$loadings[,1:2]
mydata.pr$scores[,1:2]
R rda函数:
rawdata
mydata.pca=rda(rawdata,scale=T)
summary(mydata.pca)
matlab:data为原始数据
sddata=zscore(data);%将数据进行标准化
[coeff,score,latent,tsquare,explained]=pca(sddata)
spss略。
原始数据很简单:氯硫化氢二氧化碳碳4环氧氯丙烷环己烷
site 10.0560.0840.0310.0380.0080.022
site 20.0490.0550.10.110.0220.007
site 30.0380.130.0790.170.0580.043
site 40.0340.0950.0580.160.20.029
site 50.0840.0660.0290.320.0120.041
site 60.0640.0720.10.210.0280.038
site 70.0480.0890.0620.260.0380.036
site 80.0690.0870.0270.250.0450.021