# How does factanal() function in R calculate correlations between factors?

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.

• You could use the functions: library(psych) polychoric() in the psych package to see if you get the same results. – Kreitz Gigs Oct 12 '18 at 1:48
• 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. – ttnphns Oct 15 '18 at 11:15
• 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. – Taylor Braund Oct 16 '18 at 0:00

tmat <- solve(tmp\$rotmat) R <- tmat %*% t(tmat)