Learn R Programming

FAiR (version 0.4-15)

GPA2FA: Covert Result of Gradient Projection Algorithm

Description

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.

Usage

GPA2FA(GPAobject, FAobject)

Arguments

GPAobject
the result of a call to one of the transformation functions in GPArotation (see GPA) with A = loadings(FAobject)
FAobject
an object of FA.EFA-class produced by Factanal

Value

An object of FA.EFA-class with transformed loadings.

Details

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.

See Also

GPA

Examples

Run this code
  # 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)

Run the code above in your browser using DataLab