注意事项:在主成分分析中变量的数量不得大于样本数量;如果样本量小于变量数,但是样本量足够大,那么也可以通过抽样实现主成分分析。
主成分分析的相关步骤及原理可以参照以下的链接:
1.http://wiki.mbalib.com/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E6%B3%95
2.http://ufldl.stanford.edu/wiki/index.php/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90
3.http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html
R语言中主成分分析过程案例:
test<-data.frame( a=c(148, 129, 160, 149, 159, 142, 153, 140,151, 139, 150, 161, 148, 140, 137, 152, 149, 145, 160, 166, 151, 147, 157, 137, 157, 161, 144, 146, 139, 148), b=c(41, 34, 49, 36, 45, 51, 43, 43, 42,31, 29, 37, 59, 33, 31, 35, 47, 45, 47, 44, 42, 38, 39, 37, 48, 36, 36, 40, 35, 38), c=c(72, 71, 77, 67, 80, 66, 76, 77, 77,68, 64, 78, 78, 67, 66, 73, 82, 70, 74, 78, 73, 73, 68, 65, 80, 74, 68, 67, 68, 70), d=c(78, 73, 86, 79, 86, 76, 83, 79, 80,74, 74, 84, 83, 47, 73, 79, 79,67, 87, 85, 82, 88, 80, 55, 88, 70, 76, 76, 73, 78) )
sd=scale(test)
pca<-princomp(sd,cor=TRUE)#data为数据矩阵或数据框,cor为是否用相关阵,默认为协差阵,scores为是否输出成分得分
screeplot(pca,type="line",mian="碎石图",lwd=2) #画出碎石图,其他碎石图:screeplot(pca) #条型;biplot(pca) #分散型
s=pca$scores[,1:2]#输出前两个主成分的得分
summary(data.pr,loading=TRUE)#loading=TURE选项列出了主成分对应原始变量的系数
其中:standarddeviation 标准偏差Porportion of Variance 贡献率(方差比例)
comulative proportion 累计贡献率(累计比例)
s=pca$scores[,1:2]#输出前两个主成分的得分
c=s[1:评价对象的个数,1]*q1+s[1:评价对象的个数,2]*q2
cbind(s,c)
然后把综合得分c的值从小到大排序,得到最后评价结果。
欢迎大家学习交流