
Redundancy-Guided Short Form of a Unidimensional Scale
Source:R/redundancy_short_form.R
redundancy_short_form.RdBuilds a short form of an (essentially) unidimensional scale by iteratively
removing the most locally-dependent item. At each step a one-factor model is
fitted, the pair of items with the largest residual correlation is located,
and the item of that pair with the lower loading is dropped (keeping the
stronger indicator). Pruning stops when the target length k is reached
or when no residual correlation exceeds threshold. This addresses the
common situation where a scale is unidimensional but the one-factor model
misfits because of near-duplicate items (local dependence).
Usage
redundancy_short_form(
data,
items,
k = NULL,
groups = NULL,
min_per_group = 3,
threshold = 0.15,
min_omega = NULL,
estimator = "WLSMV",
ordered = TRUE
)Arguments
- data
Data frame with the item responses.
- items
Character vector with the candidate item names.
- k
Target number of items. If
NULL, prunes until the largest residual correlation drops belowthreshold. DefaultNULL.- groups
Optional named list mapping content groups to items (e.g. theoretical dimensions), used only to preserve at least
min_per_groupitems per group during pruning. DefaultNULL(no constraint).- min_per_group
Minimum items kept per group in
groups. Default 3.- threshold
Residual-correlation stopping threshold when
k = NULL. Default 0.15.- min_omega
Reliability floor. When set (e.g.
0.80), an item is only dropped if the resulting form keeps McDonald's omega at or above this value, so the short form cannot buy fit at the cost of internal consistency. A scale that already sits below the floor is not frozen: for it the effective bar is its current omega, so removals that do not reduce reliability are still allowed.NULL(default) disables the check.- estimator
Estimator passed to
lavaan::cfa. Default"WLSMV".- ordered
Logical; treat items as ordered. Default
TRUE.
Value
A list with items (retained items), trajectory (data
frame with n_items, cfi, tli, rmsea, srmr, omega and the item dropped at
each step), fit (final one-factor lavaan object),
loadings (standardized), omega (McDonald's omega of the final
form) and stop_reason ("target_k", "threshold",
"min_items", "min_per_group" or "min_omega").
Details
Removing redundant items is preferred over piling up residual covariances,
which capitalizes on chance (MacCallum, Roznowski & Necowitz, 1992). The
resulting short form should be cross-validated on an independent sample (see
cross_validate_cfa).
References
MacCallum, R. C., Roznowski, M., & Necowitz, L. B. (1992). Model modifications in covariance structure analysis: The problem of capitalization on chance. Psychological Bulletin, 111(3), 490–504.
Examples
data(Data_Expectativas)
sf <- redundancy_short_form(Data_Expectativas, paste0("EAF", 1:10), k = 6,
groups = list(A = paste0("EAF", 1:5), B = paste0("EAF", 6:10)))
#> Warning: lavaan->lav_model_vcov():
#> The variance-covariance matrix of the estimated parameters (vcov) does not
#> appear to be positive definite! The smallest eigenvalue (= -1.160079e-16)
#> is smaller than zero. This may be a symptom that the model is not
#> identified.
#> Warning: lavaan->lav_model_vcov():
#> The variance-covariance matrix of the estimated parameters (vcov) does not
#> appear to be positive definite! The smallest eigenvalue (= 2.580688e-18)
#> is close to zero. This may be a symptom that the model is not identified.
#> Warning: lavaan->lav_model_vcov():
#> The variance-covariance matrix of the estimated parameters (vcov) does not
#> appear to be positive definite! The smallest eigenvalue (= 2.873136e-18)
#> is close to zero. This may be a symptom that the model is not identified.
#> Warning: lavaan->lav_model_vcov():
#> The variance-covariance matrix of the estimated parameters (vcov) does not
#> appear to be positive definite! The smallest eigenvalue (= -1.241411e-17)
#> is smaller than zero. This may be a symptom that the model is not
#> identified.
#> Warning: lavaan->lav_model_vcov():
#> The variance-covariance matrix of the estimated parameters (vcov) does not
#> appear to be positive definite! The smallest eigenvalue (= -7.291260e-18)
#> is smaller than zero. This may be a symptom that the model is not
#> identified.
#> Warning: lavaan->lav_model_vcov():
#> The variance-covariance matrix of the estimated parameters (vcov) does not
#> appear to be positive definite! The smallest eigenvalue (= -7.291260e-18)
#> is smaller than zero. This may be a symptom that the model is not
#> identified.
sf$trajectory; sf$items; sf$omega
#> n_items cfi tli rmsea srmr omega dropped
#> 1 10 0.934 0.916 0.182 0.095 0.938 -
#> 2 9 0.961 0.948 0.156 0.067 0.940 EAF6
#> 3 8 0.991 0.988 0.082 0.044 0.937 EAF5
#> 4 7 0.996 0.994 0.060 0.037 0.931 EAF2
#> 5 6 1.000 1.004 0.000 0.026 0.920 EAF10
#> [1] "EAF1" "EAF3" "EAF4" "EAF7" "EAF8" "EAF9"
#> [1] 0.92