Skip to contents

Summarize report/table bundles in a user-friendly format

Usage

# S3 method for class 'mfrm_bundle'
summary(object, digits = 3, top_n = 10, ...)

Arguments

object

Any report bundle produced by mfrmr table/report helpers.

digits

Number of digits for printed numeric values.

top_n

Number of preview rows shown from the main table component.

...

Reserved for generic compatibility.

Value

An object of class summary.mfrm_bundle.

Details

This method provides a compact summary for bundle-like outputs (for example: unexpected-response, fair-average, chi-square, and category report objects). It extracts:

  • object class and available components

  • one-row summary table when available

  • preview rows from the main data component

  • resolved settings/options

Branch-aware summaries are provided for:

  • mfrm_bias_count (branch = "original" / "facets")

  • mfrm_fixed_reports (branch = "original" / "facets")

  • mfrm_visual_summaries (branch = "original" / "facets")

Additional class-aware summaries are provided for:

  • mfrm_unexpected, mfrm_fair_average, mfrm_displacement

  • mfrm_interrater, mfrm_facets_chisq, mfrm_bias_interaction

  • mfrm_rating_scale, mfrm_category_structure, mfrm_category_curves

  • mfrm_measurable, mfrm_unexpected_after_bias, mfrm_output_bundle

  • mfrm_residual_pca, mfrm_specifications, mfrm_data_quality

  • mfrm_iteration_report, mfrm_subset_connectivity, mfrm_facet_statistics

  • mfrm_parity_report

Interpreting output

  • overview: class, component count, and selected preview component.

  • summary: one-row aggregate block when supplied by the bundle.

  • preview: first top_n rows from the main table-like component.

  • settings: resolved option values if available.

Typical workflow

  1. Generate a bundle table/report helper output.

  2. Run summary(bundle) for compact QA.

  3. Drill into specific components via $ and visualize with plot(bundle, ...).

Examples

toy <- load_mfrmr_data("example_core")
fit <- fit_mfrm(toy, "Person", c("Rater", "Criterion"), "Score", method = "JML", maxit = 25)
t4 <- unexpected_response_table(fit, abs_z_min = 1.5, prob_max = 0.4, top_n = 10)
summary(t4)
#> mfrmr Unexpected Response Summary 
#>   Class: mfrm_unexpected
#>   Components (3): table, summary, thresholds
#> 
#> Threshold summary
#>  TotalObservations UnexpectedN UnexpectedPercent LowProbabilityN LargeResidualN
#>                768          10             1.302              10             10
#>    Rule AbsZThreshold ProbThreshold
#>  either           1.5           0.4
#> 
#> Flagged responses: table
#>  Row Person Rater    Criterion Weight Score Observed Expected Residual
#>   71   P023   R02      Content      1     2        2    3.879   -1.879
#>  199   P007   R01 Organization      1     1        1    3.145   -2.145
#>  628   P004   R02     Accuracy      1     1        1    3.119   -2.119
#>  236   P044   R01 Organization      1     1        1    3.083   -2.083
#>  166   P022   R04      Content      1     4        4    1.908    2.092
#>  132   P036   R03      Content      1     2        2    3.594   -1.594
#>  609   P033   R01     Accuracy      1     4        4    2.021    1.979
#>  574   P046   R04     Language      1     3        3    1.435    1.565
#>  619   P043   R01     Accuracy      1     4        4    2.084    1.916
#>  362   P026   R04 Organization      1     3        3    1.445    1.555
#>  StdResidual ObsProb MostLikely MostLikelyProb CategoryGap Surprise
#>       -5.569   0.003          4          0.882           2    2.457
#>       -2.913   0.015          3          0.483           2    1.811
#>       -2.856   0.017          3          0.486           2    1.768
#>       -2.778   0.020          3          0.490           2    1.709
#>        2.747   0.019          2          0.468           2    1.730
#>       -2.785   0.039          4          0.635           2    1.408
#>        2.532   0.027          2          0.471           2    1.562
#>        2.625   0.050          1          0.619           2    1.304
#>        2.425   0.033          2          0.469           2    1.477
#>        2.585   0.052          1          0.611           2    1.285
#>             Direction FlagLowProbability FlagLargeResidual Severity
#>   Lower than expected               TRUE              TRUE    9.026
#>   Lower than expected               TRUE              TRUE    5.724
#>   Lower than expected               TRUE              TRUE    5.624
#>   Lower than expected               TRUE              TRUE    5.487
#>  Higher than expected               TRUE              TRUE    5.477
#>   Lower than expected               TRUE              TRUE    5.193
#>  Higher than expected               TRUE              TRUE    5.094
#>  Higher than expected               TRUE              TRUE    4.929
#>  Higher than expected               TRUE              TRUE    4.902
#>  Higher than expected               TRUE              TRUE    4.870
#> 
#> Settings
#>    Setting  Value
#>  abs_z_min    1.5
#>   prob_max    0.4
#>       rule either
#> 
#> Notes
#>  - Unexpected-response summary for quick residual screening.
diag <- diagnose_mfrm(fit, residual_pca = "none")
bias <- estimate_bias(fit, diag, facet_a = "Rater", facet_b = "Criterion", max_iter = 2)
t11 <- bias_count_table(bias, branch = "facets")
summary(t11)
#> mfrmr Bias Count Summary
#> 
#> Overview
#>  InteractionFacets InteractionOrder InteractionMode Branch         Style FacetA
#>  Rater x Criterion                2        pairwise facets facets_manual  Rater
#>     FacetB Cells TotalCount MeanCount MedianCount MinCount MaxCount
#>  Criterion    16        768        48          48       48       48
#>  LowCountCells LowCountPercent
#>              0               0
#> 
#> Count distribution
#>  Min Q1 Median Mean Q3 Max
#>   48 48     48   48 48  48
#> 
#> Thresholds
#>         Setting Value
#>  min_count_warn    10
#> 
#> Notes
#>  - Legacy-compatible branch: table columns mirror the compatibility contract naming.