Page 1 of 1

Factor Analysis output different from other software

Posted: Mon Oct 19, 2020 2:12 am
by mdunn2
Hello,

I'm a graduate student who has recently started using Jamovi. Not sure if this is an issue anyone else has noticed, but I've found that when I run an exploratory factor analysis using factors based on eignenvalues of 1+ ("Based on eigenvalue"), I get different results from what I found in both R and SPSS. To further test this, I ran the EFA through the Rj editor, which ended up matching the R/SPSS outputs, which leads me to guess that there might be an issue with this specific "point and click" analysis in Jamovi, as all Rj/R/SPSS outputs matched up. Otherwise, when I decide factors for the EFA based on parallel analysis or a fixed number, the results match SPSS and R, so this issue seems to be specific to when I choose the "Based on eigenvalue" option in the EFA window.

As I'm rather new to using Jamovi, it's possible I made a mistake, but I wanted to post on here to see if anyone else was running across this problem?

Re: Factor Analysis output different from other software

Posted: Mon Oct 19, 2020 3:17 am
by jonathon
hi,

i'm pretty sure jamovi uses the psych package for efa. let me attend ravi to this thread, as he should be able to better help.

if you can post an example, that would probably be helpful.

cheers

jonathon

Re: Factor Analysis output different from other software

Posted: Mon Oct 19, 2020 3:52 am
by mdunn2
Hi Jonathon,

Thanks for getting back to me!

I noticed this issue when working on a homework assignment for one of my classes. (It's a made up dataset that evaluates 10 different track and field event variables).

When I tried to run the EFA using eigenvalues of 1 or greater using the point and click option, the output only indicated one factor and subsequent loadings.
Here is the syntax output from the point and click EFA:
jmv::efa(
data = data,
vars = vars(100 m, Long Jump, Shotput, High Jump, 400 m, 110 m, Discus, Pole vault, Javelin, 1500 m),
nFactorMethod = "eigen",
extraction = "pa",
rotation = "none")

However, when I ran the following code in the Rj Editor:
library(rio); library(corpcor); library(GPArotation); library(psych); library(ggplot2); library(reshape2)
ev <- eigen(cor(data))
ev
efatest <- fa(r = data, nfactors = 3, rotate = "none", fm = "pa")
efatest
the output indicates three factors and subsequent loadings (this is what I got when I ran this through R and SPSS).

Thank you!!
Megan

Re: Factor Analysis output different from other software

Posted: Tue Oct 20, 2020 8:21 am
by Ravi
So the EFA doesn't use the initial eigenvalues to compare against in EFA (it does in PCA), but instead used the eigenvalues of the common factor solution (see https://github.com/jamovi/jmv/blob/679274a708d42166a6220588daab66226565ddf6/R/pca.b.R#L444). Hence the difference in number of factors.

Re: Factor Analysis output different from other software

Posted: Tue Oct 20, 2020 1:40 pm
by mdunn2
That clears things up, thank you so much!

Re: Factor Analysis output different from other software

Posted: Wed Dec 02, 2020 10:00 am
by Wake
I've just discussing this with David Foxcroft. It would be helpful if the default value for "Based on Eigenvalues" was 0 for EFA rather than 1.

You might appreciate this overlay of scree plots from PCA and EFA.
Scree plots from EFA and PCA
Scree plots from EFA and PCA
pca vs efa.png (85.11 KiB) Viewed 6028 times

Re: Factor Analysis output different from other software

Posted: Tue Dec 08, 2020 9:49 pm
by jonathon
hi wake,

let me attend sebastian to this thread. he's very busy until the 20th, but if he doesn't respond within a few days of the 20th feel free to post a follow-up, and i'll chase him up.

cheers

jonathon

Re: Factor Analysis output different from other software

Posted: Mon Jan 18, 2021 1:22 pm
by sjentsch
Hei,

to my knowledge this already has been changed (somewhere during the 1.2.-series, i.e., it certainly should work in version 1.6.x). The changes were taken into the code base last July (https://github.com/jamovi/jmv/pull/261).

Please use a recent version and report back if it is still not working. Then Jonathon and I have to do some chasing up.

Thank you and best regards,

Sebastian