Calibrates each frame separately and compares the locations and discriminations of items administered in more than one frame.
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.