在R中执行带有varimax旋转的PCA

时间:2016-01-22 04:27:18

标签: r pca

我的代码向南走了。

我正在使用:

从csv导入数据578x17
Data=read.csv("Data.csv", header=TRUE, sep=',', dec='.', row.names= 1 , stringsAsFactors=TRUE)

我的相关和协方差矩阵是相同的。

当我尝试使用Varimax旋转进行PCA和PCA时,我得到相同的结果:

PCA=princomp(x = Data, cor = TRUE, scores = TRUE)
Varimax<-princomp(Data, rotation="varimax")

当我尝试以不同的方式进行Varimax旋转时,我得到:

varimax<-varimax(PCA$rotation[,1:5])
  

if(nc&lt; 2)return(x):参数长度为零

时出错

我不确定问题是我的代码还是我的.csv文件,但是非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

带有素食主义者的rda()的PCA中的varimax旋转

此答案的基础取自:

https://stats.stackexchange.com/questions/59213/how-to-compute-varimax-rotated-principal-components-in-r

假设数据矩阵名称为mydata

library(vegan)
library(pracma)
pca.env = rda(mydata, scale=T)
loading = scores(pca.env, choices=c(1,2))$species    #choices determines which pc to be taken
rloading = varimax(loading)$loadings
iloading = t(pinv(rloading))
scores = scale(mydata) %*% iloading

biplot

r = range(c(rloading, scores))
plot(scores, xlim = r, ylim= r, xlab= "PC1 ", ylab= "PC2 ")
arrows(0,0, rloading[,1], rloading[,2], length=0.1, col=2)
text(rloading[,1], rloading[,2], labels = colnames(mydata), pos=3, col=2)
text(scores[,1], scores[,2], labels = rownames(mydata), pos = 3)
abline(h=0, lty=3)
abline(v=0, lty=3)