Rotate finds a rotation
that is optimal with respect to an intersection of
criteria, one of which is a make_restrictions,
much of the functionality of Rotate is implemented via
pop-up menus, which is the strongly recommended way to proceed.
Also, the vignette details what all these options mean in
substantive terms; execute vignette("FAiR") to read it.Rotate(FAobject, criteria = list(), methodArgs = list(),
normalize = rep(1, nrow(loadings(FAobject))), seeds = 12345,
NelderMead = TRUE, ...)FA.EFA-class produced by
Factanal.Rotate will prompt you
with pop-up menus, which is the recommende"kaiser" ounif.seed and
int.seed arguments to genoud respectively.
If optim with
method = "Nelder-Mead" when the genetic algorithm has finished to further
polish the solution.FA.EFA-class.criteria and
methodArgs unspecified and responding to pop-up menus. The vignette provides
a step-by-step guide to the pop-up menus and formally defines the criteria; 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 performed via a genetic algorithm, which is
tantamount to constrained optimization; see genoud.
The following functions can be named as constraints but must not be the last element of
criteria:
"no_factor_collapse" nfc_threshold to prevent factor collapse
"limit_correlations" lower and upper limits factor intercorrelations
"positive_manifold" pm_threshold forces "ranks_rows_1st" row_ranks row-wise ordering constraints
"ranks_cols_1st" col_ranks column-wise ordering constraints
"indicators_1st" indicators designate which is the best indicator of a factor
"evRF_1st" none restrict effective variance of reference factors
"evPF_1st" none restrict effective variance of primary factors
"h2_over_FC_1st" none communalities $>=$ factor contributions
"no_neg_suppressors_1st" FC_threshold no negative suppressors
"gv_1st" none generalized variance of primary <= reference="" factors="" "distinguishability_1st" none best indicators have no negative suppressors
}
In fact, "no_factor_collapse" is always included and is listed above only to
emphasize that one must specify methodArgs$nfc_threshold to avoid seeing the
associated pop-up menu. This restriction to avoid factor collapse makes it possible
to utilize one of the following criteria:
"phi" c
"varphi" weights
"LS" eps, scale, and E
"minimaximin"
"geomin" delta
"quartimin"
"target" Target
"pst" Target
"oblimax"
"simplimax" k
"bentler"
"cf" kappa
"infomax"
"mccammon"
"oblimin" gam
}
The first four are defined only on the reference structure matrix. The remainder are copied
from the "pst" which uses NA in the target matrix for untargeted cells rather than
also specifying a weight matrix (which is called W in the methodArgs$matrix as one of "PP", "RS", or
"FC" to use the primary pattern, reference structure, or factor contribution matrix in
conjunction with the criteria from the
Row-standardization should not be necessary. Row-standardization was originally
intended to counteract some tendencies in the transformation process that can
now be accomplished directly through lexical (i.e. constrained) optimization.
Nevertheless, Kaiser normalization divides each row of the preliminary primary
pattern matrix by its length and Cureton-Mulaik normalization favors rows that
are thought to have only one large loading after transformation. Both schemes
are thoroughly discussed in Browne (2001), which also discusses most of the
continuous analytic criteria available in
It is not necessary to provide starting values for the parameters. 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. The columns
correspond to the cells of the transformation matrix in column-major order. In contrast to
some texts, the transformation matrix in Rotate has unit-length columns, rather
than unit-length rows.
Lorenzo-Seva, U. (2003) A factor simplicity index. Psychometrika, 68, 49--60.
Smith, G. A. and Stanley G. (1983) Clocking $g$: relating intelligence and measures of timed performance. Intelligence, 7, 353--368.
Thurstone, L. L. (1935) The Vectors of Mind. Cambridge University Press.
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer.
Factanal## Example from Venables and Ripley (2002, p. 323)
## Previously from Bartholomew and Knott (1999, p. 68--72)
## Originally from Smith and Stanley (1983)
## Replicated from example(ability.cov)
man <- make_manifest(covmat = ability.cov)
res <- make_restrictions(man, factors = 2, model = "EFA")
efa <- Factanal(manifest = man, restrictions = res, impatient = TRUE)
show(efa); summary(efa)
# 'criteria' and 'methodArgs' would typically be left unspecified
# and equivalent choices would be made from the pop-up menus
efa.rotated <- Rotate(efa, criteria = list("phi"),
methodArgs = list(nfc_threshold = 0.25, c = 1.0))
summary(efa.rotated)
pairs(efa.rotated)
## See the example for Factanal() for more post-estimation commandsRun the code above in your browser using DataLab