Description Usage Arguments Details Value Author(s) See Also Examples
This utility function can be used in an exploratory factor analysis
when the factors are extracted via Factanal
but transformed
using the GPFoblq
or
GPFoblq
functions in the suggested
GPArotation package. This function simply synthesizes the results
of each to produce an object of FA-class
that will be
recognized by the various post-estimation methods and other functions.
1 | GPA2FA(GPAobject, FAobject)
|
GPAobject |
the result of a call to one of the transformation functions in
GPArotation (see |
FAobject |
an object of |
In some cases, it may be preferable to use the gradient projection algorithm in the
GPArotation package rather than the genetic algorithm used by
Rotate
. The gradient projection algorithm is faster, simpler, and
allows for the possibility of orthogonal rotation. If the gradient projection algorithm
is used, then this function permits a seamless transition from an object of S3 class
"GPArotation"
back to a S4 object of FA.EFA-class
so that the rest
of the post-estimation methods and functions defined in FAiR can be used
on the result.
Rotate
does not do orthogonal rotation for computational and philosophical
reasons but the oblique criteria in GPArotation have now been copied into FAiR
so that they can be utilized by Rotate
. The genetic algorithm permits
constrained optimization, which makes it possible to avoid factor collapse and more
generally to optimize with respect to the intersection of a set of criteria. Also,
Rotate
allows one to use the reference structure or factor contribution
matrix instead of the primary pattern matrix when optimizing with respect to one of
the criteria in GPArotation.
An object of FA.EFA-class
with transformed loadings.
Ben Goodrich
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # step 1: extract factors with Factanal(), rather than factanal()
man <- make_manifest(covmat = ability.cov)
res <- make_restrictions(man, factors = 2, model = "EFA")
efa <- Factanal(manifest = man, restrictions = res, impatient = TRUE)
# steps 2 and 3: transform with quartimin() and then synthesize objects
if( require(GPArotation)) {
efa.GPA <- quartimin(loadings(efa))
efa.Rotated <- GPA2FA(efa.GPA, efa)
}
if(!require(GPArotation)) { # steps 2 and 3 are equivalent to this
efa.Rotated <- Rotate(efa, criteria = list("quartimin"), methodArgs =
list(nfc_threshold = 0, matrix = "PP"))
}
# step 4: interpret with various commands, such as
summary(efa.Rotated)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.