## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.align = "center" ) if (!requireNamespace("psych", quietly = TRUE)) { stop("Package \"psych\" needed for this vignette to work. Please install it.", call. = FALSE) } ## ----setup-------------------------------------------------------------------- library(psych) library(EFAtools) ## ----------------------------------------------------------------------------- # 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") ## ----------------------------------------------------------------------------- # psych::fa without rotation psych_paf <- psych::fa(DOSPERT$cormat, nfactors = 10, n.obs = DOSPERT$N, fm = "pa", rotate = "none") ## ----------------------------------------------------------------------------- # Compare loadings from psych::fa and EFAtools::EFA with type = "psych" COMPARE(EFA_psych_paf$unrot_loadings, psych_paf$loadings) # Compare loadings from SPSS and EFAtools::EFA with type = "SPSS" COMPARE(EFA_SPSS_paf$unrot_loadings, SPSS_27$DOSPERT$paf_load) ## ----------------------------------------------------------------------------- # Compare loadings from psych::fa and SPSS COMPARE(psych_paf$loadings, SPSS_27$DOSPERT$paf_load) ## ----------------------------------------------------------------------------- ## 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) # Compare loadings from SPSS and EFAtools::EFA with type = "SPSS" COMPARE(EFA_SPSS_var$rot_loadings, SPSS_27$DOSPERT$var_load) ## Compare original results (just to see the difference) # Compare loadings from psych::fa and SPSS COMPARE(psych_var$loadings, SPSS_27$DOSPERT$var_load) ## ----------------------------------------------------------------------------- ## 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) # Compare loadings from SPSS and EFAtools::EFA with type = "SPSS" COMPARE(EFA_SPSS_pro$rot_loadings, SPSS_27$DOSPERT$pro_load) ## Compare original results (just to see the difference) # Compare loadings from psych::fa and SPSS COMPARE(psych_pro$loadings, SPSS_27$DOSPERT$pro_load)