The function takes two objects of the same dimensions containing numeric
information (loadings or communalities) and returns a list of class
efa_compare containing summary information of the differences of the objects.
efa_compare(
x,
y,
reorder = c("congruence", "names", "none"),
corres = TRUE,
thresh = 0.3,
digits = 4,
m_red = 0.001,
range_red = 0.001,
round_red = 3,
print_diff = TRUE,
na.rm = FALSE,
x_labels = c("x", "y"),
plot = TRUE,
plot_red = 0.01
)A list of class efa_compare with the following components:
The vector or matrix containing the differences between x and y.
The mean absolute difference between x and y.
The median absolute difference between x and y.
The minimum absolute difference between x and y.
The maximum absolute difference between x and y.
The maximum number of decimals to which a comparison makes sense. For example, if x contains only values up to the third decimals, and y is a normal double, max_dec will be three.
The maximal number of decimals to which all elements of x and y
agree in absolute value. The comparison is on magnitudes, so two elements that
are equal in size but opposite in sign count as agreeing; signed disagreements
are reflected in diff and the mean / median / min / max absolute differences.
0 means the two agree in their integer parts but in no decimal place. NA
means there is no agreement at all: either they already differ in their integer
parts, or na.rm = FALSE and an element is missing.
The number of differing variable-to-factor correspondences
between x and y, when only the highest loading is considered. NA whenever the
correspondences were not compared: for vector input, for a matrix with a single
column, with corres = FALSE, and when a loading is missing under
na.rm = FALSE.
The number of differing variable-to-factor correspondences
between x and y when all loadings >= thresh are considered. NA under the same
conditions as diff_corres.
The root mean squared distance (RMSE) between x and y.
List of the settings used.
matrix, or vector. Loadings or communalities of a factor analysis output.
matrix, or vector. Loadings or communalities of another factor analysis output to compare to x.
character. Whether and how elements / columns should be
reordered. If "congruence" (default), the columns of y are matched to those of
x by a joint one-to-one assignment that maximizes the total Tucker's congruence
coefficient (a standard measure of similarity between two loading vectors) across
all columns at once, and each matched column's sign is flipped if needed. This way,
mismatched factor order or sign between two solutions does not distort the
comparison. It applies to matrices only, and warns when x
and y are vectors. If "names", the columns of a matrix -- or the elements of
a vector -- are put in alphabetical order of their names; the rows of a matrix
are assumed to be aligned already and are left untouched. If "none", no
reordering is done.
logical. Whether factor correspondences should be compared if a matrix is entered. Default is TRUE.
numeric. The threshold at or above which a loading is classified as substantial. Default is .3.
numeric. Number of decimals to print in the output. Default is 4.
numeric. Number above which the mean and median should be printed in red (i.e., if .001 is used, the mean will be in red if it is larger than .001, otherwise it will be displayed in green.) Default is .001.
numeric. Number above which the min and max should be printed in red (i.e., if .001 is used, min and max will be in red if the max is larger than .001, otherwise it will be displayed in green). Default is .001. Note that the color of min also depends on max, that is min will be displayed in the same color as max.
numeric. The number of agreeing decimals below which the report highlights the agreement in red (i.e., if 3 is used, the value is shown in red when the compared numbers agree to fewer than 3 decimals, otherwise in green). Default is 3.
logical. Whether the difference vector or matrix should be printed or not. Default is TRUE.
logical. Whether NAs should be removed from the difference
summaries and factor-correspondence classifications. With FALSE, a missing
loading makes the correspondence counts undefined (NA). Default is FALSE.
character. A vector of length two containing identifying
labels for the two objects x and y that will be compared. These will be used
as labels on the x-axis of the plot, and to name the direction of the signed
elementwise differences in the printed report (see print.efa_compare()).
Default is "x" and "y".
Accepted and validated, but
without effect; retained for backwards compatibility. The difference plot is
drawn by
plot.efa_compare(). Default is TRUE.
numeric. Threshold above which to plot the absolute differences in red. Default is .01.
digits, m_red, range_red, round_red, print_diff, and plot_red
only control how the result is displayed; each is stored in the returned object's
settings and can be overridden later without recomputing the comparison --
digits, m_red, range_red, round_red, and print_diff in a call to
print.efa_compare(), and plot_red in a call to plot.efa_compare().
efa_fit() for the solutions being compared, and efa_procrustes() to rotate
one solution onto another before comparing.
# A type SPSS EFA to mimick the SPSS implementation
EFA_SPSS_6 <- efa_fit(test_models$case_11b$cormat, n_factors = 6,
estimate_control = estimate_control(type = "SPSS"),
rotate_control = rotate_control(type = "SPSS"))
# A type psych EFA to mimick the psych::fa() implementation
EFA_psych_6 <- efa_fit(test_models$case_11b$cormat, n_factors = 6,
estimate_control = estimate_control(type = "psych"),
rotate_control = rotate_control(type = "psych"))
# compare the two
efa_compare(EFA_SPSS_6$unrot_loadings, EFA_psych_6$unrot_loadings,
x_labels = c("SPSS", "psych"))
Run the code above in your browser using DataLab