Algorithm Overview
The EFA-Boosting algorithm is an iterative optimization procedure designed to find the optimal item configuration for exploratory factor analysis models. It combines multiple fit indices into an adaptive composite score that adjusts based on model complexity and sample size.
How It Works
Step 1: Initial Model Fit
The algorithm starts by fitting an initial EFA model with all items
using the package’s internal EFA engine, which fits the
efa() block syntax of lavaan with the requested estimator
and rotation.
Step 2: Problem Detection
At each iteration, the algorithm checks for:
- Heywood cases: Factor loadings > 1.0
- Near-Heywood cases: Factor loadings > 0.95
- Cross-loadings: Items loading on multiple factors above the threshold
- Low loadings: Items with loadings below the minimum threshold
- Interfactor correlations: Correlations > 0.85 between factors
Step 3: Item Removal Strategy
Two search strategies are available:
Usage Examples
Basic Usage
library(OptimalFactor)
result <- efa_boosting(
data = Data_Personality,
name_items = "item",
n_factors = 5,
verbose = TRUE
)Advanced Configuration
result <- efa_boosting(
data = Data_Personality,
name_items = "item",
n_factors = 5,
rotation = "oblimin",
target_RMSEA = 0.05,
target_SRMR = 0.05,
target_CFI = 0.95,
min_loading = 0.40,
cross_loading_threshold = 0.32,
min_items_per_factor = 3,
global_search = TRUE,
global_max_remove = 3,
verbose = TRUE
)With AI Analysis
result <- efa_boosting(
data = Data_Personality,
name_items = "item",
n_factors = 5,
use_gpt = TRUE,
gpt_model = "gpt-4o-mini",
verbose = TRUE
)
# Print AI analysis
print_conceptual_analysis(result$conceptual_analysis)Parameters
| Parameter | Default | Description |
|---|---|---|
data |
- | Data frame with items |
name_items |
- | Prefix of item columns |
n_factors |
- | Number of factors to extract |
rotation |
“oblimin” | Rotation method |
target_RMSEA |
0.06 | Target RMSEA value |
target_SRMR |
0.06 | Target SRMR value |
target_CFI |
0.95 | Target CFI value |
min_loading |
0.40 | Minimum acceptable loading |
cross_loading_threshold |
0.32 | Cross-loading threshold |
min_items_per_factor |
3 | Minimum items per factor |
global_search |
FALSE | Enable global search |
global_max_remove |
2 | Max items in global search |
use_gpt |
FALSE | Enable AI analysis |
verbose |
TRUE | Print progress |
