aiorazabala / qmethod

R package to analyse Q methodology data
GNU General Public License v2.0
34 stars 18 forks source link

support (centroid) factor analysis for extraction, too #15

Closed maxheld83 closed 7 years ago

maxheld83 commented 9 years ago

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?

aiorazabala commented 9 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!

maxheld83 commented 9 years ago

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.

maxheld83 commented 9 years ago

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.

maxheld83 commented 9 years ago

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.

maxheld83 commented 9 years ago

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.

maxheld83 commented 9 years ago

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.

aiorazabala commented 9 years ago

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

maxheld83 commented 9 years ago

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.

bobbraswell commented 9 years ago

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?

maxheld83 commented 9 years ago

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:

Seems 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!

aiorazabala commented 7 years ago

This issue has been re-wrapped in #352