Correlations between two factor analysis solutions
Given two factor analysis or pca solutions to a data matrix or correlation, what are the similarities between the two solutions. This may be found by factor correlations as well as factor congruences. Factor correlations are found by the matrix product of the factor weights and the correlation matrix and are estimates of what the factor score correlations would be. Factor congruence (aka Tucker or Burt coefficient) is the cosine of the vectors of factor loadings.
faCor(r, nfactors = c(1, 1), fm = c("minres", "minres"), rotate = c("oblimin", "oblimin"), scores = c("tenBerge", "tenBerge"), adjust=c(TRUE,TRUE), use = "pairwise", cor = "cor", weight = NULL, correct = 0.5,Target=list(NULL,NULL))
r |
A correlation matrix or a data matrix suitable for factoring |
nfactors |
Number of factors in each solution to extract |
fm |
Factor method. The default is 'minres' factoring. To compare with pca solutions, can also be (fm ="pca") |
rotate |
What type of rotations to apply. The default for factors is oblimin, for pca is varimax. |
scores |
What factor scoring algorithm should be used. Defaults to tenBerge for both cases. |
adjust |
Should the factor intercorrelations be corrected by the lack of factor deteriminancy (i.e. divide by the square root of the factor R2) |
use |
How to treat missing data. Use='pairwise" finds pairwise complete correlations. |
cor |
What kind of correlation to find. The default is Pearson. |
weight |
Should cases be weighted? Default, no. |
correct |
If finding tetrachoric or polychoric correlations, what correction should be applied to empty cells (defaults to .5) |
Target |
If doing target rotations (e.g., TargetQ or TargetT), then the Target must be specified. If TargetT, this may be a matrix, if TargetQ, this must be a list. (Strange property of GPARotation.) |
The factor correlations are found using the approach discussed by Gorsuch (1983) and uses the weights matrices found by w=S R^{-1} and r = w' R w where S is the structure matrix and is s= F Φ. The resulting correlations may be adjusted for the factor score variances (the diagonal of r) (the default).
For factor loading vectors of F1 and F2 the measure of factor congruence, phi, is
{phi = sum(F1 F2)/sqrt(sum(F1^2) sum(F2^2))}
and is also found in factor.congruence
.
For comparisons of factor solutions from 1 to n, use bassAckward
. This function just compares two solutions from the same correlation/data matrix. factor.congruence
can be used to compare any two sets of factor loadings.
Note that alternative ways of finding weights (e.g., regression, Bartlett, tenBerge) will produce somewhat different results. tenBerge produces weights that maintain the factor correlations in the factor scores.
Call |
The function call |
r |
The factor intercorrelations |
congruence |
The Burt/Tucker coefficient of congruence |
f1 |
The first factor analysis |
f2 |
The second factor analysis |
Useful for comparing factor solutions from the same data. Will not work for different data sets
William Revelle
Gorsuch, Richard, (1983) Factor Analysis. Lawrence Erlebaum Associates.
Burt, Cyril (1948) The factorial study of temperamental traits. British Journal of Statistical Psychology, 1(3) 178-203.
Horn, John L. (1973) On extension analysis and its relation to correlations between variables and factor scores. Multivariate Behavioral Research, 8, (4), 477-489.
Lorenzo-Seva, U. and ten Berge, J. M. F. (2006). Tucker's congruence coefficient as a meaningful index of factor similarity. Methodology: European Journal of Research Methods for the Behavioral and Social Sciences, 2(2):57-64.
Revelle, William. (in prep) An introduction to psychometric theory with applications in R. Springer. Working draft available at https://personality-project.org/r/book/
faCor(Thurstone,nfactors=c(2,3)) #compare two solutions to the Thurstone problem faCor(psychTools::bfi[1:25],nfactors=c(5,5),fm=c("minres","pca")) #compare pca and fa solutions #compare two levels of factor extraction, and then find the correlations of the scores faCor(psychTools::bfi[1:25],nfactors=c(3,5)) #based upon linear algebra f3 <- fa(psychTools::bfi[1:25],3,scores="tenBerge") f5 <- fa(psychTools::bfi[1:25],5 ,scores="tenBerge") cor2(f3$scores,f5$scores) #the correlation between the factor score estimates
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.