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.