I'm using factor analysis to combine three independent variables for further use in logistic regression. According to the textbook I'm reading there are two main options for computing a metric (composite score) for a factor: Estimating a factor score (the regression method) and generating a factor score. Estimated factor scores are standardized and weighted values that show the standing of each individual on the factor. Generated factor scores are raw and unweighted values obtained for each individual by either summing or averaging only those variables loading most strongly on a factor.
The textbook states that if one chooses to estimate factor scores, one should assess the factor determinacy coefficient (Beauducel, 2011) before using the factor scores as variables in subsequent analyses. This is because estimating factor scores has the problem of obtained scores not being unique values (factor indeterminacy). The factor determinacy coefficient should then be at least 0.90 for the factor score to substitute the observed variables.
I have two questions related to the above:
- How can I assess the factor determinacy coefficient when estimating factor scores?
- How can I generate factor scores?
Thus far I have tried some different libraries in R for doing factor analysis, but as far as I understand they all use some variation of estimating factor scores, and I can not find any way to assess the factor determinacy coefficient.
The function fa in library psych does contain a variable called r.scores after estimating factor scores which I thought might be relevant. However it only works when more than one factor is specified (else its value is always 1).
Here is some code to illustrate my approach:
library(psych) f <- fa(ds[ ,c(14,15,17)], nfactors = 1, scores="regression") f$r.scores # Not useful with 1 factor factor1 <-f$scores[ ,1] # Estimated factor scores # Using factor scores in logistic regression, controlling for some demographic variables fit <- glm(certified ~ factor1 + age + gender, data = ds, family = binomial())