EFA(): Changed error to warning when model is underidentified. This allows the Schmid-Leiman transformation to be performed on a two-factor solution.OMEGA(): Added calculation of additional indices of interpretive relevance (H index, explained common variance [ECV], and percent of uncontaminated correlations [PUC]). This is optional and can be avoided by settingadd_ind = FALSE.
CD(): Addedna.omit()to remove missing values from raw data to avoid an error in the comparison-data procedure.
- When testing for whether a matrix is singular and thus smoothing should be done, test against .Machine$double.eps^.6 instead of 0, as suggested by Florian Scharf.
EFA():- Added warnings if
type = "SPSS"was used withmethod = "ML"ormethod = "ULS", or with a rotation other thannone,varimaxorpromax. - Avoided smoothing of non-positive definite correlation matrices if
type = "SPSS"is used. - Use Moore-Penrose Pseudo Inverse in computation of SMCs if
type = "psych"is used, by callingpsych::smc(). - Use
varimax_type = "kaiser"iftype = "EFAtools"is used withvarimaxorpromax.
- Added warnings if
EFA_AVERAGE():- Added
future.seed = TRUEto call tofuture.apply::future_lapply()to prevent warnings. - Fixed test for Heywood cases from testing whether a communality or loading is greater than .998, to only test whether communalities exceed 1 + .Machine$double.eps
- Added
print.EFA(): Fixed test for Heywood cases from testing whether a communality or loading is greater than .998, to only test whether communalities exceed 1 + .Machine$double.epsOMEGA(): Small bugfix whenlavaansecond-order model is given as input
- Added examples for
EFA_AVERAGE()to readme and the EFAtools vignette - Updated examples in readme and vignettes according to the updated
OMEGAfunction
- Added function
EFA_AVERAGE()and respective print and plot methods, to allow running many EFAs across different implementations to obtain an average solution and test the stability of the results.
EFA(): Defaults that were previously set toNULLare now mostly set toNA. This was necessary forEFA_AVERAGE()to work correctly.PARALLEL(): Rewrote the generation of random data based eigenvalues to be more stable when SMCs are used.OMEGA(): Changed expected input for argumentfactor_corresfrom vector to matrix. Can now be a logical matrix or a numeric matrix with 0's and 1's of the same dimensions as the matrix of group factor loadings. This is more flexible and allows for cross-loadings.
- Created new vignette Replicate_SPSS_psych to show replication of original
psychandSPSSEFA solutions withEFAtools.
- Added function
FACTOR_SCORES()to calculate factor scores from a solution fromEFA(). This is just a wrapper for thepsych::factor.scoresfunction. - Added function
SCREE()that does a scree plot. Also added respective print and plot methods.
CD(): Added check for whether entered data is a tibble, and if so, convert to vanilla data.frame to avoid breaking the procedure.EFA():- Updated the EFAtools type in PAF and Promax.
- Added p value for chi square value in output (calculated for ML and ULS fitting methods).
- Updated the SPSS varimax implementation to fit SPSS results more closely.
- Created an argument "varimax_type" that is set according to the specified type, but that can also be specified individually. With type R psych and EFAtools, the stats::varimax is called by default (
varimax_type = "svd"), with type SPSS, the reproduced SPSS varimax implementation is used (varimax_type = "kaiser"). - Renamed the
kaiserargument (controls if a Kaiser normalization is done or not) intonormalizeto avoid confusion with thevarimax_typeargument specifications.
ML(): Changed default start method to "psych".N_FACTORS():- Added option to do a scree plot if "SCREE" is included in the
criteriaargument. - Added a progress bar.
- Added option to do a scree plot if "SCREE" is included in the
OMEGA(): Now also works with a lavaan second-order solution as input. In this case, it does a Schmid-Leiman transformation based on the first- and second-order loadings first and computes omegas based on this Schmid-Leiman solution.SL(): Now also works with a lavaan second-order solution as input (first- and second-order loadings taken directly from lavaan output).
.get_compare_matrix(): Fixed a bug that occurred when names of data were longer than n_charCOMPARE(): Fixed a bug that occurred when usingreorder = "names".EFA(): RMSEA is now set to 1 if it is > 1.HULL(): Fixed a bug that occurred when no factors are located on the HULLKMO(): Fixed a bug that the inverse of the correlation matrix was not taken anew after smoothing was necessary.PARALLEL():- Fixed a bug that occurred when using
decision_rule = "percentile" - Relocated error messages that were not evaluated if no data were entered (and should be)
- Fixed a bug that occurred when using
print.COMPARE(): Fixed a bug that occurred when usingprint_diff = FALSEinCOMPARE().print.KMO(): Fixed a bug that printed two statements instead of one, when the KMO value was < .6.
OMEGA()andSL(): Added an error message if the entered term ing_nameis invalid (i.e., it cannnot be found among the factor names of the entered lavaan solution).
- Added an error message in
PARALLEL()if no solution has been found after 25 tries.
-
Updated different tests
-
Deleted no longer used packages from Imports and Suggests in DESCRIPTION
-
PARALLEL(): fixed a bug in indexing if method"EFA"was used.
- Added a
NEWS.mdfile to track changes to the package. - Initial CRAN submission