
Extract model-estimated facet interaction effects
Source:R/api-estimation.R
interaction_effect_table.Rdinteraction_effect_table() returns the fixed-effect interaction block
estimated by fit_mfrm() when facet_interactions is supplied. These are
model-estimated deviations from the additive main-effects MFRM, not the
residual screening statistics returned by estimate_bias().
Arguments
- fit
An
mfrm_fitormfrm_comparison_fitreturned byfit_mfrm().- comparison_review
Optional result of
describe_mfrm_data()withcomparisons, or its$comparison_reviewcomponent. Returns the declared interaction contrasts from a matching joint fit instead of individual cells.
Value
A tibble with one row per interaction cell. Returns an empty tibble
when the fit has no model-estimated facet interactions. With
comparison_review, one row per requested contrast with availability,
numerical and readiness fields; attributes comparison_review,
fit_checks and notes preserve the prospective question, source
fingerprint and numerical evidence, and interpretation limits.
Details
mfrmr supports two-way interactions between non-person facets,
for example facet_interactions = "Rater:Criterion". Each interaction matrix
is identified by zero marginal sums across both participating facets, so the
interaction estimates are separable from the two main effects. Positive values
indicate higher-than-expected scores for the facet-level combination under the
additive model; negative values indicate lower-than-expected scores.
Use this table for confirmatory model review after specifying the facet pair
of substantive interest. For exploratory screening without adding parameters
to the fitted model, use estimate_bias() or estimate_all_bias().
With comparison_review, first fit the declared model using the review's
fit_arguments and the original ratings. The fit must match the retained
responses, origins, score coding, model, constraints, facet orientation,
step owner and population design. Only native, unadjusted RSM/PCM fits
without shrinkage are supported. The contrast is the declared weighted
sum of Group1-minus-Group2 interaction effects, in logits. Positive means
a relative shift toward higher coded scores; it is not an absolute school
effect or evidence of unfairness. Location and step effects are not added.
This route reevaluates the retained likelihood and full gradient without
optimization. Objective agreement must be within 1e-6 and the gradient
sup norm within max(1e-4, 10 * reltol), matching the ordinary numerical
stopping tolerance. For MML it also evaluates 2 * q + 1 quadrature nodes,
requiring the finer-grid gradient to meet that tolerance and the absolute
negative-log-likelihood change per Person to be at most 1e-6.
These are numerical checks, not statistical precision criteria. A failed
check retains the row with Estimate = NA and an explanation; the separate
OptimizerEstimate is a diagnostic trace. No refit or partial fit is run.
EstimateStatus = "descriptive_only" requires full conditional-map rank,
numerical convergence, current readiness information and no recorded
blocking condition or boundary exclusion. It does not certify finite-MLE
existence, global marginal identification or sampling performance. MML
retains State = "not_evaluated" for positive conditional ranks even when
a descriptive fitted contrast is available. BoundaryState,
FitReadiness, NumericalState and QuadratureState remain separate.
SE, Lower, Upper remain missing and FormalInferenceEligible remains
false. A target-only identified contrast in a rejected full model remains
unavailable through this route. Save the returned table with saveRDS()
to preserve its review and checks without recalculation; CSV retains the
visible columns but not the attributes.
For a mfrm_comparison_fit created with fit_scope = "comparisons", omit
comparison_review: the table already contains the declared targets and
their partial-fit checks. Extraction does not fit again. See fit_mfrm()
for its likelihood-preserving parameterization, availability requirements
and limits. For full RSM/PCM MML fits, mfrm_facet_intervals() with the same
comparison_review separately supplies model-information intervals and
supported population-SD standardization; extraction here stays descriptive.
CML comparison fits add conditional-information SEs and pointwise
95 percent Wald limits for identified targets, with conditional_wald status;
unidentified rows remain missing. The ordinary full-fit route above remains unchanged.
See also
fit_mfrm(), describe_mfrm_data(), summary.mfrm_fit(),
estimate_bias(), compare_mfrm(), mfrmr_linking_and_dff
mfrm_facet_intervals() with interaction for supported
fixed-population RSM/PCM MML cell intervals from full joint information.
Examples
# Supplementary workflow: run explicitly to keep routine checks brief.
# example("interaction_effect_table", run.dontrun = TRUE)
if (FALSE) { # \dontrun{
toy <- load_mfrmr_data("example_operational")
fit <- fit_mfrm(
toy, person = "Person", facets = c("Rater", "Criterion"),
score = "Score", method = "MML", model = "RSM",
facet_interactions = "Rater:Criterion",
quad_points = 7, maxit = 30
)
head(interaction_effect_table(fit))
} # }