
Generalizability-theory variance decomposition for an MFRM design
Source:R/api-generalizability.R
mfrm_generalizability.RdRe-fits the rating data underlying an mfrm_fit as a crossed
random-effects model
Score ~ 1 + (1 | Person) + (1 | Facet1) + ... + Residual
via lme4::lmer, and returns the canonical G-theory variance
components plus G / Phi coefficients. Useful when reviewers ask
for a generalizability-theory complement to the Rasch-style
separation / reliability statistics that diagnose_mfrm()
already emits.
Usage
mfrm_generalizability(
fit,
data = NULL,
object_facet = "Person",
random_facets = NULL,
reml = TRUE
)Arguments
- fit
An
mfrm_fitfromfit_mfrm().- data
Optional data frame. When
NULL, the rating data stored onfit$prep$datais used.- object_facet
Facet that plays the role of the "object of measurement" – typically
"Person"(default).- random_facets
Character vector of non-person facets to treat as random conditions of measurement. Default uses every facet other than
object_facet.- reml
Logical, passed to
lme4::lmer()(defaultTRUE).
Value
An object of class mfrm_generalizability with:
variance_componentsOne row per random effect plus residual, with columns
Source,Variance, andProportionVariance.coefficientsOne-row data frame with
G(generalizability coefficient, relative decision) andPhi(dependability coefficient, absolute decision), coefficient status labels, and the identification status of the fitted random-effects model.designDescription of the crossed-random model.
Interpretation
Gis appropriate for relative decisions (rank-ordering persons):G = sigma2(p) / (sigma2(p) + sigma2(Residual)).The reported
Phiis appropriate for absolute decisions (cut-score classification):Phi = sigma2(p) / (sigma2(p) + sigma2(facet main effects) + sigma2(Residual)), before D-study scaling.Use
mfrm_d_study()to projectG/Phiunder planned numbers of raters, items, criteria, or other random measurement facets.Values of 0.70 and 0.80 are displayed as familiar planning references, not as universal decision rules. Required dependability depends on the decision, consequences, population, and evidence beyond a single coefficient.
Limitations
This helper formulates the random-effects model with main effects
only (Score ~ 1 + (1|Person) + (1|Facet1) + ... + Residual); no
explicit (1 | Person:Rater), (1 | Person:Criterion), or
(1 | Rater:Criterion) interaction terms are estimated. All
two-way and higher interaction variance is therefore folded into
the Residual term – the standard one-observation-per-cell
approximation – which can bias G downward when person x facet
interactions are substantively large. This function reports the
one-observation-per-cell baseline. mfrm_d_study() applies D-study
scaling, including residual-scaling sensitivity checks, to the same
simplified variance-component decomposition.
Because person-by-facet interaction terms are not estimated separately,
D-study projections remain practical planning evidence rather than a
replacement for a fully specified G-theory design.
Boundary or singular lme4 fits are retained as diagnostic evidence but are
not treated as decision-ready G/D-study evidence.
References
Cronbach, L. J., Gleser, G. C., Nanda, H., & Rajaratnam, N. (1972). The dependability of behavioral measurements: Theory of generalizability for scores and profiles. Wiley.
Brennan, R. L. (2001). Generalizability theory. Springer.
Examples
# \donttest{
toy <- load_mfrmr_data("example_core")
fit <- fit_mfrm(toy, "Person", c("Rater", "Criterion"), "Score",
method = "JML", maxit = 30)
#> Warning: Optimization convergence review did not produce an inference-ready numerical solution (code = 1, status = iteration_limit). Optimizer reached the iteration limit before the terminal gradient became small enough for review-only acceptance. Inspect the model specification, data support, and starting values. Do not interpret estimates until the review is resolved.
if (requireNamespace("lme4", quietly = TRUE)) {
gt <- mfrm_generalizability(fit)
gt$variance_components
# Look for: a Person variance component well above any single
# non-person facet's variance share. Large rater or criterion
# variance shares mean those conditions add measurement error
# relative to person spread.
gt$coefficients
# Compare G and Phi with study-specific requirements; 0.70 and 0.80
# are reference guides only. G < Phi means absolute decisions are noisier than relative
# decisions; review whether facet main effects need anchoring.
# Always check IdentificationStatus before using the bands:
gt$coefficients[, c("G", "Phi", "GStatus", "PhiStatus",
"IdentificationStatus")]
gt$design$identification_note
# If IdentificationStatus is not "identified", treat G/Phi as
# design-review evidence rather than decision-ready reliability.
}
#> [1] "No lme4 boundary or singular fit was detected."
# }