3
$\begingroup$

I know how to do factor and canonical correlation analysis on raw data in R. But sometimes we only having correlation matrices for the data. I'd like to know any R functions which can take correlation matrices as input for factor and canonical correlation analysis. It is easy to write dedicated functions but it is nicer to have some built-in tested functions.

$\endgroup$
7
$\begingroup$

Ideas for factor analysis and PCA:

# get some Big 5 personality data and pretend we only have cor matrix and n
library(psych)
bfi <- na.omit(bfi[, 1:25])
xcor <- cor(bfi)
xn <- nrow(bfi)

# factor analysis using correlation matrix
factanal(covmat=xcor, n.obs=xn, factors=5)

# Principal components analysis using psych package
psych::principal(r=xcor, n.obs=xn, nfactors=5)

Canonical correlation analysis

  • I don't think CCA or cancor takes correlation matrices as input.
  • You could use one of the sem packages in R to perform canonical correlation analysis. I know that sem can take a correlation matrix as input.
$\endgroup$
  • 1
    $\begingroup$ (+1) Thanks for your nice answer. Would you like to give an example of canonical correlation analysis with sem package. Thanks $\endgroup$ – MYaseen208 Oct 21 '11 at 1:52
6
$\begingroup$

For factor analysis, the psych package accepts either raw data or a correlation matrix (see e.g., factor.pa()). About CCA, I'm not aware of a package that would take correlation matrices as input instead of row data tables.

$\endgroup$
4
$\begingroup$

I know this is an old topic, but I was having the same problem and came across this page: Canonical Correlation Analysis. I just tried out this guy's function for myself and it works perfectly (albeit with slightly less output than the better known R functions that only accept raw data as input). Hope this helps you or somebody like you (and me) in the future.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.