| refine_rotation | R Documentation |
The bifactor target rotation criterion surface has many local minima. R and Mplus sometimes converge to different ones, leading to different partitioning of variance between G and specific factors (while fit indices remain identical because they are rotation-invariant).
refine_rotation(results)
results |
An |
This function uses orthogonal Procrustes rotation to compute the rotation
matrix \mathbf{T} that maps R's unrotated loading matrix toward the
Mplus STDYX solution, then evaluates whether the target criterion at that
\mathbf{T} is lower than R's best random-start criterion. If so, the
better rotation is adopted. This is methodologically sound because:
The same published criterion function is still being minimised.
Procrustes only provides a well-informed starting point; the final
solution is the converged GPArotation::targetT optimum from that
start.
The approach is analogous to Mansolf and Reise's (2016) recommendation to use Schmid-Leiman solutions as warm starts.
The same results object with fit_besem updated if a
better rotation was found, otherwise unchanged. A message reports whether
the criterion improved. The comparison_table is also updated.
Mansolf, M., and Reise, S. P. (2016). Exploratory bifactor analysis: The Schmid-Leiman orthogonalization and Jennrich-Bentler analytic rotations. Multivariate Behavioral Research, 51(5), 698–717.
## Not run:
# Requires run_comparison() results that include a Mplus rotation reference
# (results$mplus_results non-NULL), so a licensed Mplus install is needed.
results <- run_comparison(spec, mplus_folder = tempfile("mplus_"))
results <- refine_rotation(results)
omega <- compute_omega(results)
print(omega)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.