SchmidLeiman {fungible} | R Documentation |
Schmid-Leiman Orthogonalization to a (Rank-Deficient) Bifactor Structure
Description
The Schmid-Leiman (SL) procedure orthogonalizes a higher-order factor structure into a rank-deficient bifactor structure. The Schmid-Leiman method is a generalization of Thomson's orthogonalization routine.
Usage
SchmidLeiman(
R,
numFactors,
facMethod = "fals",
rotate = "oblimin",
rescaleH2 = 0.98,
faControl = NULL,
rotateControl = NULL
)
Arguments
R |
(Matrix) A correlation matrix. |
numFactors |
(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). This function can orthogonalize up to (and including) a three-order factor solution. |
facMethod |
(Character) The method used for factor extraction
(
|
rotate |
(Character) Designate which rotation algorithm to apply. See
the |
rescaleH2 |
(Numeric) If a Heywood case is detected at any level of the higher-order factor analyses, rescale the communality value to continue with the matrix algebra. When a Heywood case occurs, the uniquenesses (i.e., specific-factor variances) will be negative and the SL orthogonalization of the group factors is no longer correct. |
faControl |
(List) A list of optional parameters passed to the factor
extraction (
|
rotateControl |
(List) A list of control values to pass to the factor rotation algorithms.
|
Details
The obtained Schmid-Leiman (SL) factor structure matrix is rescaled if its communalities differ from those of the original first-order solution (due to the presence of one or more Heywood cases in a solution of any order). Rescaling will produce SL communalities that match those of the original first-order solution.
Value
-
L1: (Matrix) The first-order (oblique) factor pattern matrix.
-
L2: (Matrix) The second-order (oblique) factor pattern matrix.
-
L3: (Matrix, NULL) The third-order (oblique) factor pattern matrix (if applicable).
-
Phi1: (Matrix) The first-order factor correlation matrix.
-
Phi2: (Matrix) The second-order factor correlation matrix.
-
Phi3: (Matrix, NULL) The third-order factor pattern matrix (if applicable).
-
U1: (Matrix) The square root of the first-order factor uniquenesses (i.e., factor standard deviations).
-
U2: (Matrix) The square root of the second-order factor uniquenesses (i.e., factor standard deviations).
-
U3: (Matrix, NULL) The square root of the third-order factor uniquenesses (i.e., factor standard deviations) (if applicable).
-
B: (Matrix) The resulting Schmid-Leiman transformation.
-
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. HeywoodFlag(Integer) An integer indicating whether one or more Heywood cases were encountered during estimation.
Author(s)
Casey Giordano (Giord023@umn.edu)
Niels G. Waller (nwaller@umn.edu)
References
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.
Schmid, J., & Leiman, J. M. (1957). The development of hierarchical factor solutions. Psychometrika, 22(1), 53-61.
See Also
Other Factor Analysis Routines:
BiFAD()
,
Box26
,
GenerateBoxData()
,
Ledermann()
,
SLi()
,
faAlign()
,
faEKC()
,
faIB()
,
faLocalMin()
,
faMB()
,
faMain()
,
faScores()
,
faSort()
,
faStandardize()
,
faX()
,
fals()
,
fapa()
,
fareg()
,
fsIndeterminacy()
,
orderFactors()
,
print.faMB()
,
print.faMain()
,
promaxQ()
,
summary.faMB()
,
summary.faMain()
Examples
## Dataset used in Schmid & Leiman (1957) rounded to 2 decimal places
SLdata <-
matrix(c(1.0, .72, .31, .27, .10, .05, .13, .04, .29, .16, .06, .08,
.72, 1.0, .35, .30, .11, .06, .15, .04, .33, .18, .07, .08,
.31, .35, 1.0, .42, .08, .04, .10, .03, .22, .12, .05, .06,
.27, .30, .42, 1.0, .06, .03, .08, .02, .19, .11, .04, .05,
.10, .11, .08, .06, 1.0, .32, .13, .04, .11, .06, .02, .03,
.05, .06, .04, .03, .32, 1.0, .07, .02, .05, .03, .01, .01,
.13, .15, .10, .08, .13, .07, 1.0, .14, .14, .08, .03, .04,
.04, .04, .03, .02, .04, .02, .14, 1.0, .04, .02, .01, .01,
.29, .33, .22, .19, .11, .05, .14, .04, 1.0, .45, .15, .17,
.16, .18, .12, .11, .06, .03, .08, .02, .45, 1.0, .08, .09,
.06, .07, .05, .04, .02, .01, .03, .01, .15, .08, 1.0, .42,
.08, .08, .06, .05, .03, .01, .04, .01, .17, .09, .42, 1.0),
nrow = 12, ncol = 12, byrow = TRUE)
Out1 <- SchmidLeiman(R = SLdata,
numFactors = c(6, 3, 1))$B
## An orthogonalization of a two-order structure
bifactor <- matrix(c(.46, .57, .00, .00,
.48, .61, .00, .00,
.61, .58, .00, .00,
.46, .00, .55, .00,
.51, .00, .62, .00,
.46, .00, .55, .00,
.47, .00, .00, .48,
.50, .00, .00, .50,
.49, .00, .00, .49),
nrow = 9, ncol = 4, byrow = TRUE)
## Model-implied correlation (covariance) matrix
R <- bifactor %*% t(bifactor)
## Unit diagonal elements
diag(R) <- 1
Out2 <- SchmidLeiman(R = R,
numFactors = c(3, 1),
rotate = "oblimin")$B