0

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 01:48
  • Read answers (particularly, mine) tagged `factor-rotation`. You will find the formula how factor correlations are computed. And [this](https://stats.stackexchange.com/a/126985/3277) 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 00:00

1 Answers1

1

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)