
Guttman-style scalogram of person x item observed responses
Source:R/api-plotting-screening.R
plot_guttman_scalogram.RdDraws a person x item (or person x facet-level) matrix coloured by observed category, with rows ordered by person measure and columns ordered by location measure. Unexpected responses (those that fall far from the expected category at a given theta) are highlighted with a heavy border so the visual reads as a Rasch-convention Guttman scalogram.
Usage
plot_guttman_scalogram(
fit,
diagnostics = NULL,
column_facet = NULL,
top_n_persons = 40L,
highlight_unexpected = TRUE,
preset = c("standard", "publication", "compact", "monochrome"),
draw = TRUE
)Arguments
- fit
An
mfrm_fitfromfit_mfrm().- diagnostics
Optional
diagnose_mfrm()output; used to pick up unexpected-response flags when available.- column_facet
Facet name used for the columns. Default
"Criterion"when the fit contains it, otherwise the last entry offit$config$facet_names.- top_n_persons
Maximum number of persons shown (default
40). Persons closest to the median measure are retained when the population exceeds this cap.- highlight_unexpected
Logical. When
TRUE(default), draw a heavy border around cells flagged as unexpected byunexpected_response_table().- preset
Visual preset.
- draw
If
TRUE, print theggplotobject.
Value
Invisibly, a ggplot object. plot_data(p) bundles the
scalogram matrix and the optional unexpected-response overlay.
Session plot defaults
See mfrmr_visual_diagnostics for options(mfrmr.plot_preset), argument
precedence, and appearance when saving or reusing a plot.
Migration in 0.2.4
This renderer is internal. Use the corresponding plot() route in
mfrmr_plot_migration; the former exported name is no longer available.
See also
unexpected_response_table() for the case-level review of
the cells flagged in the overlay;
plot(x, type = "agreement", view = "heatmap") for a complementary rater-pair
view of the same residual structure;
diagnose_mfrm() for the underlying diagnostics bundle.
Examples
# Supplementary workflow: run explicitly to keep routine checks brief.
# example("plot_guttman_scalogram", run.dontrun = TRUE)
if (FALSE) { # \dontrun{
# Saved synthetic JML/RSM analysis of example_core.
# For your own data, fit a model first; see ?fit_mfrm.
example_fit <- readRDS(system.file("examples", "core-jml.rds", package = "mfrmr"))
fit <- example_fit$fit
p <- plot(fit, type = "guttman", draw = FALSE)
dim(plot_data(p, "matrix"))
# Look for: a clean monotone "staircase" of higher scores in the
# upper-right triangle and lower scores in the lower-left, once
# rows are sorted by person ability. Cells circled by the
# unexpected-response overlay break the staircase and warrant
# case-level review with `unexpected_response_table()`.
} # }