The function is used to fit a exploratory factor analysis model. It will first find the optimal number of factors using parameters::n_factors. Once the optimal number of factor is determined, the function will fit the model using
psych::fa()
. Optionally, you can request a post-hoc CFA model based on the EFA model which gives you more fit indexes (e.g., CFI, RMSEA, TLI)
efa_summary(
data,
cols,
rotation = "varimax",
optimal_factor_method = FALSE,
efa_plot = TRUE,
digits = 3,
n_factor = NULL,
post_hoc_cfa = FALSE,
quite = FALSE,
streamline = FALSE,
return_result = FALSE
)
data.frame
columns. Support dplyr::select()
syntax.
the rotation to use in estimation. Default is 'oblimin'. Options are 'none', 'varimax', 'quartimax', 'promax', 'oblimin', or 'simplimax'
Show a summary of the number of factors by optimization method (e.g., BIC, VSS complexity, Velicer's MAP)
show explained variance by number of factor plot. default is TRUE
.
number of digits to round to
number of factors for EFA. It will bypass the initial optimization algorithm, and fit the EFA model using this specified number of factor
a CFA model based on the extracted factor
suppress printing output
print streamlined output
If it is set to TRUE
(default is FALSE
), it will return a fa
object from psych
a fa
object from psych
efa_summary(lavaan::HolzingerSwineford1939, starts_with("x"), post_hoc_cfa = TRUE)
#>
#>
#>
#> Model Summary
#> Model Type = Exploratory Factor Analysis
#> Optimal Factors = 3
#>
#> Factor Loadings
#> ────────────────────────────────────────────────────────────────
#> Variable Factor 1 Factor 3 Factor 2 Complexity Uniqueness
#> ────────────────────────────────────────────────────────────────
#> x1 0.613 1.539 0.523
#> x2 0.494 1.093 0.745
#> x3 0.660 1.084 0.547
#> x4 0.832 1.104 0.272
#> x5 0.859 1.043 0.246
#> x6 0.799 1.167 0.309
#> x7 0.709 1.062 0.481
#> x8 0.699 1.131 0.480
#> x9 0.415 0.521 2.046 0.540
#> ────────────────────────────────────────────────────────────────
#>
#>
#> Explained Variance
#> ─────────────────────────────────────────────────────
#> Var Factor 1 Factor 3 Factor 2
#> ─────────────────────────────────────────────────────
#> SS loadings 2.187 1.342 1.329
#> Proportion Var 0.243 0.149 0.148
#> Cumulative Var 0.243 0.392 0.540
#> Proportion Explained 0.450 0.276 0.274
#> Cumulative Proportion 0.450 0.726 1.000
#> ─────────────────────────────────────────────────────
#>
#>
#> EFA Model Assumption Test:
#> OK. Bartlett's test of sphericity suggest the data is appropriate for factor analysis. χ²(36) = 904.097, p < 0.001
#> OK. KMO measure of sampling adequacy suggests the data is appropriate for factor analysis. KMO = 0.752
#>
#> KMO Measure of Sampling Adequacy
#> ────────────────────
#> Var KMO Value
#> ────────────────────
#> Overall 0.752
#> x1 0.805
#> x2 0.778
#> x3 0.734
#> x4 0.763
#> x5 0.739
#> x6 0.808
#> x7 0.593
#> x8 0.683
#> x9 0.788
#> ────────────────────
#>
#>
#> Post-hoc CFA Model Summary
#>
#> Fit Measure
#> ─────────────────────────────────────────────────────────────────────────────────────
#> Χ² DF P CFI RMSEA SRMR TLI AIC BIC BIC2
#> ─────────────────────────────────────────────────────────────────────────────────────
#> 85.306 24.000 0.000 *** 0.931 0.092 0.065 0.896 7517.490 7595.339 7528.739
#> ─────────────────────────────────────────────────────────────────────────────────────
#> *** p < 0.001, ** p < 0.01, * p < 0.05, + p < 0.1
#> You can drag and resize the R console to view the entire table
#>
#>
#> Factor Loadings
#> ────────────────────────────────────────────────────────────────────────────────
#> Latent.Factor Observed.Var Std.Est SE Z P 95% CI
#> ────────────────────────────────────────────────────────────────────────────────
#> Factor.1 x4 0.852 0.023 37.776 0.000 *** [0.807, 0.896]
#> x5 0.855 0.022 38.273 0.000 *** [0.811, 0.899]
#> x6 0.838 0.023 35.881 0.000 *** [0.792, 0.884]
#> Factor.3 x1 0.772 0.055 14.041 0.000 *** [0.664, 0.880]
#> x2 0.424 0.060 7.105 0.000 *** [0.307, 0.540]
#> x3 0.581 0.055 10.539 0.000 *** [0.473, 0.689]
#> Factor.2 x7 0.570 0.053 10.714 0.000 *** [0.465, 0.674]
#> x8 0.723 0.051 14.309 0.000 *** [0.624, 0.822]
#> x9 0.665 0.051 13.015 0.000 *** [0.565, 0.765]
#> ────────────────────────────────────────────────────────────────────────────────
#> *** p < 0.001, ** p < 0.01, * p < 0.05, + p < 0.1
#>
#>
#> Goodness of Fit:
#> Warning. Poor χ² fit (p < 0.05). It is common to get p < 0.05. Check other fit measure.
#> OK. Acceptable CFI fit (CFI > 0.90)
#> Warning. Poor RMSEA fit (RMSEA > 0.08)
#> OK. Good SRMR fit (SRMR < 0.08)
#> Warning. Poor TLI fit (TLI < 0.90)
#> OK. Barely acceptable factor loadings (0.4 < some loadings < 0.7)