psych (version 2.1.9)

faCor: 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))



A correlation matrix or a data matrix suitable for factoring


Number of factors in each solution to extract


Factor method. The default is 'minres' factoring. To compare with pca solutions, can also be (fm ="pca")


What type of rotations to apply. The default for factors is oblimin, for pca is varimax.


What factor scoring algorithm should be used. Defaults to tenBerge for both cases.


Should the factor intercorrelations be corrected by the lack of factor deteriminancy (i.e. divide by the square root of the factor R2)


How to treat missing data. Use='pairwise" finds pairwise complete correlations.


What kind of correlation to find. The default is Pearson.


Should cases be weighted? Default, no.


If finding tetrachoric or polychoric correlations, what correction should be applied to empty cells (defaults to .5)


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 function call


The factor intercorrelations


The Burt/Tucker coefficient of congruence


The first factor analysis


The second factor analysis


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 \Phi\). 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 = \frac{\sum F_1 F_2}{\sqrt{\sum(F_1^2)\sum(F_2^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.


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

See Also

fa, pca, omega and iclust, and {link{bassAckward} for alternative hierarchical solutions. fa.extend and fa.extension for other uses of factor - item correlations.


Run this code
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
# }

Run the code above in your browser using DataCamp Workspace