Rotate {FAiR}R Documentation

Choose a Transformation in Exploratory Factor Analysis

Description

This function should be used following Factanal with model = "EFA" to obtain a transformation of the preliminary factors that is optimal with respect to some intersection of criteria.

Usage

Rotate(FAobject, criteria, weights = NULL, seeds = 12345, ...)

Arguments

FAobject An object of class "FA" produced by Factanal with model = "EFA".
criteria An optional list whose elements are functions or character strings naming functions to be used in the lexical optimization process. See the details section. It is usually best to leave this argument unspecified and allow Rotate to prompt you for the criteria using its pop-up menus. This argument is primarily intended for use in simulations, but it is also useful for passing user-defined functions.

If criteria is a list that includes character strings the strings should be one or more of "dets", "limit_correlations", "no_suppressors" and "positive_manifold". The last element of the list could be a user-defined function or one of "phi", "varphi", "minimaximin", or "LS".
weights This argument is only relevant if the varphi criterion is used for transformation and should either be NULL or a numeric vector giving the weights to be used If NULL, then a dynamic weighting scheme will be used for the with the varphi criterion.
seeds A vector of length one or two to be used as the random number generator seeds corresponding to the unif.seed and int.seed arguments to genoud respectively. If seeds is a single number, this seed is used for both unif.seed and int.seed. These seeds override the defaults for genoud and make it easier to replicate an analysis exactly.
... Further arguments that are passed to genoud. Note that several of the default arguments to genoud are silently overridden by Factanal out of logical necissitity. These overridden defaults are: nvars, max, hessian, lexical, Domains, default.domains, data.type.int, fn, BFGSfn, gr, BFGShelp, unif.seed, and int.seed. In addition, several of the default arguments to genoud are silently overridden unless the user explicitly specifies them by passing the arguments through dots. Such arguments include: MemoryMatrix = FALSE, print.level = 1, P9mix = 1, MemoryMatrix = FALSE, print.level = 1, max.generations = 1000, project.path, starting.values, and boundary.enforcement = 1. The arguments to genoud that remain at their defaults but you may want to seriously consider tweaking are pop.size and wait.generations.

Details

Factor transformation is complicated and is discussed in detail in Goodrich (2008). This help page should really only be used as a reminder for what the various choices are, which are normally indicated by leaving criteria unspecifying and responding to pop-up menus. The vignette provides a step-by-step guide to navigating the pop-up menus and formally defines the criteria to follow; execute vignette("FAiR") to read it.

The basic problem is to choose a transformation of the factors that is optimal with respect to some intersection of criteria. Since the objective function is vector valued, lexical optimization is used via a genetic algorithm; see genoud.

Currently, there are four options for the ultimate criterion in the lexical optimization. These include Thurstone's (1935) criterion ("phi") and a generalization of Thurstone's criterion ("varphi") that may overcome some of the shortcomings with phi. In addition, there is a criterion ("minimaximin") that captures Thurstone's concept of simple structure in another way, and one crition for simple loadings, called the Loading Simplicity Index ("LS") that is advocated in Lorenzo-Seva (2003).

There are also many options for additional criteria that precede the ultimate criterion in the lexical ranking. These criteria can be seen as “constraints” so that one is searching for the transformation matrix that yields the minimum value of the ultimate criterion subject to the constraints defined by previous criteria. The only required constraint is the constraint that the factor intercorrelation matrix be sufficiently nonsingular.

It is not necessary to provide starting values for the parameters, since there are is a mechanism to generate them automatically. But a matrix of starting values can be passed to through the dots to genoud. This matrix should have rows equal to the pop.size argument in genoud and columns equal the number of factors squared, which corresponds to the nvars argument in genoud. The columns correspond to the cells of the transformation matrix, albeit in a somewhat convoluted order. The order of the parameters is row-major order with respect to the transformation matrix, with the exception that the parameters comprosing the last row of the transformation matrix are moved to the very end. Also, in contrast to some texts, the transformation matrix in Rotate has unit-length columns, rather than unit-length rows.

Value

An object of formal S4 class "FA".

Note

The underlying genetic algorithm will print a variety of output as it progresses. On Windows, you have to move the scrollbar periodically to flush the output to the screen. The output will look something like this
0 -1.0 -1.0 ... -1.0 double
1 -1.0 -1.0 ... -1.0 double
... ... ... ... ... ...
437 -1.0 -1.0 ... -1.0 double

The integer on the very left indicates the generation number. If it appears to skip one or more generations, that signifies that the best individual in the “missing” generation was no better than the best individual in the previous generation. The sequence of negative ones indicates that various constraints specified by the user are being satisfied by the best individual in the generation. The curious are referred to the source code and / or the, vignette, but for the most part users need not worry about them provided they are -1.0. If any but the last are not -1.0 after the first few generations, there is a problem because no individual is satisfying all the constraints. The last number is a double-precision number and is typically the logarithm of the analytic criterion specified by the user. This number will, decrease, sometimes painfully slowly, sometimes intermittently, over the generations since the criterion is being minimized subject to the aforementioned constraints. Finally, do not be particularly concerned if there are messages indicating a gradient check has failed because there is no strong reason to expect the gradient of the (last) criterion with respect to all the cells of the transformation matrix will be particularly small

Author(s)

Ben Goodrich http://wiki.r-project.org/rwiki/doku.php?id=packages:cran:fair

References

Goodrich, B. (2008) Analytic Transformation of Factors in FAiR. Unwritten manuscript.

Lorenzo-Seva, U. (2003) A factor simplicity index. Psychometrika, 68, 49–60.

Thurstone, L. L. (1935) The Vectors of Mind. Cambridge University Press.

See Also

Factanal

Examples

## See first example for Factanal()

[Package FAiR version 0.2-0 Index]