John Schmid and John M. Leiman (1957) discuss how to transform a hierarchical factor structure to a bifactor structure. Schmid contains the example 12 x 12 correlation matrix. schmid.leiman is a 12 x 12 correlation matrix with communalities on the diagonal. This can be used to show the effect of correcting for attenuation. Two additional data sets are taken from Chen et al. (2006).
data(Schmid)
Two artificial correlation matrices from Schmid and Leiman (1957). One real and one artificial covariance matrices from Chen et al. (2006).
Schmid: a 12 x 12 artificial correlation matrix created to show the Schmid-Leiman transformation.
schmid.leiman: A 12 x 12 matrix with communalities on the diagonal. Treating this as a covariance matrix shows the 6 x 6 factor solution
Chen: An 18 x 18 covariance matrix of health related quality of life items from Chen et al. (2006). Number of observations = 403. The first item is a measure of the quality of life. The remaining 17 items form four subfactors: The items are (a) Cognition subscale: ``Have difficulty reasoning and solving problems?" ``React slowly to things that were said or done?"; ``Become confused and start several actions at a time?" ``Forget where you put things or appointments?"; ``Have difficulty concentrating?" (b) Vitality subscale: ``Feel tired?" ``Have enough energy to do the things you want?" (R) ``Feel worn out?" ; ``Feel full of pep?" (R). (c) Mental health subscale: ``Feel calm and peaceful?"(R) ``Feel downhearted and blue?"; ``Feel very happy"(R) ; ``Feel very nervous?" ; ``Feel so down in the dumps nothing could cheer you up? (d) Disease worry subscale: ``Were you afraid because of your health?"; ``Were you frustrated about your health?"; ``Was your health a worry in your life?" .
West: A 16 x 16 artificial covariance matrix from Chen et al. (2006).
Y.-F. Yung, D.Thissen, and L.D. McLeod. (1999) On the relationship between the higher-order factor model and the hierarchical factor model. Psychometrika, 64(2):113-128, 1999.
data(Schmid)
cor.plot(Schmid,TRUE)
print(fa(Schmid,6,rotate="oblimin"),cut=0) #shows an oblique solution
round(cov2cor(schmid.leiman),2)
cor.plot(cov2cor(West),TRUE)
Run the code above in your browser using DataLab