Closed maxheld83 closed 7 years ago
Indeed, at the moment there's only PCA supported, and IMHO that'd be the main priority for improvement.
The reason for this gap is that I haven't found a routine for centroid factor analysis already implemented in R. The function factanal() for example, for factor analysis, gave me very different results compared to those in PQmethod.
This divergence could be because: a) centroid factor analysis might be a different procedure than that of conventional factor analysis b) when contrasting factanal() and PQmethod results, perhaps I didn't get the rotations right
I performed an example of centroid FA in excel years ago, and having understood the procedure, it would be fine to implement it from scratch in R, although it seems to require a good time to code.
Any light on this will be most welcome, especially if we can find an already implemented alternative!
thanks @aiorazabala for the update; I figured this would be the reason.
I'm afraid I might not be able to help with this for now, I'd be out-R-matched. I'll also have to do some (a lot) of reading on the whole PCA vs Centroid debate especially from Brown. I vaguely remember from the last time I read this that, in fact, as you suspect, the output is somewhat different.
if I'm getting this right, Noori Akhtar-Danesh suggests in this presentation that principal axis factoring PAF produces results very similar to CFA. If so, #20 may be a suitable stop-gap for true CFA support.
Also, I haven't understood the argument for CFA – other than that's what a lot of q people have been using for a long time. CFA was originally built as computationally less intensive alternative to PCA, correct?
Anyway, it's probably best to offer it.
Noori suggested that in fact PAF (see #20) and CFA may not consistently produce similar results, so there may still be a need for CFA.
Noori: am I correct to assume that PAF and CFA would generally be more similar in their results than PCA? (This would be great news for the qmethod package, because there appears to be no CFA readily available in an R package).
Although Brown (1980) in his book (Political Subjectivity) indicates that CFA is an approximation of PAF, they are different in methods. In one example that I worked long time ago there was considerable differences between the results from these two methods. So, at the moment if would refrain from such statement.
here is a very long, spirited and thoughtful discussion of Centroid vs PCA, featuring Brown and Schmolck. I must admit I am swayed by Schmolck's arguments, which I find very persuasive.
That need not mean that centroid shouldn't be implemented in the package, but for me, it's not a top priority any more.
Anyway, at least, the discussion is a good resource on the differences between PCA and Centroid.
Thank you, great reference!
I liked v much your contribution/question to the list, I think it was greatly and clearly formulated. Responses weren't as clear unfortunately, including some confusion between the extraction and rotation steps ('centroid rotation' ?), which adds even more noise to the debate.
Hopefully at some point someone will publish a sensitivity analysis comparing CFE and PCA that shows to what extent the numerical differences are relevant for the final factor scores (which would be a trivial exercise if CFE was implemented in the pkg!).
Agreed. It would be nice.
However, I see an additional challenge: according to Brown, much of the value of CFA lies in the manual reflection (this is prior to / not to be confused with rotation).
I have no idea, however, how that would be implemented in pretty much any computer program.
I am not sure whether people have ever done this (tedious) task ever since the PC arrived, but I might be wrong, maybe PQMethod
has such a facility.
I have implemented centroid factor analysis in R and tested it on three data sets. It is ready for further testing. It has not yet been wrapped in or made flow-compatible with the rest of this project. I'm not sure of the protocol of contributing it at its current stage. Should I make a pull request?
I have in mind a separate cookbook for "old school" centroid + manual rotation. Thoughts?
That's great news @bobbraswell, we've been hoping for this for some time, and I think @aiorazabala and I both agree that this is a top priority for the package (after manual rotation #13).
I've opened a new "Milestone" (1.5.0
) for Centroid Factor Analysis (and associated "Old School" methods), to which both issues (such as this), and pull requests can be assigned.
I imagine that this will take a while, so it probably won't make it to 1.4.0
(which is already crammed).
I think adding it as a pull request would be great @bobbraswell, so we can all look at your work (I'm very curious). (Pull requests get automatically updated if the fork branches from which they stem are pushed, so the PR can evolve over time).
As for compatibility with the rest of the project, may I suggest the guidelines for contributing?
I am not sure about the current state of the centroid factor extraction, so this is a very preliminary list of small tasks (some separate issues) that I imagine might be involved:
q.centroid.Rd
qmethod()
, the "mother"-function that wraps them all. -> #224 PQMethod
-> #227Seems like a lot of work, I don't know about you guys, but I'm really excited about it :sweat_smile:
Thanks so much for getting the ball rolling and doing this important addition @bobbraswell!
This issue has been re-wrapped in #352
there seems to be some debate around whether to use PCA or centroid factor analysis (with Stephen Brown arguing for the latter).
Am I correct to assume that as of know via the psych package qmethod only supports PCA, not (centroid) FA?