Derive a simulation specification from a fitted MFRM object
Source:R/api-simulation-spec.R
extract_mfrm_sim_spec.RdDerive a simulation specification from a fitted MFRM object
Arguments
- fit
Output from
fit_mfrm().- assignment
Assignment design to record in the returned specification. Use
"resampled"to reuse empirical person-level rater-assignment profiles from the fitted data, or"skeleton"to reuse the observed person-by-facet design skeleton from the fitted data.- latent_distribution
Latent-value generator to record in the returned specification.
"normal"stores spread summaries for parametric draws;"empirical"additionally activates centered empirical resampling from the fitted person/rater/criterion estimates.- source_data
Optional original source data used to recover additional non-calibration columns, currently person-level
grouplabels, when building a fit-derived observed response skeleton.- person
Optional person column name in
source_data. Defaults to the person column recorded infit.- group
Optional group column name in
source_datato merge into the returneddesign_skeletonas person-level metadata.
Details
extract_mfrm_sim_spec() uses a fitted model as a practical starting point
for later simulation studies. It extracts:
design counts from the fitted data
empirical spread of person and facet estimates
optional empirical support values for semi-parametric draws
fitted threshold values
either a simplified assignment summary (
"crossed"/"rotating"), empirical resampled assignment profiles ("resampled"), or an observed response skeleton ("skeleton", optionally carryingGroup/Weight)
This is intended as a fit-derived parametric starting point, not as a claim that the fitted object perfectly recovers the true data-generating mechanism. Users should review and, if necessary, edit the returned specification before using it for design planning.
If you want to carry person-level group labels into a fit-derived observed
response skeleton, provide the original source_data together with
person and group. Group labels are treated as person-level metadata and
are checked for one-label-per-person consistency before being merged.
Interpreting output
The returned object is a simulation specification, not a prediction about one future sample. It captures one convenient approximation to the observed design and estimated spread in the fitted run.
Examples
toy <- load_mfrmr_data("example_core")
fit <- fit_mfrm(toy, "Person", c("Rater", "Criterion"), "Score", method = "JML", maxit = 15)
#> Warning: Optimizer did not fully converge (code = 1). Consider increasing maxit (current: 15) or relaxing reltol (current: 1e-06).
spec <- extract_mfrm_sim_spec(fit, latent_distribution = "empirical")
spec$assignment
#> [1] "crossed"
spec$model
#> [1] "RSM"
head(spec$threshold_table)
#> # A tibble: 3 × 4
#> StepFacet StepIndex Step Estimate
#> <chr> <int> <chr> <dbl>
#> 1 Common 1 Step_1 -1.27
#> 2 Common 2 Step_2 -0.0524
#> 3 Common 3 Step_3 1.32