knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5 )
This vignette covers the package-native route for:
For a broader workflow guide, see vignette("mfrmr-workflow", package = "mfrmr").
For the shorter help-page map, see
help("mfrmr_linking_and_dff", package = "mfrmr").
library(mfrmr) bias_df <- load_mfrmr_data("example_bias") fit <- fit_mfrm( bias_df, person = "Person", facets = c("Rater", "Criterion"), score = "Score", method = "MML", model = "RSM", quad_points = 7 ) diag <- diagnose_mfrm(fit, residual_pca = "none")
Use subset_connectivity_report() before interpreting subgroup or cross-form
contrasts.
sc <- subset_connectivity_report(fit, diagnostics = diag) sc$summary[, c("Subset", "Observations", "ObservationPercent")] plot(sc, type = "design_matrix", preset = "publication")
Interpretation:
make_anchor_table() is the shortest route when you need reusable anchor
elements from an existing calibration.
anchors <- make_anchor_table(fit, facets = "Criterion") head(anchors)
Use audit_mfrm_anchors() when you want a stricter review of anchor quality.
Residual DFF is the fast screening route. It is useful for triage, but it is not automatically a logit-scale inferential contrast.
dff_resid <- analyze_dff( fit, diag, facet = "Criterion", group = "Group", data = bias_df, method = "residual" ) dff_resid$summary head( dff_resid$dif_table[, c("Level", "Group1", "Group2", "Classification", "ClassificationSystem")], 8 ) plot_dif_heatmap(dff_resid)
Interpretation:
residual output as screening evidence.ClassificationSystem to see how the current residual screen was labeled.ScaleLinkStatus and ContrastComparable for refit-based contrasts.The refit route can support logit-scale contrasts only when subgroup linking is adequate and the precision layer supports it.
dff_refit <- analyze_dff( fit, diag, facet = "Criterion", group = "Group", data = bias_df, method = "refit" ) dff_refit$summary head( dff_refit$dif_table[, c("Level", "Group1", "Group2", "Classification", "ContrastComparable")], 8 )
If the level-wise screen points to a specific facet, follow up with the interaction table and narrative report.
dit <- dif_interaction_table( fit, diag, facet = "Criterion", group = "Group", data = bias_df ) head(dit$table) dr <- dif_report(dff_resid) cat(dr$narrative)
When you work across administrations, the route usually moves from anchor export to anchored fitting and then to drift review.
d1 <- load_mfrmr_data("study1") d2 <- load_mfrmr_data("study2") fit1 <- fit_mfrm(d1, "Person", c("Rater", "Criterion"), "Score", method = "JML", maxit = 25) fit2 <- fit_mfrm(d2, "Person", c("Rater", "Criterion"), "Score", method = "JML", maxit = 25) anchored <- anchor_to_baseline( d2, fit1, person = "Person", facets = c("Rater", "Criterion"), score = "Score" ) drift <- detect_anchor_drift(list(Wave1 = fit1, Wave2 = fit2)) plot_anchor_drift(drift, type = "drift", preset = "publication")
For a compact linking route:
fit_mfrm()diagnose_mfrm()subset_connectivity_report()make_anchor_table() or audit_mfrm_anchors()analyze_dff()dif_report() and plot_dif_heatmap()anchor_to_baseline() / detect_anchor_drift() when working across waveshelp("mfrmr_linking_and_dff", package = "mfrmr")help("subset_connectivity_report", package = "mfrmr")help("analyze_dff", package = "mfrmr")help("detect_anchor_drift", package = "mfrmr")Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.