Skip to contents

Every check that mv_pipeline() runs compares a statistic with a threshold from this list. The defaults follow common practice in operational testing (the Standards for Educational and Psychological Testing, the ETS classification of differential item functioning); change any of them by name.

Usage

mv_rules(..., preset = c("standards", "lenient"))

Arguments

...

rules to change, by name, e.g. q3 = 0.25.

preset

starting values: "standards" (the defaults above) or "lenient".

Value

A list of class mv_rules.

Details

RuleDefaultCheck
miskey_p0.10proportion correct below this suggests a miskeyed item
miskey_r0corrected item-total correlation below this suggests a miskey
missing_item0.20share of missing responses on an item
missing_person0.50share of items a respondent skipped
straight_min_items5minimum test length for straight-lining checks
rapid_rt0.10response time below this share of the item's median is a rapid guess
rapid_person0.10share of rapid guesses that flags a respondent
min_category_n10responses needed in each score category
rmsea0.06maximum M2-based RMSEA
cfi0.95minimum M2-based CFI
q30.20maximum absolute Q3 residual correlation between two items
fit_alpha0.01significance level for S-X2 item misfit
fit_adjust"BH"p-value adjustment for item misfit (stats::p.adjust())
a_min, a_max0.3, 4acceptable range of discrimination (slope)
b_max4largest acceptable absolute difficulty (location)
c_max0.35largest acceptable lower asymptote (guessing)
dif_alpha0.05significance level of the Mantel-Haenszel test
dif_b, dif_c1, 1.5absolute MH D-DIF for ETS categories B and C (0/1 items)
dif_poly_b, dif_poly_c0.17, 0.25absolute SMD/SD for categories B and C (polytomous items)
reliability0.80minimum marginal reliability
person_misfit-1.96Zh (lz) person-fit value below which a respondent misfits
min_anchors5fewest anchor items for linking to a bank
min_anchor_share0.20smallest share of the test that should be anchors
anchor_displacement0.3largest change in an anchor's location (logits) after linking
link_slope_min, link_slope_max0.8, 1.2acceptable range of the linking slope A
parallel_tol0.10largest relative difference in information between parallel forms
cat_sem0.35largest acceptable standard error of a form, CAT or MST (and the CAT stopping rule)
cat_bias0.1largest acceptable average bias of simulated CAT or MST scores
max_exposure0.25largest share of CAT simulees (or of a window's test takers, in monitoring) who should see an item
unused_share0.20largest share of the bank a CAT may leave unused (and of a monitored bank unused for unused_days)
bank_depth10bank size, in multiples of the CAT length, below which the bank is shallow
mst_routing0.15largest share of MST simulees routed to the wrong module
cut_accuracy0.85smallest acceptable classification accuracy
cut_consistency0.80smallest acceptable classification consistency
cut_sem0.35largest acceptable standard error of measurement at a cut score
panel_sd0.5largest standard deviation of standard-setting panelists' cuts (ability units)
duplicate_sim0.90largest word overlap (Jaccard) between two items before they are near-duplicates
coverage_ratio3items to write per blueprint target (items are lost in review and field testing)
min_reviewers2fewest reviewers per item
review_kappa0.40smallest acceptable Fleiss' kappa between reviewers' decisions
n_rasch, n_2pl, n_3pl200, 500, 1000respondents needed per item in a field test (Rasch; 2PL; 3PL or polytomous models)
recovery_rmse0.2largest acceptable RMSE of simulated slope recovery in a field-test design
n_validation200double-scored responses needed per open-ended item to validate machine scores
qwk_min0.70smallest acceptable quadratic weighted kappa (human-human and machine-human)
qwk_drop0.10largest acceptable drop from human-human to machine-human QWK
score_smd0.15largest standardized mean difference between machine and human scores
subgroup_smd0.10largest machine-human standardized mean difference within a group
min_confidence, min_words0.5, 3machine scores below this confidence, or responses shorter than this, go to human scoring
max_se1standard error above which a test taker's score is flagged as imprecise
preknowledge_alpha0.001significance level of the preknowledge likelihood ratio test
leak_p, leak_rt0.15, 0.25rise in proportion correct and relative fall in median time that suggest a leaked item
drift_a, drift_b0.3, 0.3largest change in an item's slope and difficulty from its bank value
copy_alpha0.001family-wise significance level of the identical-incorrect-answers index
rt_resid, rt_share-3, 0.20log-time residual, and share of items below it, that flag aberrant timing
site_alpha0.001significance level for a site with too many flagged test takers
gain_sem3score gain, in standard errors of the difference, that is unusual
min_group_n10smallest group summarized in a report
exposure_windows2consecutive windows above max_exposure that flag an over-exposed bank item
cell_depth2active bank items per content cell, in multiples of the cell's blueprint count
reliability_drop0.05largest drop in marginal reliability from the first monitored window
unused_days365days without use after which a bank item counts as unused

preset = "lenient" relaxes the rules for pilot studies and small samples (rmsea = 0.08, cfi = 0.90, q3 = 0.30, a_min = 0.2, reliability = 0.70, missing_item = 0.30); values given by name are applied on top of the preset.

Examples

mv_rules()
#> <mv_rules> preset: standards
#>   miskey_p            0.1
#>   miskey_r            0
#>   missing_item        0.2
#>   missing_person      0.5
#>   straight_min_items  5
#>   rapid_rt            0.1
#>   rapid_person        0.1
#>   min_category_n      10
#>   rmsea               0.06
#>   cfi                 0.95
#>   q3                  0.2
#>   fit_alpha           0.01
#>   fit_adjust          BH
#>   a_min               0.3
#>   a_max               4
#>   b_max               4
#>   c_max               0.35
#>   dif_alpha           0.05
#>   dif_b               1
#>   dif_c               1.5
#>   dif_poly_b          0.17
#>   dif_poly_c          0.25
#>   reliability         0.8
#>   person_misfit       -1.96
#>   min_anchors         5
#>   min_anchor_share    0.2
#>   anchor_displacement 0.3
#>   link_slope_min      0.8
#>   link_slope_max      1.2
#>   parallel_tol        0.1
#>   cat_sem             0.35
#>   cat_bias            0.1
#>   max_exposure        0.25
#>   unused_share        0.2
#>   bank_depth          10
#>   mst_routing         0.15
#>   cut_accuracy        0.85
#>   cut_consistency     0.8
#>   cut_sem             0.35
#>   panel_sd            0.5
#>   duplicate_sim       0.9
#>   coverage_ratio      3
#>   min_reviewers       2
#>   review_kappa        0.4
#>   n_rasch             200
#>   n_2pl               500
#>   n_3pl               1000
#>   recovery_rmse       0.2
#>   n_validation        200
#>   qwk_min             0.7
#>   qwk_drop            0.1
#>   score_smd           0.15
#>   subgroup_smd        0.1
#>   min_confidence      0.5
#>   min_words           3
#>   max_se              1
#>   preknowledge_alpha  0.001
#>   leak_p              0.15
#>   leak_rt             0.25
#>   drift_a             0.3
#>   drift_b             0.3
#>   copy_alpha          0.001
#>   rt_resid            -3
#>   rt_share            0.2
#>   site_alpha          0.001
#>   gain_sem            3
#>   min_group_n         10
#>   exposure_windows    2
#>   cell_depth          2
#>   reliability_drop    0.05
#>   unused_days         365
mv_rules(q3 = 0.25, reliability = 0.85)
#> <mv_rules> preset: standards; changed: q3, reliability
#>   miskey_p            0.1
#>   miskey_r            0
#>   missing_item        0.2
#>   missing_person      0.5
#>   straight_min_items  5
#>   rapid_rt            0.1
#>   rapid_person        0.1
#>   min_category_n      10
#>   rmsea               0.06
#>   cfi                 0.95
#>   q3                  0.25
#>   fit_alpha           0.01
#>   fit_adjust          BH
#>   a_min               0.3
#>   a_max               4
#>   b_max               4
#>   c_max               0.35
#>   dif_alpha           0.05
#>   dif_b               1
#>   dif_c               1.5
#>   dif_poly_b          0.17
#>   dif_poly_c          0.25
#>   reliability         0.85
#>   person_misfit       -1.96
#>   min_anchors         5
#>   min_anchor_share    0.2
#>   anchor_displacement 0.3
#>   link_slope_min      0.8
#>   link_slope_max      1.2
#>   parallel_tol        0.1
#>   cat_sem             0.35
#>   cat_bias            0.1
#>   max_exposure        0.25
#>   unused_share        0.2
#>   bank_depth          10
#>   mst_routing         0.15
#>   cut_accuracy        0.85
#>   cut_consistency     0.8
#>   cut_sem             0.35
#>   panel_sd            0.5
#>   duplicate_sim       0.9
#>   coverage_ratio      3
#>   min_reviewers       2
#>   review_kappa        0.4
#>   n_rasch             200
#>   n_2pl               500
#>   n_3pl               1000
#>   recovery_rmse       0.2
#>   n_validation        200
#>   qwk_min             0.7
#>   qwk_drop            0.1
#>   score_smd           0.15
#>   subgroup_smd        0.1
#>   min_confidence      0.5
#>   min_words           3
#>   max_se              1
#>   preknowledge_alpha  0.001
#>   leak_p              0.15
#>   leak_rt             0.25
#>   drift_a             0.3
#>   drift_b             0.3
#>   copy_alpha          0.001
#>   rt_resid            -3
#>   rt_share            0.2
#>   site_alpha          0.001
#>   gain_sem            3
#>   min_group_n         10
#>   exposure_windows    2
#>   cell_depth          2
#>   reliability_drop    0.05
#>   unused_days         365
mv_rules(preset = "lenient")
#> <mv_rules> preset: lenient
#>   miskey_p            0.1
#>   miskey_r            0
#>   missing_item        0.3
#>   missing_person      0.5
#>   straight_min_items  5
#>   rapid_rt            0.1
#>   rapid_person        0.1
#>   min_category_n      10
#>   rmsea               0.08
#>   cfi                 0.9
#>   q3                  0.3
#>   fit_alpha           0.01
#>   fit_adjust          BH
#>   a_min               0.2
#>   a_max               4
#>   b_max               4
#>   c_max               0.35
#>   dif_alpha           0.05
#>   dif_b               1
#>   dif_c               1.5
#>   dif_poly_b          0.17
#>   dif_poly_c          0.25
#>   reliability         0.7
#>   person_misfit       -1.96
#>   min_anchors         5
#>   min_anchor_share    0.2
#>   anchor_displacement 0.3
#>   link_slope_min      0.8
#>   link_slope_max      1.2
#>   parallel_tol        0.1
#>   cat_sem             0.35
#>   cat_bias            0.1
#>   max_exposure        0.25
#>   unused_share        0.2
#>   bank_depth          10
#>   mst_routing         0.15
#>   cut_accuracy        0.85
#>   cut_consistency     0.8
#>   cut_sem             0.35
#>   panel_sd            0.5
#>   duplicate_sim       0.9
#>   coverage_ratio      3
#>   min_reviewers       2
#>   review_kappa        0.4
#>   n_rasch             200
#>   n_2pl               500
#>   n_3pl               1000
#>   recovery_rmse       0.2
#>   n_validation        200
#>   qwk_min             0.7
#>   qwk_drop            0.1
#>   score_smd           0.15
#>   subgroup_smd        0.1
#>   min_confidence      0.5
#>   min_words           3
#>   max_se              1
#>   preknowledge_alpha  0.001
#>   leak_p              0.15
#>   leak_rt             0.25
#>   drift_a             0.3
#>   drift_b             0.3
#>   copy_alpha          0.001
#>   rt_resid            -3
#>   rt_share            0.2
#>   site_alpha          0.001
#>   gain_sem            3
#>   min_group_n         10
#>   exposure_windows    2
#>   cell_depth          2
#>   reliability_drop    0.05
#>   unused_days         365