| SchmidLeiman | R Documentation | 
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.
SchmidLeiman(
  R,
  numFactors,
  facMethod = "fals",
  rotate = "oblimin",
  rescaleH2 = 0.98,
  faControl = NULL,
  rotateControl = NULL
)
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. 
  | 
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.
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.
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.
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(),
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()
## 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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.