Skip to contents

Takes fit statistics for a sequence of increasingly constrained models (configural, metric, scalar, and optionally strict) and reports, for each step, the change in comparative fit index and root mean square error of approximation together with the chi-square difference test.

Usage

morie_invariance_compare(fits, cfi_cut = 0.01, rmsea_cut = 0.015)

Arguments

fits

A data frame or list of rows, each with model, chisq, df, cfi and rmsea. Rows must be ordered from least to most constrained.

cfi_cut

Largest tolerable decrease in CFI. Default 0.01.

rmsea_cut

Largest tolerable increase in RMSEA. Default 0.015.

Value

A data frame with one row per comparison: step, delta_chisq, delta_df, p_value, delta_cfi, delta_rmsea and supported, the last being TRUE when both index changes stay inside their cut-offs.

Details

Invariance is what licenses comparing scores across groups at all. Without at least metric invariance a difference in means between groups may be a difference in what the instrument measures rather than in the trait, so this step precedes any substantive group comparison.

References

Cheung, G. W. and Rensvold, R. B. (2002) Evaluating goodness-of-fit indexes for testing measurement invariance. Structural Equation Modeling 9(2), 233–255.

Examples

fits <- data.frame(
  model = c("configural", "metric", "scalar"),
  chisq = c(120.3, 128.9, 162.4),
  df = c(48, 54, 60),
  cfi = c(0.981, 0.979, 0.964),
  rmsea = c(0.041, 0.040, 0.052)
)
morie_invariance_compare(fits)
#>                   step delta_chisq delta_df      p_value delta_cfi delta_rmsea
#> 1 configural -> metric         8.6        6 1.973547e-01    -0.002      -0.001
#> 2     metric -> scalar        33.5        6 8.400602e-06    -0.015       0.012
#>   supported
#> 1      TRUE
#> 2     FALSE