Skip to contents

Calibrates each frame separately and compares the locations and discriminations of items administered in more than one frame.

Usage

frame_invariance(
  fit,
  alpha = 0.05,
  adjust = c("holm", "none"),
  se_method = c("conditional", "bootstrap"),
  boot_reps = 200,
  seed = NULL
)

Arguments

fit

A fitted object from rasch_efrm.

alpha

Significance level used for flags.

adjust

Either "holm" or "none". Both raw and adjusted probabilities are returned.

se_method

"conditional" treats the estimated frame units as fixed; "bootstrap" refits the complete analysis to person resamples within frame.

boot_reps

Number of bootstrap replicates. At least 30 are required.

seed

Optional bootstrap seed.

Value

An object of class "rasch_frame_invariance". The locations and discrimination tables contain the pairwise item comparisons; summary contains set-level RMSD and RMSE summaries. Under the conditional method, discrimination p, p_adj, and flagged are NA. excluded lists items whose observed category structures differed between calibrations or whose separate-frame estimate was weakly determined. The remaining components record the multiplicity and uncertainty settings.

Details

Let \(\hat\delta_{if}\) be the location of item \(i\) from a separate calibration of frame \(f\), and let \(\hat\rho_f\) be that frame's unit from the fitted EFRM. The common-scale location is \(\hat\delta_{if}^{*}=\hat\delta_{if}/\hat\rho_f\). Because each separate calibration has its own origin, pairwise differences are centred over the common thresholds before testing.

The conditional method treats the fitted frame units as fixed. Let \(w_i=m_i/\sum_jm_j\), where \(m_i\) is the number of thresholds for item \(i\). If \(C=I-\mathbf{1}\mathbf{w}^{\mathsf T}\) centres the common items on the threshold-weighted origin, the covariance of the location differences is $$C\{V_1/\hat\rho_1^2+V_2/\hat\rho_2^2\}C^{\mathsf T}.$$ This is fast and conditions on the estimated units. The discrimination table gives the difference between the two standardised infit statistics, divided by \(\sqrt{2}\), together with fitted slopes and their ratio. These quantities are descriptive under the conditional method; it does not report discrimination probabilities.

With se_method = "bootstrap", persons are resampled within frame and the EFRM and separate frame calibrations are refitted. Location tests then use the empirical covariance of the centred differences. The discrimination test uses the bootstrap standard error of the log slope ratio. This includes uncertainty in the fitted frame units but is more computationally demanding.

Raw and Holm-adjusted probabilities are reported. With conditional uncertainty, Holm adjustment covers the location comparisons. With bootstrap uncertainty, it covers the combined family of location and discrimination comparisons. The summary gives the root mean squared location difference and root mean squared standard error for each set and frame pair. Items from different sets cannot be compared because the sets partition the items. Location differences are relative to the mean difference of the common items. Concentrated DIF can therefore produce non-zero centred contrasts for items that were not themselves shifted. The table identifies the pattern of relative departures; item content or external anchors are needed to determine which items provide the defensible reference. A compared set-by-frame cell must contain at least 50 persons with two or more responses. Items with weakly determined standard errors in either separate calibration are listed in excluded rather than tested.

A flagged item may be resolved with resolve_frames when it remains useful within frames, or removed with drop_items when it fits poorly more generally. Either change requires a refit. The invariance tests require a converged frame calibration.

References

Humphry, S. M. (2005). Maintaining a Common Arbitrary Unit in Social Measurement. PhD thesis, Murdoch University.

See also

resolve_frames to give a flagged item a location per frame, drop_items to remove it altogether, and rasch_efrm for the model whose assumption is tested.

Examples

d <- simulate_efrm(n_per_group = 300, items_per_set = 8, n_sets = 1,
                   n_groups = 2, group_unit_ratio = 1.4, seed = 2)
tr <- attr(d, "truth")
fit <- rasch_efrm(d, item_sets = tr$item_sets, groups = "group",
                  id = "id", boot_reps = 0)
frame_invariance(fit)
#> Item invariance across frames (each frame calibrated separately)
#> 
#> Uncertainty: conditional on the fitted frame units 
#> 
#>   set frame_1 frame_2 n_items n_excluded  rmsd  rmse ratio n_location
#>  set1      g1      g2       8          0 0.199 0.200 0.994          0
#>  n_discrimination
#>                  
#> 
#> rmsd/rmse above 1 indicates item behaviour the frame units do not account for
#> 
#> No item's location differs across frames at alpha = 0.05 (Holm-adjusted).
#> 
#> The discrimination comparisons are descriptive:
#>   set frame_1 frame_2  item infit_1 infit_2 infit_z disc_1 disc_2 disc_ratio
#>  set1      g1      g2 S1I01   1.147   1.113   0.630  1.021  1.088      1.066
#>  set1      g1      g2 S1I02   1.035   1.023   0.172  1.267  1.241      0.980
#>  set1      g1      g2 S1I03   1.063   1.107  -0.356  1.212  1.131      0.933
#>  set1      g1      g2 S1I04   0.996   1.037  -0.464  1.448  1.266      0.875
#>  set1      g1      g2 S1I05   1.015   1.087  -0.763  1.374  1.173      0.854
#>  set1      g1      g2 S1I06   1.081   1.130  -0.357  1.175  1.110      0.945
#>  set1      g1      g2 S1I07   1.131   0.977   1.639  1.070  1.382      1.292
#>  set1      g1      g2 S1I08   1.069   1.118  -0.434  1.121  1.079      0.962
#>  disc_boundary
#>               
#>               
#>               
#>               
#>               
#>               
#>               
#>               
#> Use se_method = "bootstrap" for discrimination probabilities.