Factor Analysis output different from other software

Discuss the jamovi platform, possible improvements, etc.

by mdunn2 » Mon Oct 19, 2020 2:12 am

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?
mdunn2
 
Posts: 3
Joined: Mon Oct 19, 2020 2:00 am

by jonathon » Mon Oct 19, 2020 3:17 am

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
User avatar
jonathon
 
Posts: 1483
Joined: Fri Jan 27, 2017 10:04 am

by mdunn2 » Mon Oct 19, 2020 3:52 am

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
mdunn2
 
Posts: 3
Joined: Mon Oct 19, 2020 2:00 am

by Ravi » Tue Oct 20, 2020 8:21 am

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.
User avatar
Ravi
 
Posts: 154
Joined: Sat Jan 28, 2017 11:18 am

by mdunn2 » Tue Oct 20, 2020 1:40 pm

That clears things up, thank you so much!
mdunn2
 
Posts: 3
Joined: Mon Oct 19, 2020 2:00 am

by Wake » Wed Dec 02, 2020 10:00 am

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.

pca vs efa.png
Scree plots from EFA and PCA
pca vs efa.png (85.11 KiB) Viewed 28 times
Wake
 
Posts: 38
Joined: Tue Jun 26, 2018 8:31 am


Return to General