0
$\begingroup$

When using the factanal() function from the stats package in R using the promax rotation, you are given factor correlations.

tmp = cbind(rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5))
print(factanal(tmp, 3, rotation="promax"))

However, I can not seem to find how these correlations are calculated (no help in the R documentation). I also fail to recreate them myself using cor() on the factor scores.

I'm guessing it may be a polychoric correlation, but I can't be certain.

$\endgroup$
  • $\begingroup$ You could use the functions: library(psych) polychoric() in the psych package to see if you get the same results. $\endgroup$ – Kreitz Gigs Oct 12 '18 at 1:48
  • $\begingroup$ Read answers (particularly, mine) tagged factor-rotation. You will find the formula how factor correlations are computed. And this answer (towards the end) explains that whether factor scores will or will not reproduce these correlations depends on the method of the scores estimation. $\endgroup$ – ttnphns Oct 15 '18 at 11:15
  • $\begingroup$ Thank you for your answers, however, I am specifically interested in how the factanal() function calculates correlations between factors when using the promax rotation. No answer so far has been able to address this question. $\endgroup$ – Taylor Braund Oct 16 '18 at 0:00
1
$\begingroup$

Its calculated using the following code which can be found here https://github.com/SurajGupta/r-source/blob/master/src/library/stats/R/factanal.R:
tmat <- solve(tmp$rotmat) R <- tmat %*% t(tmat)

| cite | improve this answer | |
$\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.