Computes three reliability indices for a Rasch / partial credit model:
the Person Separation Index (PSI) – WLE-based separation reliability – the
marginal reliability (native, CML test information integrated over the
estimated normal latent density), and Relative Measurement Uncertainty (RMU)
via RMUreliability() applied to plausible values from mirt::fscores().
Usage
RMreliability(
data,
conf_int = 0.95,
draws = 1000,
rmu_iter = 50,
estim = "WLE",
boot = FALSE,
boot_iter = 200,
parallel = TRUE,
n_cores = NULL,
seed = NULL,
verbose = FALSE,
theta_range = c(-10, 10),
output = "kable"
)Arguments
- data
A data.frame or matrix of item responses. Items must be scored starting at 0 (non-negative integers).
- conf_int
Numeric in (0, 1). HDCI width for both bootstrap CIs and RMU. Default
0.95.- draws
Integer. Number of plausible-value draws drawn from the mirt model for the RMU calculation. Default
1000. More gives a more stable RMU; computational cost is mostly linear.- rmu_iter
Integer. Number of times
RMUreliability()is repeated on the same set of plausible-value draws (each repetition uses a fresh random column split). Estimates are averaged across repetitions to stabilise against split-induced variability. Default50.- estim
Character. Theta estimator used by
mirt::fscores()for the RMU plausible-value seed. One of"WLE"(default),"EAP","MAP","ML". Plausible draws themselves are produced by Metropolis-Hastings. (PSI and marginal reliability are computed natively and do not use this.)- boot
Logical. If
TRUE, run a non-parametric bootstrap to obtain CIs for PSI and Marginal reliability. DefaultFALSE.- boot_iter
Integer. Number of bootstrap iterations when
boot = TRUE. Default200.- parallel
Logical. Use parallel processing via
miraifor the bootstrap if available. DefaultTRUE.- n_cores
Integer or
NULL. Number of parallel workers. WhenNULL,getOption("mc.cores")is checked first; if neither is set, bootstrapping falls back to sequential.- seed
Integer or
NULL. Master random seed for reproducibility. See easyRasch2-reproducibility for what this guarantees and how it interacts withparallel.- verbose
Logical. Print progress messages and a progress bar for the bootstrap. Default
FALSE.- theta_range
Numeric length-2 vector. Theta limits passed to
mirt::fscores(). Defaultc(-10, 10).- output
Character.
"kable"(default) for a formattedknitr::kable()table, or"dataframe"for the underlying data.frame.
Value
If
output = "kable": aknitr_kableobject with one row per metric.If
output = "dataframe": a data.frame with columnsmetric,estimate,lower,upper,notes.
Details
Confidence intervals for PSI and Marginal reliability are obtained
by non-parametric bootstrap (resampling respondents; all three indices are
recomputed natively per resample, no model is refitted by mirt). The RMU
interval is the HDCI of correlations across plausible-value draws, averaged
over rmu_iter random splits of the draws.
Marginal reliability is the latent-density-weighted mean of the conditional
reliability curve, \(\int \sigma^2/(\sigma^2 + 1/I(\theta))\,
g(\theta)\,d\theta\), where the test information \(I(\theta)\) is summed from
the CML item parameters and \(g\) is the estimated normal latent density
\(N(\mu, \sigma^2)\), both parameters coming from marginal ML with
the items held fixed. Integrating over the estimated latent distribution,
rather than the \(N(0,1)\) assumed by mirt::marginal_rxx(), keeps it
correct on the Rasch logit scale, where \(\sigma\) is typically well
above 1 and the \(N(0,1)\) assumption underestimates reliability.
Through version 1.3.0 \(\mu\) was held at 0 rather than estimated. That
is an assumption, not a consequence of centring the item thresholds, which
fixes the item mean and says nothing about where the respondents sit. A
normal density pinned to 0 can only reach an off-target sample by widening,
so \(\sigma\) absorbed the mistargeting and marginal reliability rose
as targeting worsened. See the note under Value in RMreliabilityCurve()
for the size of the effect.
It is the model-based complement to the sample-based PSI, and the two are now the same coefficient by two routes: PSI divides by the observed spread of the WLE estimates, marginal reliability by the fitted latent density. A large gap between them therefore does flag an off-target or non-normal sample, and since 1.3.1 both move in the same direction when targeting worsens rather than apart.
How this relates to the published coefficients. Three things are worth being explicit about, because the reported value is not any of the coefficients the literature names.
It is the mean of a curve, not a ratio of averages. The classical latent-scale reliability is a single variance ratio, \(\sigma^2/(\sigma^2 + \overline{SEM^2})\) (Milanzi et al., 2015, section 3.2, where the error variance is a constant). What is reported here averages the ratio over the latent density instead. Since \(\sigma^2/(\sigma^2 + x)\) is convex in \(x\), the mean of the curve is the larger of the two by Jensen's inequality. The choice was made on accuracy, not convention: averaging the curve tracked the exact expected-sum-score reliability more closely than the ratio of averages in both arms of an internal replication (mean absolute error 0.015 against 0.018 for binary data, 0.010 against 0.015 for polytomous).
It is a latent-scale quantity checked against a manifest criterion. Milanzi et al. (2015) argue that interest usually lies in the reliability of observed scores rather than latent ones, and that latent coefficients run consistently higher. This one was therefore validated against the exact expected-sum-score reliability, \(Var(\mu)/(Var(\mu) + Var(\epsilon))\), rather than assumed to match it, and tracked it to within about 0.02 across the conditions tested. It remains a latent-scale coefficient that approximates a manifest one, not a manifest coefficient.
Milanzi et al. recommend something this package does not implement. Their conclusion favours Taylor-series manifest reliability measures, which approximate \(Var(\mu)\) and \(Var(\epsilon)\) on the observed-score scale directly rather than working from test information. In the same internal replication those were the most accurate of the estimators compared (0.012). They are cited here for their criticism of the subtractive coefficient, which this package acted on, and not for their remedy, which it has not adopted.
The superseded subtractive coefficient is Milanzi et al.'s equation (12),
attributed there to Lord (1980), and is still available as the
marginal_green attribute of RMreliabilityCurve(). Through version 1.2.0 this row used Green's subtractive
\(1 - \overline{1/I(\theta)}/\sigma^2\) instead, under which much of the
PSI-to-marginal gap was an artefact of the differing formulas rather than a
property of the sample. See dev/TODO-reliability-form.md.
PSI is the WLE-based separation reliability,
\(1 - \overline{SEM^2} / \mathrm{Var}(\hat\theta)\), computed from CML item
thresholds (psychotools) and Warm's WLE person locations / analytic SEMs.
Respondents with extreme (min/max) raw scores are excluded – their boundary
estimates would inflate the person variance and overstate reliability.
(Earlier versions used eRm::SepRel() with MLE; the values can differ, most
noticeably for scales with many extreme scorers, e.g. dichotomous items.)
RMU is from Bignardi, Kievit, & Bürkner (2025), modified here to use mirt plausible values rather than fully Bayesian posterior draws (see Mislevy, 1991, for the plausible-values framework).
Marginal reliability here is the subtractive Green/Lord coefficient. Milanzi
et al. (2015) show that this form can fall below zero when the average error
variance exceeds the trait variance, which happens with few items or a
narrow sample, and it is floored at 0 above. RMreliabilityCurve() reports
the same quantity in the bounded ratio form alongside this one, so the two
can be compared directly. See dev/TODO-reliability-form.md for the open
question of which form this row should use.
Bootstrap iterations that fail to converge are silently dropped.
References
Bignardi, G., Kievit, R., & Bürkner, P. C. (2025). A general method for estimating reliability using Bayesian Measurement Uncertainty. PsyArXiv. doi:10.31234/osf.io/h54k8_v1
Green, B. F., Bock, R. D., Humphreys, L. G., Linn, R. L., & Reckase, M. D. (1984). Technical Guidelines for Assessing Computerized Adaptive Tests. Journal of Educational Measurement, 21(4), 347–360. doi:10.1111/j.1745-3984.1984.tb01039.x
Mislevy, R. J. (1991). Randomization-Based Inference about Latent Variables from Complex Samples. Psychometrika, 56(2), 177-196. doi:10.1007/BF02294457
Adams, R. J. (2005). Reliability as a measurement design effect. Studies in Educational Evaluation, 31(2), 162-172. doi:10.1016/j.stueduc.2005.05.008
Milanzi, E., Molenberghs, G., Alonso, A., Verbeke, G., & De Boeck, P. (2015). Reliability measures in item response theory: Manifest versus latent correlation functions. British Journal of Mathematical and Statistical Psychology, 68(1), 43-64. doi:10.1111/bmsp.12033
Examples
# \donttest{
if (requireNamespace("ggdist", quietly = TRUE) &&
requireNamespace("eRm", quietly = TRUE)) {
set.seed(1)
RMreliability(eRm::raschdat1[, 1:20], draws = 1000)
# Bootstrap CI for PSI and Marginal
# (use more bootstrap iterations, e.g. 200+, in real analyses)
RMreliability(eRm::raschdat1[, 1:20], draws = 1000,
boot = TRUE, boot_iter = 25, parallel = FALSE, seed = 42)
}
#>
#>
#> Table: Reliability for 20 items, n = 100 respondents. PSI is the WLE-based separation reliability and excludes min/max scoring respondents. Marginal is the latent-density-weighted mean of the conditional reliability curve, sigma^2 / (sigma^2 + SEM(theta)^2).
#>
#> |Metric | Estimate| Lower (95% HDCI)| Upper (95% HDCI)|Notes |
#> |:---------------------|--------:|----------------:|----------------:|:---------------------------|
#> |Cronbach's alpha | 0.754| 0.701| 0.813|25 bootstrap resamples |
#> |PSI | 0.725| 0.673| 0.768|25 bootstrap resamples |
#> |Marginal (curve mean) | 0.748| 0.699| 0.798|25 bootstrap resamples |
#> |RMU (WLE) | 0.753| 0.684| 0.817|1000 PVs, 50 RMU iterations |
# }