| anchor_to_baseline | R Documentation |
Re-estimates a many-facet Rasch model on new data while holding selected facet parameters fixed at the values from a previous (baseline) calibration. This is the standard workflow for placing new data onto an existing scale, linking test forms, or carrying a baseline calibration across administration windows.
anchor_to_baseline(
new_data,
baseline_fit,
person,
facets,
score,
anchor_facets = NULL,
include_person = FALSE,
weight = NULL,
model = NULL,
method = NULL,
anchor_policy = "warn",
...
)
## S3 method for class 'mfrm_anchored_fit'
print(x, ...)
## S3 method for class 'mfrm_anchored_fit'
summary(object, ...)
## S3 method for class 'summary.mfrm_anchored_fit'
print(x, ...)
new_data |
Data frame in long format (one row per rating). |
baseline_fit |
An |
person |
Character column name for person/examinee. |
facets |
Character vector of facet column names. |
score |
Character column name for the rating score. |
anchor_facets |
Character vector of facets to anchor (default: all non-Person facets). |
include_person |
If |
weight |
Optional character column name for observation weights. |
model |
Scale model override; defaults to baseline model. |
method |
Estimation method override; defaults to baseline method. |
anchor_policy |
How to handle anchor issues: |
... |
Ignored. |
x |
An |
object |
An |
This function automates the baseline-anchored calibration workflow:
Extracts anchor values from the baseline fit using make_anchor_table().
Re-estimates the model on new_data with those anchors fixed via
fit_mfrm(..., anchors = anchor_table).
Runs diagnose_mfrm() on the anchored fit.
Computes element-level differences (new estimate minus baseline estimate) for every common element.
The model and method arguments default to the baseline fit's settings
so the calibration framework remains consistent. Elements present in the
anchor table but absent from the new data are handled according to
anchor_policy: "warn" (default) emits a message, "error" stops
execution, and "silent" ignores silently.
The returned drift table is best interpreted as an anchored consistency
check. When a facet is fixed through anchor_facets, those anchored levels
are constrained in the new run, so their reported differences are not an
independent drift analysis. For genuine cross-wave drift monitoring, fit the
waves separately and use detect_anchor_drift() on the resulting fits.
Element-level differences are calculated for every element that appears in both the baseline and the new calibration:
\Delta_e = \hat{\delta}_{e,\text{new}} - \hat{\delta}_{e,\text{base}}
An element is flagged when |\Delta_e| > 0.5 logits or
|\Delta_e / SE_{\Delta_e}| > 2.0, where
SE_{\Delta_e} = \sqrt{SE_{\mathrm{base}}^2 + SE_{\mathrm{new}}^2}.
Object of class mfrm_anchored_fit with components:
The anchored mfrm_fit object.
Output of diagnose_mfrm() on the anchored fit.
Anchor table extracted from the baseline.
Tibble of element-level drift statistics.
Use anchor_to_baseline() when you have one new dataset and want to place
it directly on a baseline scale.
Use detect_anchor_drift() when you already have multiple fitted waves
and want to compare their stability.
Use build_equating_chain() when you need cumulative offsets across an
ordered series of waves.
$drift: one row per common element with columns Facet, Level,
Baseline, New, Drift, SE_Baseline, SE_New, SE_Diff,
Drift_SE_Ratio, and Flag.
Read this as an anchored consistency table. Small absolute differences
indicate that the anchored re-fit stayed close to the baseline scale.
Flagged rows warrant review, but they are not a substitute for a separate
drift study on unanchored common elements.
$fit: the full anchored mfrm_fit object, usable with
diagnose_mfrm(), measurable_summary_table(), etc.
$diagnostics: pre-computed diagnostics for the anchored calibration.
$baseline_anchors: the anchor table fed to fit_mfrm(), useful for
auditing which elements were constrained.
Fit the baseline model: fit1 <- fit_mfrm(...).
Collect new data (e.g., a later administration).
Call res <- anchor_to_baseline(new_data, fit1, ...).
Inspect summary(res) to confirm the anchored run remains close to the
baseline scale.
For multi-wave drift monitoring, fit waves separately and pass the fits to
detect_anchor_drift() or build_equating_chain().
fit_mfrm(), make_anchor_table(), detect_anchor_drift(),
diagnose_mfrm(), build_equating_chain(), mfrmr_linking_and_dff
d1 <- load_mfrmr_data("study1")
keep1 <- unique(d1$Person)[1:15]
d1 <- d1[d1$Person %in% keep1, , drop = FALSE]
fit1 <- fit_mfrm(d1, "Person", c("Rater", "Criterion"), "Score",
method = "JML", maxit = 15)
d2 <- load_mfrmr_data("study2")
keep2 <- unique(d2$Person)[1:15]
d2 <- d2[d2$Person %in% keep2, , drop = FALSE]
res <- anchor_to_baseline(d2, fit1, "Person",
c("Rater", "Criterion"), "Score",
anchor_facets = "Criterion")
summary(res)
head(res$drift[, c("Facet", "Level", "Drift", "Flag")])
res$baseline_anchors[1:3, ]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.