| 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 faMainfunction.
-  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