Derivative free gradient projection rotation optimization routines can be used to
rotate a loadings matrix. The rotation criteria in the GPArotation package
require a derivative to operate. In certain cases, the derivative is complex
or non-existent. The derivative free gradient projection method provides a numerical
alternative to the GPArotation package.
The functions in the package GPArotateDF follow most of the functionality
and logic as in the GPArotation package. Please consult the documentation
in GPArotation for further details.
The argument method can be used to specify a string indicating
the rotation objective. GPFoblq defaults to "quartimin"
and GPForth defaults to "varimax". Available rotation objective functions
include "ff.bentler", "ff.cf", "ff.cubimax", "ff.entropy",
"ff.fss", "ff.geomin", "ff.infomax", "ff.oblimax",
"ff.pst", "ff.quartimax","ff.quartimin", "ff.simplimax",
"ff.target", and "ff.varimax".
Most of the rotation criteria are avaible in the GPArotation pacakage
except for cubimax and Forced Simple Structure.
The rotation criteria are in the functions prefixed by "ff." that are used
in the actual function call. The ff.* function call
would typically not be used directly, but are needed for rotation. Since
these are illustrative of computation, these are all exported
from the package namespace.
New criteria for use with derivative free GP rotation do require a function of the type
ff.newCriterionName that provides value for complexity f, and name of method.
Some rotation criteria (including "simplimax", "pst",
"target", "cf", "fss") require one or more additional arguments.
Check GPArotation documentation for details or see ff.fss.
The argument normalize gives an indication of if and how any normalization should
be done before rotation, and then undone after rotation. If normalize is FALSE
(the default) no normalization is done. If normalize is TRUE then Kaiser normalization
is done. (So squared row entries of normalized A sum to 1.0. This is sometimes
called Horst normalization.) If normalize is a vector of length equal to the
number of indicators (= number of rows of A) then the colums are divided by
normalize before rotation and multiplied by normalize after rotation.
If normalize is a function then it should take A as an argument and return a vector
which is used like the vector above.