1
$\begingroup$

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())
$\endgroup$
  • 1
    $\begingroup$ Did you read a detailed answer about factor scores? It sounds like what you call "generated scores" are what it calls coarse method and "estimated scores" is refined methods. The R-sq of determinarion of estimated scores by the variables is mentioned there (you have to compute the estimated scores in order to know it). $\endgroup$ – ttnphns Aug 19 '17 at 8:47
  • $\begingroup$ Most of your question deals with 'how to do it in R' -please note that such formulated questions are generally off-topic. Can you do the question less software specific? $\endgroup$ – ttnphns Aug 19 '17 at 8:49
  • $\begingroup$ Do't see how "logistic" tag fits in here, so removing it. $\endgroup$ – ttnphns Aug 19 '17 at 8:51
  • 1
    $\begingroup$ I don't say you should remove code, no. The more that it is annotated. I just said that there were too many R libraries specific points in your question, for me. Otherwise your question is very good. $\endgroup$ – ttnphns Aug 19 '17 at 9:24
  • 1
    $\begingroup$ Please note that 'factor scores determinacy coefficient' is easily known only with regression (Thurstone's) method that maximizes it. I'm not aware if for other methods of estimation the coefficient could be obtained. Actually I doubt it could - because we don't know the true f. values to check that. If you find in literature that it is possible - then please send me to there. $\endgroup$ – ttnphns Aug 19 '17 at 9:33
1
$\begingroup$

Regarding the first of the questions:

I contacted the author of the psych library (professor William Revelle), and was informed that the fa function can actually report three different estimates of factor score indeterminacy after conducting factor analysis.

The three estimates to look for are "Correlation of scores with factors", "Multiple R square of scores with factors" and "Minimum correlation of possible factor scores".

Code example in R:

f <- fa(ds[ ,c(14,15,17)], nfactors = 1, scores="regression")
print(f) # The three estimates of factor score indeterminacy are printed last.
$\endgroup$
  • $\begingroup$ Jea thank you for inquiring. Can you ask the author as well: do these measures apply also to other than "regression" method of scores estimation, and if yes, how can the measures be computed in those instances? $\endgroup$ – ttnphns Aug 21 '17 at 11:52
  • $\begingroup$ @ttnphns Yes, I can ask him. I will let you know. $\endgroup$ – Jea Aug 21 '17 at 12:13
  • $\begingroup$ @ttnphns Here are the answers that I received: "The factor score indeterminancy measure as reported in the fa function is based upon the regression methodology of finding the scores. However, the factor score R2 is also reported if you use factor.scores. This is the correct R2 for the method you choose. To make it easier, I have now revised fa so that if the R2 from the scoring method are different from the regression R2, then I report them both." The changes are added to the newest release of the psych library. $\endgroup$ – Jea Sep 15 '17 at 8:25
  • $\begingroup$ Jea, Thank you. But did the author explain (to you or in his documentation available) how the Rsq (between the scores and the unknown true values) is computed for methods other than regression method? The formula? $\endgroup$ – ttnphns Sep 15 '17 at 9:13
  • 1
    $\begingroup$ @ttnphns Unfortunately this was not answered in the email I received. I am off to vacation now, so I can not follow this up any further, but there might be some information in the manual: cran.r-project.org/web/packages/psych/psych.pdf (description of the fa method starts at page 124). Also the R code is available from cran.r-project.org/web/packages/psych/index.html (email address to the author is also found here). I think you will find most of the relevant code if you download the package source and open psych/R/fa.R . $\endgroup$ – Jea Sep 15 '17 at 12:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.