################ ## PCA based on SVD: prcomp ################ load("datV5video.rda") dat2 ## big numbers indicate good performance datC <- scale(dat2, center = TRUE, scale = FALSE) ## Using eigenvalue decomposition (using correlation matrix) ?princomp heptathlon_pca <- princomp(datC, cor = TRUE) summary(heptathlon_pca, loadings = TRUE) head(heptathlon_pca$scores[,1:3]) ## coordinates on first 3 PCs ## Using singular value decomposition (using correlation matrix) ?prcomp prRes <- prcomp(dat2, center = TRUE, scale = TRUE, retx = TRUE) summary(prRes) prRes$rotation ## loadings head(prRes$x[,1:3]) ## coordinates on first 3 PCs ## In high-dimensional settings (p>n), only the SVD-approach works set.seed(32) datHD <- matrix(rnorm(50*100), 50, 100) dim(datHD) ## more variables than samples EVapproach <- princomp(datHD) ## does not work SVDapproach <- prcomp(datHD) ## works SVDapproach$x[,1:3] ## coordinates on first 3 PCs