Take 2 on this. Below I'm pasting the code to perform PCA in R (without any rotation), manually; using ?princomp; and using ?principal. I also point out some differences in teh output and terminology of the two functions. In short, I found how to compute the scores of principal components when no rotation is used.
However, I'm still confused on how to compute the scores when rotations (such as 'varimax' or other methods in GPArotation) are applied. Any ideas on how to obtain (non-scale'd) scores of the rotated principal components? Thank you Liviu ### require(psych) data(mtcars) rawd <- mtcars[,c("am","carb","cyl","disp","drat","gear","hp","mpg")] ## compute acp .PC <- princomp(~am+carb+cyl+disp+drat+gear+hp+mpg, cor=TRUE, data=mtcars) pca <- principal(rawd, nfactors = 8, residuals = T, rotate="none", scores=T) ## eigenvectors of the correlation matrix of raw data eigens <- eigen(cor(rawd)) eigens$vectors unclass(loadings(.PC)) # component 'loadings' in ?princomp parlance #not sure if ?principal outputs this ## correlation matrix between raw data and unrotated component scores ## 'loadings' in ?principal parlance and 'component matrix' in SPSS eigens$vectors %*% diag(sqrt(eigens$values)) cor(cbind(rawd, .PC$scores)) unclass(pca$loadings) ## extract un-rotated scores of principal components head(scale(rawd) %*% eigens$vectors) # app, but very similar results head(.PC$scores) head(pca$scores) # scale'd, and obtained via regression on scale'd data head(factor.scores(scale(rawd), unclass(pca$loadings))) # same scores as from ?principal #for differeneces between ?princomp and ?principal scores #see last paragraph of Details in ?principal On Tue, Nov 30, 2010 at 10:22 AM, Liviu Andronic <landronim...@gmail.com> wrote: > Dear all > I'm unable to find an example of extracting the rotated scores of a > principal components analysis. I can do this easily for the un-rotated > version. > > data(mtcars) > .PC <- princomp(~am+carb+cyl+disp+drat+gear+hp+mpg, cor=TRUE, data=mtcars) > unclass(loadings(.PC)) # component loadings > summary(.PC) # proportions of variance > mtcars$PC1 <- .PC$scores[,1] # extract un-rotated scores of 1st > principal component > mtcars$PC2 <- .PC$scores[,2] # extract un-rotated scores of 2nd > principal component > head(mtcars[, c('PC1', 'PC2')]) > > However, I no longer understand how to do so if I want to use > ?principal in 'psych' and any of the GPArotation methods. For example, > require(psych) > r <- cor(mtcars[,c("am","carb","cyl","disp","drat","gear","hp","mpg")]) > pca <- principal(r, nfactors = 8, residuals = T, rotate="none") # or > 'varimax' or any other GPArotation supported rotation > pca > > I've turned the 'pca' object and ?principal help page upside down and > I still cannot find anything that would resemble a 'scores' value. I'm > pretty sure it's one matrix computation away, but I cannot find which > one. > > Ideas? Thank you > Liviu > > > > -- > Do you know how to read? > http://www.alienetworks.com/srtest.cfm > http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader > Do you know how to write? > http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail > -- Do you know how to read? http://www.alienetworks.com/srtest.cfm http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader Do you know how to write? http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.