schmid: Apply the Schmid Leiman transformation to a correlation...

schmidR Documentation

Apply the Schmid Leiman transformation to a correlation matrix

Description

One way to find omega is to do a factor analysis of the original data set, rotate the factors obliquely, do a Schmid Leiman transformation, and then find omega. Here is the code for Schmid Leiman. The S-L transform takes a factor or PC solution, transforms it to an oblique solution, factors the oblique solution to find a higher order (g ) factor, and then residualizes g out of the the group factors.

Usage

schmid(model, nfactors = 3, fm = "minres",digits=2,rotate="oblimin",
            n.obs=NA,option="equal",Phi=NULL,covar=FALSE,two.ok=FALSE,...)

Arguments

model

A correlation matrix

nfactors

Number of factors to extract

fm

the default is to do minres. fm="pa" for principal axes, fm="pc" for principal components, fm = "minres" for minimum residual (OLS), pc="ml" for maximum likelihood

digits

if digits not equal NULL, rounds to digits

rotate

The default, oblimin, produces somewhat more correlated factors than the alternative, simplimax. Other options include Promax (not Kaiser normalized) or promax (Promax with Kaiser normalization). See fa for possible oblique rotations.

n.obs

Number of observations, used to find fit statistics if specified. Will be calculated if input is raw data

option

When asking for just two group factors, option can be for "equal", "first" or "second"

Phi

If Phi is specified, then the analysis is done on a pattern matrix with the associated factor intercorrelation (Phi) matrix. This allows for reanalysess of published results

covar

Defaults to FALSE and finds correlations. If set to TRUE, then do the calculations on the unstandardized variables.

two.ok

If TRUE, do not give a warning about three factors being required.

...

Allows additional parameters to be passed to the factoring routines

Details

Schmid Leiman orthogonalizations are typical in the ability domain, but are not seen as often in the non-cognitive personality domain. S-L is one way of finding the loadings of items on the general factor for estimating omega.

A typical example would be in the study of anxiety and depression. A general neuroticism factor (g) accounts for much of the variance, but smaller group factors of tense anxiety, panic disorder, depression, etc. also need to be considerd.

An alternative model is to consider hierarchical cluster analysis techniques such as ICLUST.

Requires the GPArotation package.

Although 3 factors are the minimum number necessary to define the solution uniquely, it is occasionally useful to allow for a two factor solution. There are three possible options for this condition: setting the general factor loadings between the two lower order factors to be "equal" which will be the sqrt(oblique correlations between the factors) or to "first" or "second" in which case the general factor is equated with either the first or second group factor. A message is issued suggesting that the model is not really well defined.

A diagnostic tool for testing the appropriateness of a hierarchical model is p2 which is the percent of the common variance for each variable that is general factor variance. In general, p2 should not have much variance.

An alternative approach is to use the directSl function to do a direct Schmid Leiman transformation (code adapted from Niels Waller).

Value

sl

loadings on g + nfactors group factors, communalities, uniqueness, percent of g2 of h2

orthog

original orthogonal factor loadings

oblique

oblique factor loadings

phi

correlations among the transformed factors

gload

loadings of the lower order factors on g

...

Author(s)

William Revelle

References

https://personality-project.org/r/r.omega.html gives an example taken from Jensen and Weng, 1994 of a S-L transformation.

See Also

omega, directSl, omega.graph, fa.graph, ICLUST,VSS

Examples

jen <- sim.hierarchical()  #create a hierarchical demo
if(!require(GPArotation)) {
   message("I am sorry, you must have GPArotation installed to use schmid.")} else {
   p.jen <- schmid(jen,digits=2)   #use the oblimin rotation
p.jen <- schmid(jen,rotate="promax") #use the promax rotation
}

psych documentation built on June 27, 2024, 5:07 p.m.