Inspect relative changes after the common-element offset used by
detect_anchor_drift(). Read summary(x) and link support alongside the plot.
Arguments
- x
A saved result from
detect_anchor_drift().- type
"drift"for relative changes with screening flags,"heatmap"for wave-by-element patterns, or"forest"for per-wave estimates with approximate normal whiskers. A linking chain is a different result: useplot(chain, type = "chain")afterbuild_equating_chain().- ...
facetoptionally selects facets;ci_level = 0.95controls forest whiskers only;presetselects"standard","publication","compact", or"monochrome";draw = FALSEreturns data without drawing. Additional base-graphics arguments depend on the selected view.
Value
An mfrm_plot_data object, or NULL when no drift rows remain.
Drift/heatmap data use data$table (and data$matrix for a heatmap);
forest rows use data$data, including CI_Lower and CI_Upper.
Interpretation
Drift and heatmap views show the saved relative drift. Flags use the screening rules chosen during analysis; changing the display does not recalibrate these rules. Subtracting the common-element offset can remove a panel-wide shift, so unflagged elements do not establish absence of annual drift.
Forest whiskers describe individual wave estimates, not uncertainty in their differences. They do not include linking-offset uncertainty or cross-wave covariance, and their overlap is not a test of change. Missing standard errors produce no whisker, not a zero-width interval.
Examples
# Long-running workflow; run explicitly when needed.
# example("plot.mfrm_anchor_drift", run.dontrun = TRUE)
if (FALSE) { # \dontrun{
ratings <- load_mfrmr_data("example_core")
people <- unique(ratings$Person)
d1 <- ratings[ratings$Person %in% people[1:12], , drop = FALSE]
d2 <- ratings[ratings$Person %in% people[13:24], , drop = FALSE]
fit1 <- fit_mfrm(d1, "Person", c("Rater", "Criterion"), "Score",
method = "JML")
fit2 <- fit_mfrm(d2, "Person", c("Rater", "Criterion"), "Score",
method = "JML")
# Review convergence and common-element support before interpreting changes.
summary(fit1)
summary(fit2)
drift <- detect_anchor_drift(list(W1 = fit1, W2 = fit2))
drift_plot <- plot(drift, type = "drift", draw = FALSE)
class(drift_plot)
names(drift_plot$data)
chain <- build_equating_chain(list(F1 = fit1, F2 = fit2))
chain_plot <- plot(chain, type = "chain", draw = FALSE)
head(chain_plot$data$table)
if (interactive()) {
plot(drift, type = "heatmap", preset = "publication")
}
} # }
