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$
8
  • 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, 2017 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, 2017 at 8:49
  • $\begingroup$ Do't see how "logistic" tag fits in here, so removing it. $\endgroup$
    – ttnphns
    Aug 19, 2017 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, 2017 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, 2017 at 9:33

1 Answer 1

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$
5
  • $\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, 2017 at 11:52
  • $\begingroup$ @ttnphns Yes, I can ask him. I will let you know. $\endgroup$
    – Jea
    Aug 21, 2017 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, 2017 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, 2017 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, 2017 at 12:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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