-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Varimax did not converge for echelon-pattern matrix #48
Comments
It seems like the lavaan function has some different default values for its function arguments:
Otherwise it uses the same algorithm so it should produce the same results in this case. Matching the function arguments converges for me. For now you have to normalize the matrix manually (see #47): Anorm, weights = kaiser_normalize(A)
rotate!(Anorm, Varimax(), atol = 1e-5, maxiter1 = 10_000, randomstarts = 10)
Arot = kaiser_denormalize(Anorm, weights) Please note that FactorRotations.jl does not yet do some of the convenience transformations such as reflecting signs (#50) or reordering the columns (#49). |
@p-gw Thank you, adjusting the method parameters helped! With the bigger matrix the method struggles more, though (but so does the lavaan implementation). |
I've checked the convergence criterion: both lavaan and FactorRotations.jl use the Frobenius norm. |
To be honest, I don't know. The paper remains pretty vague about how the specific stopping rule was chosen. I'd probably rather keep compatability with existing packages (GPARotation, lavaan, etc.) which means the default values in FactorRotations.jl would need to be changed. On the other hand I also had the idea of adding a relative tolerance to the stopping rule (see #7). I think this would have also caught your convergence error where the criterion just stops decreasing after a while. |
I'm trying a varimax rotation of a 62x8 matrix
A_factors
with echelon pattern:and I am getting
(also tried 10^4 iterations without success, as well as other rotations, e.g. geomin)
lavaan implementation of varimax works instantly and gives reasonable results:
Here's the A_factors matrix:
The text was updated successfully, but these errors were encountered: