Compute an iterated Schmid-Leiman target rotation (SLi). This algorithm applies Browne's partially-specified Procrustes target rotation to obtain a full-rank bifactor solution from a rank-deficient (Direct) Schmid-Leiman procedure. Note that the target matrix is automatically generated based on the salient argument. Note also that the algorithm will converge when the partially-specified target pattern in the n-th iteration is equivalent to the partially-specified target pattern in the (n-1)th iteration.
SLi(
R,
SL = NULL,
rotate = "geominQ",
numFactors = NULL,
facMethod = "fals",
salient = 0.2,
urLoadings = NULL,
freelyEstG = TRUE,
gFac = 1,
maxSLiItr = 20,
rotateControl = NULL,
faControl = NULL
)
This function iterates the Schmid-Leiman target rotation and returns several relevant output.
loadings: (Matrix) The bifactor solution obtain from the SLi procedure.
iterations: (Numeric) The number of iterations required for convergence
rotateControl: (List) A list of the control parameters passed to the faMain
function.
faControl: (List) A list of optional parameters passed to the factor extraction (faX
) function.
(Matrix) A correlation matrix
(Matrix, NULL) A (rank-deficient) Schmid-Leiman (SL) bifactor solution (e.g., from a Schmid-Leiman or Direct Schmid-Leiman rotation). If NULL, the function will estimate the SL solution using the SchmidLeiman
function.
(Character) Designate which rotation algorithm to apply. See the faMain
function for more details about possible rotations. A geomin rotation is the default.
(Vector) The number of latent factors at each level of analysis. For example, c(3, 1) estimates three latent factors in the first-order common factor model and one latent factor in the second-order common factor model (i.e., 3 group factors and 1 general factor).
(Character) The method used for factor extraction
(faX
). The supported options are "fals" for unweighted least
squares, "faml" for maximum likelihood, "fapa" for iterated principal axis
factoring, "faregLS" for regularized least squares,
"faregML" for regularized maximum likelihood, and "pca" for principal components
analysis. The default method is "fals".
"fals": Factors are extracted using the unweighted least
squares estimation procedure using the fals
function.
"faml": Factors are extracted using the maximum likelihood
estimation procedure using the factanal
function.
"fapa": Factors are extracted using the iterated principal
axis factoring estimation procedure using the fapa
function.
"faregLS": Factors are extracted using regularized
least squares factor analysis using the fareg
function.
"faregML": Factors are extracted using regularized
maximum likelihood factor using the fareg
function.
"pca": Principal components are extracted.
(Numeric) A threshold parameter used to dichotomize factor loadings to create the target matrix. The default value is .20 (in absolute value) which is based on the Abad et al., 2017 application of this method.
(Matrix, NULL) A full-rank matrix of unrotated factor loadings to be rotated using the (automatically generated) target matrix. If specified as NULL, a full-rank matrix of factor loadings will be extracted using the faX
function. An unweighted least squares ("fals") procedure is the default.
(Logical) Specify whether the general factor loadings are freely estimated (in the partially-specified target matrix). If set to FALSE, only general factor loadings above the salient threshold will be estimated in the partially-specified target rotation.
(Numeric, Vector) The position of the general factor(s) to be estimated. Solutions with multiple general factors may be estimated. Must either (a) freely estimate all loadings on the general factors or (b) only freely estimate general factor loadings that are above the salient threshold. The default column position is 1.
(Numeric) The maximum number of iterations for the SLi procedure. Typically, 10 iterations is usually sufficient to converge (cf. Abad et al., 2017). The default is 20 iterations.
(List) A list of control values to pass to the factor rotation algorithms.
numberStarts: (Numeric) The number of random (orthogonal) starting configurations for the chosen rotation method (e.g., oblimin). The first rotation will always commence from the unrotated factors orientation. Defaults to numberStarts = 10.
gamma: (Numeric) This is a tuning parameter (between 0 and 1, inclusive) for an oblimin rotation. See the GPArotation library's oblimin documentation for more details. Defaults to gamma = 0 (i.e., a quartimin rotation).
delta: (Numeric) This is a tuning parameter for the geomin rotation. It adds a small number (default = .01) to the squared factor loadings before computing the geometric means in the discrepancy function.
kappa: (Numeric) The main parameterization of the Crawford-Ferguson (CF) rotations (i.e., "cfT" and "cfQ" for orthogonal and oblique CF rotation, respectively). Defaults to kappa = 0.
k: (Numeric) A specific parameter of the simplimax rotation. Defaults to k = the number of observed variables.
standardize: (Character) The standardization routine used on the unrotated factor structure. The three options are "none", "Kaiser", and "CM". Defaults to standardize = "none".
"none": No standardization is applied to the unrotated factor structure.
"Kaiser": Use a factor structure matrix that has been normed by Kaiser's method (i.e., normalize all rows to have a unit length).
"CM": Use a factor structure matrix that has been normed by the Cureton-Mulaik method.
epsilon: (Numeric) The rotational convergence criterion to use. Defaults to epsilon = 1e-5.
power: (Numeric) Raise factor loadings the the n-th power
in the promaxQ
rotation. Defaults to power = 4.
maxItr: (Numeric) The maximum number of iterations for the rotation algorithm. Defaults to maxItr = 15000.
(List) A list of optional parameters passed to the factor
extraction (faX
) function.
treatHeywood: (Logical) In fals
, if treatHeywood is
true, a penalized least squares function is used to bound the communality
estimates below 1.0. Defaults to treatHeywood = TRUE.
nStart: (Numeric) The number of starting values to be tried
in faml
. Defaults to nStart = 10.
start: (Matrix) NULL or a matrix of starting values, each column giving an initial set of uniquenesses. Defaults to start = NULL.
maxCommunality: (Numeric) In faml
, set the maximum
communality value for the estimated solution. Defaults to maxCommunality = .995.
epsilon: (Numeric) In fapa
, the numeric threshold
designating when the algorithm has converged. Defaults to epsilon = 1e-4.
communality: (Character) The method used to estimate the
initial communality values in fapa
. Defaults to communality = 'SMC'.
"SMC": Initial communalities are estimated by taking the squared multiple correlations of each indicator after regressing the indicator on the remaining variables.
"maxr": Initial communalities equal the largest (absolute value) correlation in each column of the correlation matrix.
"unity": Initial communalities equal 1.0 for all variables.
maxItr: (Numeric) In fapa
, the maximum number of
iterations to reach convergence. Defaults to maxItr = 15,000.
Casey Giordano (Giord023@umn.edu)
Niels G. Waller (nwaller@umn.edu)
Abad, F. J., Garcia-Garzon, E., Garrido, L. E., & Barrada, J. R. (2017). Iteration of partially specified target matrices: Application to the bi-factor case. Multivariate Behavioral Research, 52(4), 416-429.
Giordano, C. & Waller, N. G. (under review). Recovering bifactor models: A comparison of seven methods.
Moore, T. M., Reise, S. P., Depaoli, S., & Haviland, M. G. (2015). Iteration of partially specified target matrices: Applications in exploratory and Bayesian confirmatory factor analysis. Multivariate Behavioral Research, 50(2), 149-161.
Reise, S. P., Moore, T. M., & Haviland, M. G. (2010). Bifactor models and rotations: Exploring the extent to which multidimensional data yield univocal scale scores. Journal of Personality Assessment, 92(6), 544-559.
Schmid, J., & Leiman, J. M. (1957). The development of hierarchical factor solutions. Psychometrika, 22(1), 53-61.
Other Factor Analysis Routines:
BiFAD()
,
Box26
,
GenerateBoxData()
,
Ledermann()
,
SchmidLeiman()
,
faAlign()
,
faEKC()
,
faIB()
,
faLocalMin()
,
faMB()
,
faMain()
,
faScores()
,
faSort()
,
faStandardize()
,
faX()
,
fals()
,
fapa()
,
fareg()
,
fsIndeterminacy()
,
orderFactors()
,
print.faMB()
,
print.faMain()
,
promaxQ()
,
summary.faMB()
,
summary.faMain()
## Generate a bifactor model
bifactor <- matrix(c(.35, .61, .00, .00,
.35, .61, .00, .00,
.35, .61, .00, .00,
.35, .00, .61, .00,
.35, .00, .61, .00,
.35, .00, .61, .00,
.35, .00, .00, .61,
.35, .00, .00, .61,
.35, .00, .00, .61),
nrow = 9, ncol = 4, byrow = TRUE)
## Model-implied correlation (covariance) matrix
R <- bifactor %*% t(bifactor)
## Unit diagonal elements
diag(R) <- 1
Out1 <- SLi(R = R,
numFactors = c(3, 1))
Run the code above in your browser using DataLab