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

Arguments

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.)

Details

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.

Value

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

References

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/

Author

William Revelle

Note

Useful for comparing factor solutions from the same data. Will not work for different data sets

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.

Examples

faCor(Thurstone,nfactors=c(2,3)) #compare two solutions to the Thurstone problem
#> Call: faCor(r = Thurstone, nfactors = c(2, 3))
#> 
#>  Factor correlations between the two solutions
#>      MR1  MR2  MR3
#> MR1 0.99 0.59 0.61
#> MR2 0.62 0.97 0.70
#> 
#>  Factor congruence between the two solutions
#>      MR1  MR2  MR3
#> MR1 0.98 0.04 0.28
#> MR2 0.06 0.92 0.47
faCor(bfi[1:25],nfactors=c(5,5),fm=c("minres","pca")) #compare pca and fa solutions
#> Call: faCor(r = bfi[1:25], nfactors = c(5, 5), fm = c("minres", "pca"))
#> 
#>  Factor correlations between the two solutions
#>        TC2  TC1   TC3   TC5    TC4
#> MR2  0.906 0.04  0.21 0.028 -0.148
#> MR1 -0.069 0.86  0.59 0.394 -0.014
#> MR3  0.029 0.35  0.88 0.216 -0.264
#> MR5  0.058 0.71  0.64 0.548 -0.074
#> MR4 -0.068 0.16 -0.47 0.026  0.776
#> 
#>  Factor congruence between the two solutions
#>       TC2   TC1   TC3   TC5   TC4
#> MR2  0.99 -0.03 -0.03 -0.08 -0.05
#> MR1 -0.16  0.98  0.06  0.09  0.00
#> MR3 -0.09  0.07  1.00  0.06  0.07
#> MR5  0.03  0.31  0.10  0.98  0.01
#> MR4 -0.01  0.20  0.07  0.06  0.99
#compare two levels of factor extraction, and then find the correlations of the scores
faCor(bfi[1:25],nfactors=c(3,5)) #based upon linear algebra 
#> Call: faCor(r = bfi[1:25], nfactors = c(3, 5))
#> 
#>  Factor correlations between the two solutions
#>       MR2   MR1    MR3    MR5    MR4
#> MR1 0.048  0.81  0.280  0.767  0.228
#> MR2 0.870 -0.17 -0.031 -0.033 -0.027
#> MR3 0.184  0.42  0.669  0.465 -0.186
#> 
#>  Factor congruence between the two solutions
#>       MR2   MR1   MR3  MR5  MR4
#> MR1 -0.04  0.77  0.11 0.75 0.28
#> MR2  0.97 -0.22 -0.13 0.08 0.08
#> MR3 -0.04 -0.01  0.92 0.06 0.44
f3 <- fa(bfi[1:25],3,scores="tenBerge")
f5 <- fa(bfi[1:25],5 ,scores="tenBerge")
cor2(f3$scores,f5$scores) #the correlation between the factor score estimates
#>      MR2   MR1   MR3   MR5   MR4
#> MR1 0.04  0.81  0.29  0.77  0.22
#> MR2 0.87 -0.18 -0.04 -0.04 -0.02
#> MR3 0.19  0.43  0.67  0.47 -0.19