Does anybody know how to calculate the maximum likelihood factor loadings from only the correlation (R) matrix and/or covariance (S) matrix in Factor Analysis "by hand" (i.e., by Excel)? Or, even better, point me to a clear explanation with a worked example?

I don't have the underlying data, so I can't just use a software program to solve the problem for me. (Any answer involving typical FA software commands or menu sequences won't be helpful, I don't think.)

To the extent it's helpful, I'm using Johnson and Wichern's "Applied Multivariate Statistical Analysis", 6th Edition. In the exercises in Chapter 9, we're given just the R or S matrix and then asked to perform the maximum likelihood calculation repeatedly (e.g., exercises 9.20 b; 9.24, 9.26, and 9.27), yet the book never shows an example (as far as I can tell, nor does the answer key, which my professor makes available to us).

Thanks in advance and regards!


1 Answer 1


You could look at the source code for the factanal function in R. It is possible to provide a covariance or correlation matrix as an argument.

  • You can see the source code here
  • Or it would probably be more useful to type debug(factanal) and then run the factanal function with a sample correlation matrix. You could then inspect the effect of each step.
  • $\begingroup$ Thanks for the quick response. I hate to admit this, but I don't know how to run custom packages in R (I'm very new to R). And I can't find this package in the standard R library. Any tips about how I can run this script? If the answer is I just need to get up to speed on R, so be it! $\endgroup$ Jul 26, 2013 at 20:42
  • $\begingroup$ There's nothing custom about factanal it's a built-in function in base R. You can just load R and type factanal into the R console and you'll see the code for the function. That said, if you're new to R, you may find following the code challenging. $\endgroup$ Jul 28, 2013 at 9:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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