This vignette demonstrates the replication of exploratory factor
analysis (EFA) results (specifically, principal axis factoring [PAF]
with subsequent promax rotation) from the SPSS FACTOR
algorithm and from the fa()
function from the
psych
R package. For a general introduction to the
EFAtools
package, please see the EFAtools vignette. Same as in the
EFAtools vignette, we will use the DOSPERT data set for this
demonstration as well (see ?DOSPERT
for details).
First load the needed packages EFAtools and psych (original SPSS results for some data sets are available in the EFAtools package).
library(psych)
#>
#> Attache Paket: 'psych'
#> Das folgende Objekt ist maskiert 'package:EFAtools':
#>
#> KMO
library(EFAtools)
First, we will fit an EFA with PAF and without rotation using the
EFA
function from EFAtools
using
type = "psych"
and type = "SPSS"
. These types
are intended to mimic the R psych and SPSS results, respectively.
# EFAtools::EFA with type = "psych" without rotation
EFA_psych_paf <- EFA(DOSPERT$cormat, n_factors = 10, N = DOSPERT$N,
type = "psych")
# EFAtools::EFA with type = "SPSS" without rotation
EFA_SPSS_paf <- EFA(DOSPERT$cormat, n_factors = 10, N = DOSPERT$N,
type = "SPSS")
As a next step, we fit an EFA with the same configurations (PAF and
no rotation) using the fa
function from psych
with the same data set.
# psych::fa without rotation
psych_paf <- psych::fa(DOSPERT$cormat, nfactors = 10, n.obs = DOSPERT$N,
fm = "pa", rotate = "none")
Now we can compare results from EFA
with the respective
types to the original R psych
and SPSS
results
using the same data set. This is easily done using the
COMPARE
function available in the EFAtools
package.
# Compare loadings from psych::fa and EFAtools::EFA with type = "psych"
COMPARE(EFA_psych_paf$unrot_loadings, psych_paf$loadings)
#> Mean [min, max] absolute difference: 0.0000 [ 0.0000, 0.0000]
#> Median absolute difference: 0.0000
#> Max decimals where all numbers are equal: 12
#> Minimum number of decimals provided: 18
#>
#> F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
#> 01_s -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 02_r 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 03_g 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 04_h 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000
#> 05_e 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 06_r 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 07_i 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000
#> 08_h 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000
#> 09_e 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000
#> 10_s 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 11_g 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 12_e 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 13_e 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 14_e 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 15_r 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 16_s 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 17_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000
#> 18_i -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 19_s 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000
#> 20_e 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 21_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 22_g 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 23_s 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 24_i 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 25_e 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 26_s 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 27_h 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 28_e 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 29_h 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 30_i -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000
#> 31_r 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 32_h 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 33_g 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 34_s 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 35_s 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000
#> 36_h 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 37_r 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 38_r 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 39_h 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 40_h 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000
# Compare loadings from SPSS and EFAtools::EFA with type = "SPSS"
COMPARE(EFA_SPSS_paf$unrot_loadings, SPSS_27$DOSPERT$paf_load)
#> Mean [min, max] absolute difference: 0.0000 [ 0.0000, 0.0000]
#> Median absolute difference: 0.0000
#> Max decimals where all numbers are equal: 13
#> Minimum number of decimals provided: 18
#>
#> F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
#> 01_s 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 02_r -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 03_g 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 04_h -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 05_e 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 06_r 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 07_i 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000
#> 08_h 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000
#> 09_e 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000
#> 10_s 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 11_g -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 12_e 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 13_e -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 14_e 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 15_r -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000
#> 16_s 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 17_r 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000
#> 18_i 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 19_s -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 20_e 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 21_r -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 22_g 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 23_s 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 24_i -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 25_e 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 26_s 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 27_h 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 28_e 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 29_h 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 30_i 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 31_r -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 32_h 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 33_g 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 34_s 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 35_s 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 36_h 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 37_r 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000
#> 38_r 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 39_h 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 40_h 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
To see that this close match was not trivial, we can look at the
match between the original R psych
and SPSS
solutions.
# Compare loadings from psych::fa and SPSS
COMPARE(psych_paf$loadings, SPSS_27$DOSPERT$paf_load)
#> Mean [min, max] absolute difference: 0.0002 [ 0.0000, 0.0022]
#> Median absolute difference: 0.0001
#> Max decimals where all numbers are equal: 1
#> Minimum number of decimals provided: 18
#>
#> PA1 PA2 PA3 PA4 PA5 PA6 PA7 PA8 PA9 PA10
#> 01_s 0.0000 -0.0000 -0.0001 0.0000 0.0001 -0.0002 0.0001 -0.0000 -0.0003 0.0002
#> 02_r 0.0000 -0.0000 -0.0000 0.0000 -0.0001 -0.0002 0.0000 0.0001 0.0004 -0.0000
#> 03_g -0.0000 0.0000 0.0000 -0.0000 -0.0001 -0.0001 -0.0001 0.0000 0.0001 0.0001
#> 04_h 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0001 0.0001 0.0014 -0.0008
#> 05_e 0.0000 0.0000 -0.0001 -0.0001 -0.0001 0.0003 -0.0002 -0.0001 0.0007 0.0005
#> 06_r 0.0000 -0.0000 -0.0000 0.0000 -0.0001 0.0000 0.0001 -0.0000 -0.0007 0.0002
#> 07_i 0.0000 -0.0000 0.0000 0.0001 0.0001 -0.0001 0.0001 -0.0000 0.0006 -0.0004
#> 08_h 0.0000 0.0000 -0.0000 -0.0000 0.0001 0.0001 -0.0006 0.0000 0.0022 -0.0001
#> 09_e -0.0000 0.0000 -0.0000 -0.0001 -0.0001 0.0001 0.0001 -0.0000 -0.0002 -0.0000
#> 10_s 0.0000 -0.0000 -0.0001 -0.0000 0.0001 -0.0001 0.0001 -0.0000 0.0006 -0.0001
#> 11_g 0.0000 0.0000 0.0000 -0.0001 -0.0001 0.0000 -0.0003 -0.0000 0.0001 0.0004
#> 12_e 0.0000 0.0000 -0.0000 -0.0000 0.0001 -0.0002 0.0005 0.0002 0.0012 -0.0012
#> 13_e 0.0000 0.0000 -0.0001 -0.0001 -0.0001 0.0003 -0.0001 -0.0001 -0.0001 0.0005
#> 14_e 0.0000 0.0000 -0.0000 -0.0001 -0.0001 0.0003 -0.0002 -0.0001 0.0003 0.0005
#> 15_r 0.0000 -0.0000 -0.0001 -0.0000 -0.0001 -0.0000 -0.0000 -0.0000 -0.0001 0.0001
#> 16_s 0.0000 -0.0000 -0.0001 -0.0000 0.0001 -0.0001 -0.0002 -0.0000 0.0003 0.0003
#> 17_r 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0005 0.0004
#> 18_i 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0001 0.0003 -0.0000 -0.0001 -0.0003
#> 19_s 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0002 0.0004 0.0000 -0.0010 -0.0002
#> 20_e 0.0000 -0.0000 -0.0001 0.0000 -0.0001 0.0002 -0.0009 0.0000 -0.0004 0.0011
#> 21_r -0.0000 -0.0000 -0.0000 0.0001 -0.0000 0.0000 -0.0000 0.0000 -0.0006 0.0003
#> 22_g 0.0000 0.0000 0.0001 -0.0000 -0.0000 -0.0001 -0.0001 0.0000 0.0002 -0.0000
#> 23_s -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0002 0.0006 -0.0000 -0.0009 -0.0004
#> 24_i 0.0000 -0.0000 -0.0000 0.0001 0.0001 -0.0002 0.0002 0.0001 0.0001 -0.0004
#> 25_e -0.0000 0.0000 -0.0001 -0.0001 -0.0001 0.0001 0.0000 -0.0000 0.0007 -0.0003
#> 26_s 0.0000 -0.0000 -0.0001 -0.0000 0.0000 -0.0002 0.0003 0.0000 0.0003 -0.0006
#> 27_h -0.0002 0.0002 0.0007 0.0003 0.0005 -0.0012 0.0022 0.0003 -0.0019 -0.0013
#> 28_e 0.0000 -0.0000 -0.0001 -0.0001 -0.0001 0.0001 -0.0001 -0.0000 -0.0005 0.0005
#> 29_h -0.0000 0.0000 0.0001 -0.0000 0.0001 0.0002 -0.0005 -0.0001 -0.0009 -0.0002
#> 30_i 0.0000 -0.0000 -0.0000 0.0001 0.0001 -0.0000 -0.0001 -0.0000 0.0000 0.0001
#> 31_r 0.0000 -0.0000 0.0000 0.0001 -0.0000 0.0000 0.0002 0.0000 -0.0004 0.0000
#> 32_h 0.0000 -0.0000 0.0000 -0.0001 -0.0001 0.0003 0.0003 -0.0002 -0.0014 -0.0001
#> 33_g 0.0000 0.0000 0.0000 -0.0001 -0.0001 0.0001 -0.0002 -0.0001 -0.0004 0.0004
#> 34_s 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0001 -0.0000 -0.0001 -0.0008 0.0001
#> 35_s 0.0000 -0.0000 -0.0001 0.0000 0.0001 -0.0002 0.0003 -0.0000 -0.0010 -0.0002
#> 36_h -0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 -0.0002 -0.0001 -0.0001 0.0002
#> 37_r -0.0000 -0.0000 0.0000 0.0001 0.0001 0.0001 -0.0001 -0.0001 0.0010 -0.0002
#> 38_r 0.0000 -0.0000 0.0001 0.0001 0.0001 0.0000 0.0001 0.0001 0.0007 -0.0003
#> 39_h 0.0000 -0.0000 -0.0000 0.0000 0.0001 0.0000 -0.0004 0.0000 0.0006 0.0000
#> 40_h 0.0000 0.0000 -0.0000 -0.0000 0.0001 0.0004 -0.0010 -0.0001 0.0003 0.0011
We can see that the solutions are slightly different, especially for the 9th and 10th factor. Although the differences are very small here, they can get quite large for other data sets, or get larger after rotation (see below).
Now we confirmed the replication of PAF results without rotation, we can continue to compare rotated factor solutions. We start by comparing varimax rotated PAF solutions.
## Fit the models
# EFAtools::EFA with type = "psych" with varimax rotation
EFA_psych_var <- EFA(DOSPERT$cormat, n_factors = 10, N = DOSPERT$N,
type = "psych", rotation = "varimax")
# EFAtools::EFA with type = "SPSS" with varimax rotation
EFA_SPSS_var <- EFA(DOSPERT$cormat, n_factors = 10, N = DOSPERT$N,
type = "SPSS", rotation = "varimax")
# psych::fa with varimax rotation
psych_var <- psych::fa(DOSPERT$cormat, nfactors = 10, n.obs = DOSPERT$N,
fm = "pa", rotate = "varimax")
## Check replication of results
# Compare loadings from psych::fa and EFAtools::EFA with type = "psych"
COMPARE(EFA_psych_var$rot_loadings, psych_var$loadings)
#> Mean [min, max] absolute difference: 0.0000 [ 0.0000, 0.0000]
#> Median absolute difference: 0.0000
#> Max decimals where all numbers are equal: 11
#> Minimum number of decimals provided: 18
#>
#> F1 F3 F2 F4 F5 F8 F6 F7 F9 F10
#> 01_s -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 02_r 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 03_g 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 04_h 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 05_e 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 06_r 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 07_i -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 08_h 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000
#> 09_e 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 10_s 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 11_g 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 12_e 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 13_e 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 14_e 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 15_r 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 16_s -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 17_r -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 18_i 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 19_s -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 20_e 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000
#> 21_r -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 22_g -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 23_s 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 24_i 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 25_e 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 26_s 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 27_h -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000
#> 28_e 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 29_h 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 30_i 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000
#> 31_r -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 32_h 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 33_g 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 34_s -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 35_s -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 36_h -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 37_r 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 38_r 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 39_h 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 40_h -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
# Compare loadings from SPSS and EFAtools::EFA with type = "SPSS"
COMPARE(EFA_SPSS_var$rot_loadings, SPSS_27$DOSPERT$var_load)
#> Mean [min, max] absolute difference: 0.0000 [ 0.0000, 0.0000]
#> Median absolute difference: 0.0000
#> Max decimals where all numbers are equal: 2
#> Minimum number of decimals provided: 18
#>
#> F1 F3 F2 F4 F5 F8 F6 F7 F9 F10
#> 01_s 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 02_r -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 03_g 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 04_h -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 05_e 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 06_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 07_i -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 08_h -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 09_e 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 10_s 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 11_g 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 12_e -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 13_e 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 14_e -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 15_r -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 16_s -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 17_r 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 18_i -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 19_s 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 20_e -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 21_r -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 22_g 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 23_s 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 24_i -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 25_e 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 26_s -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 27_h -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 28_e -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 29_h 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 30_i -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 31_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 32_h 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 33_g 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 34_s 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 35_s 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000
#> 36_h 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 37_r 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 38_r 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 39_h -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 40_h -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
## Compare original results (just to see the difference)
# Compare loadings from psych::fa and SPSS
COMPARE(psych_var$loadings, SPSS_27$DOSPERT$var_load)
#> Mean [min, max] absolute difference: 0.0005 [ 0.0000, 0.0033]
#> Median absolute difference: 0.0002
#> Max decimals where all numbers are equal: 0
#> Minimum number of decimals provided: 18
#>
#> PA1 PA3 PA2 PA4 PA5 PA8 PA6 PA7 PA9 PA10
#> 01_s 0.0001 -0.0002 -0.0001 -0.0000 0.0001 -0.0002 0.0007 -0.0001 -0.0004 -0.0028
#> 02_r 0.0001 0.0026 -0.0002 -0.0001 0.0002 -0.0017 -0.0000 -0.0000 0.0002 -0.0004
#> 03_g -0.0001 0.0007 -0.0000 -0.0000 0.0002 -0.0004 -0.0001 0.0001 0.0002 -0.0002
#> 04_h -0.0002 0.0009 -0.0000 -0.0001 -0.0001 -0.0009 -0.0001 -0.0000 0.0009 -0.0003
#> 05_e -0.0001 -0.0001 -0.0001 -0.0000 -0.0006 -0.0003 0.0007 -0.0004 0.0000 -0.0017
#> 06_r 0.0001 0.0010 -0.0001 -0.0001 0.0010 -0.0019 -0.0002 0.0004 0.0001 -0.0015
#> 07_i -0.0001 0.0000 0.0000 -0.0001 -0.0000 -0.0002 0.0001 -0.0001 0.0002 -0.0007
#> 08_h -0.0003 0.0003 -0.0000 -0.0001 -0.0012 -0.0002 0.0005 -0.0008 0.0006 0.0005
#> 09_e 0.0001 0.0003 0.0000 0.0000 0.0009 -0.0012 -0.0003 0.0005 0.0003 -0.0014
#> 10_s -0.0001 -0.0002 -0.0001 -0.0001 -0.0007 0.0000 0.0010 -0.0005 -0.0001 -0.0024
#> 11_g -0.0001 0.0003 -0.0000 -0.0000 0.0001 -0.0005 0.0002 -0.0001 0.0000 -0.0007
#> 12_e -0.0001 0.0003 0.0000 -0.0001 0.0004 -0.0009 -0.0002 0.0003 0.0008 -0.0013
#> 13_e 0.0001 0.0006 -0.0000 0.0000 0.0006 -0.0005 0.0000 0.0004 0.0002 -0.0019
#> 14_e -0.0000 0.0002 0.0000 0.0000 -0.0000 -0.0002 0.0001 0.0001 0.0001 -0.0006
#> 15_r 0.0001 0.0028 -0.0002 -0.0001 0.0003 -0.0012 0.0001 0.0000 0.0002 -0.0012
#> 16_s 0.0000 0.0005 -0.0001 -0.0001 -0.0002 -0.0001 0.0008 -0.0004 -0.0002 -0.0025
#> 17_r 0.0002 0.0012 -0.0001 -0.0001 0.0007 -0.0022 -0.0001 0.0001 -0.0000 -0.0009
#> 18_i -0.0000 -0.0000 -0.0000 -0.0000 0.0005 -0.0008 0.0000 0.0002 0.0000 -0.0014
#> 19_s 0.0002 0.0008 -0.0000 -0.0000 0.0016 -0.0012 -0.0005 0.0008 0.0001 -0.0024
#> 20_e 0.0005 0.0011 0.0000 0.0000 0.0014 -0.0011 -0.0010 0.0005 0.0001 0.0004
#> 21_r 0.0002 0.0020 -0.0001 -0.0001 0.0014 -0.0030 -0.0007 0.0005 0.0004 -0.0010
#> 22_g -0.0001 0.0003 0.0000 -0.0000 0.0003 -0.0004 -0.0002 0.0001 0.0003 0.0001
#> 23_s 0.0001 0.0002 0.0000 -0.0000 0.0011 -0.0007 -0.0001 0.0007 0.0000 -0.0025
#> 24_i 0.0001 0.0002 -0.0000 0.0000 0.0003 0.0001 -0.0003 0.0001 -0.0000 -0.0002
#> 25_e -0.0001 0.0006 -0.0000 -0.0000 0.0002 -0.0005 0.0000 0.0002 0.0006 -0.0013
#> 26_s -0.0000 0.0011 -0.0000 -0.0001 0.0006 -0.0006 0.0000 0.0004 0.0005 -0.0022
#> 27_h 0.0001 0.0001 -0.0000 0.0001 0.0004 -0.0004 0.0004 0.0001 -0.0027 -0.0008
#> 28_e 0.0003 0.0010 0.0000 0.0000 0.0016 -0.0013 -0.0009 0.0009 0.0004 -0.0012
#> 29_h -0.0002 0.0004 0.0000 -0.0000 0.0000 -0.0004 0.0007 -0.0005 0.0002 -0.0022
#> 30_i 0.0001 0.0002 0.0000 0.0000 0.0003 -0.0000 -0.0002 -0.0000 -0.0002 -0.0001
#> 31_r 0.0001 0.0012 -0.0002 -0.0002 0.0006 -0.0033 0.0002 -0.0000 0.0001 -0.0021
#> 32_h 0.0000 0.0009 -0.0000 -0.0000 0.0009 -0.0013 0.0001 0.0006 0.0001 -0.0018
#> 33_g -0.0000 -0.0001 0.0000 0.0000 0.0003 -0.0003 0.0002 0.0001 -0.0000 -0.0010
#> 34_s 0.0001 0.0004 0.0001 -0.0000 0.0011 -0.0006 -0.0005 0.0006 0.0002 -0.0009
#> 35_s 0.0002 0.0009 0.0000 -0.0001 0.0019 -0.0014 -0.0005 0.0009 0.0003 -0.0032
#> 36_h -0.0000 0.0001 -0.0000 -0.0001 -0.0003 -0.0005 0.0006 -0.0004 -0.0002 -0.0009
#> 37_r -0.0002 -0.0005 -0.0001 -0.0002 -0.0004 -0.0029 0.0006 -0.0006 0.0004 -0.0016
#> 38_r -0.0001 -0.0001 -0.0000 -0.0002 0.0001 -0.0030 0.0003 -0.0003 0.0004 -0.0016
#> 39_h 0.0000 0.0012 0.0000 -0.0001 0.0004 -0.0014 -0.0003 0.0000 0.0006 -0.0003
#> 40_h 0.0001 -0.0003 0.0001 -0.0000 -0.0003 -0.0002 0.0002 -0.0004 -0.0001 0.0007
Finally, we can do the same for promax rotated results as well.
## Fit the models
# EFAtools::EFA with type = "psych" with promax rotation
EFA_psych_pro <- EFA(DOSPERT$cormat, n_factors = 10, N = DOSPERT$N,
type = "psych", rotation = "promax")
# EFAtools::EFA with type = "SPSS" with promax rotation
EFA_SPSS_pro <- EFA(DOSPERT$cormat, n_factors = 10, N = DOSPERT$N,
type = "SPSS", rotation = "promax")
# psych::fa with promax rotation
psych_pro <- psych::fa(DOSPERT$cormat, nfactors = 10, n.obs = DOSPERT$N,
fm = "pa", rotate = "Promax")
## Check replication of results
# Compare loadings from psych::fa and EFAtools::EFA with type = "psych"
COMPARE(EFA_psych_pro$rot_loadings, psych_pro$loadings)
#> Mean [min, max] absolute difference: 0.0000 [ 0.0000, 0.0000]
#> Median absolute difference: 0.0000
#> Max decimals where all numbers are equal: 12
#> Minimum number of decimals provided: 18
#>
#> F1 F4 F3 F2 F8 F5 F9 F10 F7 F6
#> 01_s -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 02_r 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 03_g 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 04_h 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 05_e 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 06_r -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 07_i -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 08_h 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 09_e -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 10_s -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 11_g 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 12_e -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 13_e -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 14_e -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 15_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 16_s -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 17_r -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 18_i -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 19_s -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 20_e 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 21_r -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 22_g -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 23_s 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000
#> 24_i 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 25_e -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 26_s -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 27_h 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 28_e -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 29_h 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 30_i 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 31_r -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 32_h -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000
#> 33_g 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 34_s -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 35_s -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000
#> 36_h -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 37_r 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 38_r 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 39_h -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000
#> 40_h -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
# Compare loadings from SPSS and EFAtools::EFA with type = "SPSS"
COMPARE(EFA_SPSS_pro$rot_loadings, SPSS_27$DOSPERT$pro_load)
#> Mean [min, max] absolute difference: 0.0000 [ 0.0000, 0.0001]
#> Median absolute difference: 0.0000
#> Max decimals where all numbers are equal: 2
#> Minimum number of decimals provided: 18
#>
#> F1 F3 F2 F4 F5 F8 F6 F7 F9 F10
#> 01_s 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0001
#> 02_r -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000
#> 03_g 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 04_h -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000
#> 05_e 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 06_r -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000
#> 07_i 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 08_h -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 09_e -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 10_s 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 11_g 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 12_e -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000
#> 13_e -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 14_e -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 15_r 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 16_s 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 17_r -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 18_i 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 19_s -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 20_e -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0001
#> 21_r -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000
#> 22_g -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 23_s -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0001
#> 24_i -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000
#> 25_e -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
#> 26_s -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 27_h -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 28_e -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000
#> 29_h 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
#> 30_i -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 31_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000
#> 32_h 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 33_g 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 34_s -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
#> 35_s -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0001
#> 36_h 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000
#> 37_r 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000
#> 38_r 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000
#> 39_h -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000
#> 40_h -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0001
## Compare original results (just to see the difference)
# Compare loadings from psych::fa and SPSS
COMPARE(psych_pro$loadings, SPSS_27$DOSPERT$pro_load)
#> Mean [min, max] absolute difference: 0.0196 [ 0.0000, 0.2404]
#> Median absolute difference: 0.0114
#> Max decimals where all numbers are equal: 0
#> Minimum number of decimals provided: 18
#>
#> PA1 PA3 PA2 PA4 PA8 PA5 PA10 PA7 PA6 PA9
#> 01_s 0.0057 0.0068 -0.0101 -0.0131 0.0059 0.0211 0.0017 -0.0058 -0.0103 -0.0060
#> 02_r -0.0027 0.0070 0.0072 0.0223 -0.0818 0.0354 0.1056 -0.0108 0.0499 -0.0061
#> 03_g -0.0179 -0.0183 -0.0107 0.0324 -0.0152 0.0157 0.0087 -0.0040 0.0082 -0.0027
#> 04_h -0.0149 -0.0010 0.0070 0.0142 -0.0284 0.0135 0.0730 -0.0024 0.0218 -0.0012
#> 05_e -0.0656 0.0122 -0.0176 -0.0114 0.0014 -0.0626 0.0710 0.0299 -0.0118 -0.0104
#> 06_r 0.0152 -0.0044 -0.0083 -0.0013 -0.0153 0.0129 -0.0155 0.0018 0.0134 -0.0008
#> 07_i -0.0176 0.0037 -0.0190 0.0158 0.0014 -0.0115 0.0189 0.0050 -0.0101 -0.0003
#> 08_h -0.0363 0.0057 0.0039 0.0236 -0.0212 0.0058 0.1465 -0.0105 -0.0164 -0.0060
#> 09_e 0.0103 -0.0087 -0.0068 -0.0088 0.0114 -0.0086 0.0169 0.0089 0.0162 -0.0019
#> 10_s -0.0360 0.0155 -0.0119 -0.0067 -0.0069 -0.0047 0.0252 0.0082 -0.0185 -0.0068
#> 11_g -0.0233 -0.0165 -0.0163 0.0274 -0.0031 0.0086 0.0225 -0.0027 -0.0098 -0.0052
#> 12_e -0.0211 -0.0020 -0.0037 0.0155 -0.0063 -0.0031 0.0292 -0.0052 0.0338 0.0019
#> 13_e -0.0037 -0.0049 -0.0062 -0.0176 -0.0013 -0.0117 0.0407 0.0266 0.0081 -0.0080
#> 14_e -0.0257 -0.0036 -0.0070 -0.0031 0.0012 -0.0282 0.0522 0.0216 -0.0023 -0.0063
#> 15_r -0.0071 0.0027 0.0053 0.0119 -0.0842 0.0423 0.0352 0.0164 0.0323 -0.0063
#> 16_s 0.0042 0.0064 -0.0037 0.0004 -0.0225 0.0442 0.0653 -0.0097 -0.0060 -0.0095
#> 17_r 0.0131 -0.0050 -0.0050 0.0067 -0.0213 0.0196 0.0084 -0.0026 0.0037 -0.0006
#> 18_i -0.0197 -0.0028 -0.0241 0.0098 0.0111 -0.0207 -0.0240 0.0115 -0.0046 0.0001
#> 19_s 0.0405 -0.0102 -0.0078 -0.0061 -0.0038 0.0313 -0.0472 -0.0025 0.0339 0.0005
#> 20_e 0.1080 -0.0234 0.0164 0.0044 -0.0045 0.0744 0.2017 -0.0432 0.0389 -0.0093
#> 21_r 0.0460 -0.0071 0.0012 0.0070 -0.0399 0.0457 0.0219 -0.0121 0.0280 0.0006
#> 22_g -0.0134 -0.0224 -0.0111 0.0331 -0.0006 0.0145 -0.0118 -0.0048 -0.0006 0.0001
#> 23_s 0.0258 -0.0055 -0.0057 -0.0130 0.0065 0.0254 -0.0827 0.0016 0.0166 0.0021
#> 24_i 0.0085 -0.0026 -0.0140 0.0204 0.0009 0.0057 0.0315 -0.0031 0.0062 0.0004
#> 25_e -0.0290 0.0017 -0.0053 -0.0045 -0.0120 -0.0233 0.0447 0.0205 0.0189 -0.0047
#> 26_s 0.0069 -0.0049 0.0017 -0.0005 -0.0260 0.0398 -0.0189 0.0080 0.0203 -0.0014
#> 27_h -0.0351 -0.0031 0.0042 0.0199 -0.0020 -0.0017 -0.0848 0.0067 0.0230 0.0079
#> 28_e 0.0583 -0.0170 0.0015 -0.0061 -0.0021 0.0254 0.0972 -0.0124 0.0505 -0.0065
#> 29_h -0.0537 -0.0080 -0.0132 -0.0260 0.0082 -0.0178 -0.2404 0.0835 -0.0735 0.0061
#> 30_i 0.0121 -0.0029 -0.0124 0.0158 0.0014 0.0042 0.0606 -0.0016 -0.0018 -0.0024
#> 31_r -0.0143 0.0139 -0.0165 -0.0040 -0.0278 -0.0122 -0.0051 0.0024 0.0040 -0.0006
#> 32_h -0.0099 -0.0146 -0.0086 -0.0207 -0.0001 0.0069 -0.2107 0.0606 -0.0429 0.0069
#> 33_g -0.0164 -0.0177 -0.0152 0.0100 0.0132 0.0017 -0.0483 0.0102 -0.0197 -0.0023
#> 34_s 0.0421 -0.0161 0.0032 -0.0113 0.0078 0.0346 -0.0747 0.0081 -0.0006 0.0033
#> 35_s 0.0770 -0.0171 0.0003 -0.0110 -0.0011 0.0824 -0.0637 -0.0147 0.0221 0.0012
#> 36_h -0.0105 -0.0025 -0.0014 -0.0044 0.0019 0.0198 -0.0688 0.0213 -0.0533 0.0022
#> 37_r -0.0398 0.0255 -0.0221 -0.0052 0.0067 -0.0473 0.0642 -0.0124 -0.0244 -0.0017
#> 38_r -0.0158 0.0172 -0.0184 -0.0010 0.0065 -0.0263 0.0453 -0.0179 -0.0097 0.0007
#> 39_h 0.0440 -0.0120 0.0126 0.0140 -0.0248 0.0738 0.0543 -0.0172 -0.0062 0.0000
#> 40_h 0.0318 -0.0120 0.0058 0.0021 0.0194 0.0357 0.0768 -0.0091 -0.0547 -0.0039