So, it seems that promax was mostly used because it gives similar results to oblimin but requires less computing. That was relevant back when computers were weak or rotation was done in hand, but not very relevant any more.

To further explore the idea of oblique rotations in higher levels, I did the following:

Used schmid() in every combination of factor method and rotation. Correlated the loadings (factor congruence didn't work here) with the loadings from the first unrotated factor using the same extraction method. Did for both datasets. Scores were not available, so it wasn't possible to correlate them.

Results:

Code:

`> y.sl.df`

oblimin simplimax promax

minres 1.00 1.00 1.00

pa 0.99 0.90 0.98

ml 0.98 0.85 0.97

> z.sl.df

oblimin simplimax promax

minres 0.97 0.97 0.99

pa 0.97 1.00 0.99

ml 0.98 0.99 0.99

Results were remarkable similar.

Given uncertainty about how schmid works precisely, I wanted to compare it with a manual extraction of the 3rd order general factor. Concretely, I extracted the first unrotated factor. Then I extracted the first 8/9 factors. Then I used those to extract 3 factors. Then I used those to extract 1 general factor. Loadings were not available because the last factor is extracted from 2nd order factors, not the manifest variables. Factor scores were available so I used them.

Results:

Code:

`> y.oblique.df`

promax oblimin simplimax bentlerQ geominQ biquartimin

minres 0.80 0.87 0.04 0.86 0.63 0.05

wls 0.55 0.87 -0.01 -0.86 0.80 0.10

gls 0.61 0.85 -0.01 -0.86 0.78 0.14

pa 0.64 0.92 0.01 -0.85 0.66 -0.04

ml 0.63 0.97 0.11 0.99 0.83 0.34

minchi 0.83 0.97 -0.12 0.84 0.99 0.09

> z.oblique.df

promax oblimin simplimax bentlerQ geominQ biquartimin

minres 0.55 0.97 -0.05 0.91 0.34 0.00

wls 0.90 0.86 0.00 0.92 0.16 -0.04

gls 0.90 0.88 0.00 0.93 0.03 -0.01

pa 0.87 0.68 -0.07 0.50 0.86 0.03

ml 0.59 0.98 0.12 0.95 -0.27 0.00

minchi 0.94 0.97 0.01 0.92 0.76 -0.11

What to make of this? Average by rotation method:

Code:

`> round(apply(y.oblique.df,2,mean),2)`

promax oblimin simplimax bentlerQ geominQ biquartimin

0.68 0.91 0.00 0.02 0.78 0.11

> round(apply(z.oblique.df,2,mean),2)

promax oblimin simplimax bentlerQ geominQ biquartimin

0.79 0.89 0.00 0.86 0.31 -0.02

Average by factor method:

Code:

`> round(apply(y.oblique.df,1,mean),2)`

minres wls gls pa ml minchi

0.54 0.24 0.25 0.22 0.64 0.60

> round(apply(z.oblique.df,1,mean),2)

minres wls gls pa ml minchi

0.45 0.47 0.46 0.48 0.39 0.58

We see that oblimin consistently gives the highest correlations with promax somewhat behind. The strongly divergent results for bentlerQ is due to the factor being reversed half of the time in SPI. As for factor method, we see varied results, perhaps chance flukes.

Thoughts about what to make of this?

The minchi method is apparently another method of extraction that I either missed when I looked the first time, or was recently added. I have rerun the earlier analyses with it and they are more of the same.