R中的主成分分析函数是princomp,其输出结果包括特征值的平方根(sdev)、单位特征向量(load)、因子得分(scores)等。
然而输出结果跟SPSS输出不尽一致。在这里小弟写了两个函数,将R中主成分分析的输出结果一体化,贴出来跟大家分享。
两个函数的代码分别如下:
pricom=function(x){ <br />
x=scale(x); <br />
cor=cor(x); <br />
eig=eigen(cor); <br />
cm=sweep(eig$ve,2,sqrt(eig$va),"*"); <br />
par(mfrow=c(1,2)); <br />
plot(eig$va,type="b",pch=22,col="red",ylab="EigenValue", xlab="Component Numbers",main="Scree Plot"); <br />
plot(cm[,1],cm[,2],pch=22,ylab="Component2",xlab="Component1",col="green", <br />
ylim=c(-1,1),xlim=c(-1,1),main="Component Plot"); <br />
abline(h=0,v=0,col="blue"); <br />
rownames(cm)=colnames(x); <br />
colnames(cm)=paste("Comp",c(1:dim(x)[2])); <br />
write.csv(cm,"D://Component Mtrix.csv",row.names=T) <br />
cm <br />
} <br />
<br />
scores=function(x){ <br />
x=scale(x); <br />
cor=cor(x); <br />
eig=eigen(cor); <br />
cm=sweep(eig$ve,2,sqrt(eig$va),"*"); <br />
cm2=sweep(cm,2,eig$va/sum(eig$va),"*"); <br />
scores=x%*%cm2; <br />
write.csv(scores,"D://scores.csv",row.names=T) <br />
scores; <br />
} <br />
第一个函数输出结果包括:Component Matrix,悬崖碎石图,载荷图。
例如
pricom(DATA) <br />
输出结果为:
Comp 1 Comp 2 Comp 3 Comp 4 Comp 5 Comp 6 Comp 7 Comp 8 Comp 9 Comp 10
v1 0.7950001 -0.060144065 0.008697677 0.56507852 -0.135066198 0.143678554 -0.077875777 0.0007345938 0.0037926986 0.0014715092
v2 -0.7208566 0.314824979 -0.475837423 0.07682501 0.309396920 0.210140824 0.094737344 0.0023668077 -0.0068380772 0.0038134883
v3 -0.7406579 -0.636943492 -0.160185149 0.05713586 0.014479830 -0.003239975 0.021458278 -0.0992238977 0.0792299571 0.0012919074
v4 -0.7067703 -0.661901672 -0.176245805 0.10130616 0.058068620 -0.056390300 -0.002048420 0.1011608888 -0.0651573982 -0.0011586092
v5 0.8042734 0.004766166 -0.507466756 -0.08369953 0.176395939 -0.097088710 -0.215653872 -0.0340943603 -0.0195477392 0.0007199536
v6 -0.6595830 0.276611798 -0.507240181 0.04462954 -0.467825127 -0.095992853 0.032523404 0.0042275839 0.0008730082 0.0006228413
v7 -0.9502772 0.220799909 0.093096669 0.10903561 0.093429548 -0.050609487 -0.100084901 0.0327552657 0.0497531293 -0.0530022135
v8 -0.8648319 0.242879593 0.193619843 0.28717471 0.154519908 -0.200829636 0.014773821 -0.0685856110 -0.0612307083 0.0153927042
v9 0.9659989 -0.134339443 -0.128011327 0.02461353 -0.005201777 -0.028266696 0.149304426 -0.0552491310 -0.0597440017 -0.0454607638
v10 0.9236953 0.068687733 -0.151546515 0.15698910 0.172326059 -0.199956059 0.122319448 0.0590242908 0.0790538720 0.0091039202
[attachment=57]
第二个函数输出得分矩阵。
例如:
scores(DATA) <br />
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] -0.81585851 -0.112933643 -0.031413142 -0.0373824197 -1.194449e-02 -2.420710e-03 5.265027e-05 5.245414e-05 -3.479260e-05 4.832879e-06
[2,] 8.04753287 0.253446076 -0.038754941 0.0199436939 -9.461443e-03 -1.672575e-03 1.043000e-03 -3.310686e-05 1.861412e-04 1.204913e-06
[3,] 5.64416031 -0.068406212 -0.065649091 0.0085927623 1.006920e-02 -4.313091e-03 -3.537649e-04 2.456992e-04 -5.452663e-05 -2.102888e-06
[4,] 1.16732963 -0.024966904 -0.023321318 -0.0194659437 -1.168758e-02 2.977352e-03 2.040689e-03 -4.628359e-05 1.973337e-05 2.335092e-06
[5,] 8.77044019 0.223278029 0.037568722 0.0045569416 1.923398e-02 -1.694019e-04 -3.584651e-04 3.457359e-05 1.488438e-05 -1.440170e-06
[6,] 6.80960955 -0.039420282 -0.039673861 -0.0375679585 5.331652e-02 -9.419160e-03 6.985611e-05 -4.673667e-06 1.616877e-04 1.734486e-06
[7,] 5.03967124 0.063174132 -0.019104269 0.0230197258 -2.027647e-02 8.271215e-04 -5.351816e-05 9.868206e-05 -5.417131e-05 -8.702283e-08
………………
………………
附注:而且得分矩阵和Component Matrix可以直接在你的D盘找到哦,方便你在文章中引用数据,路径分别是D://scores.csv和D://Component Mtrix.csv。
例子所用数据在附件里。 [attachment=58]