Relative Measurement Uncertainty Reliability for the Hurdle PCM
Source:R/brms_hpcm.R
RMUreliability_hpcm.RdComputes posterior reliability via Relative Measurement Uncertainty
(Bignardi, Kievit & Bürkner, 2025) separately for each of the two
person traits in a hurdle partial credit model fitted with the
hurdle_acat custom family: the presence /
susceptibility trait \(\theta_{hurdle}\) and the severity trait
\(\theta_{pcm}\). Internally extracts per-submodel person draws
via person_parameters_hpcm and applies
RMUreliability to each.
Usage
RMUreliability_hpcm(
x,
item_var = item,
person_var = id,
level = 0.95,
verbose = FALSE,
center = TRUE
)Arguments
- x
Either:
a fitted
brmsfitobject using thehurdle_acatfamily, orthe result of
person_parameters_hpcm(model, draws = TRUE), i.e., a list with$hurdle$draws_matrixand$pcm$draws_matrix.
Passing a pre-computed
person_parameters_hpcm()result avoids re-extracting the posterior draws frombrms.- item_var
An unquoted variable name identifying the item grouping variable in the model data. Used only when
xis abrmsfit; ignored otherwise. Default isitem.- person_var
An unquoted variable name identifying the person grouping variable in the model data. Used only when
xis abrmsfit; ignored otherwise. Default isid.- level
Numeric in \((0, 1)\). Credibility level for the highest density continuous interval on each reliability. Default is
0.95.- verbose
Logical. If
TRUE, print the number of subjects and posterior draws used for each submodel. Default isFALSE.- center
Logical. If
TRUE(the default), use centered person draws (mean item parameter = 0 in each submodel). The centering shift is a constant per draw and does not affect the correlation across draw halves, so reliability is invariant to this choice; the argument is exposed only for consistency withperson_parameters_hpcm.
Value
A list with two elements:
hurdleA data frame with one row containing
rmu_estimate,hdci_lowerbound, andhdci_upperboundfor reliability of \(\theta_{hurdle}\), as returned byRMUreliability.pcmSame format, for reliability of \(\theta_{pcm}\).
Details
Two reliabilities, two traits. The hurdle PCM gives every person a posterior on \(\theta_{hurdle}\) (presence / susceptibility) and on \(\theta_{pcm}\) (severity given presence). Each posterior has its own measurement uncertainty, and the RMU framework therefore yields one reliability per trait. The two values address different questions: \(\theta_{hurdle}\) reliability is about how well the items rank persons by overall endorsement (a function of how many zeros appear and how discriminating the items are at the gate), while \(\theta_{pcm}\) reliability is about how well the conditional severity is recovered (a function of how many positive responses each person provides and how spread out the PCM thresholds are). Reporting both is necessary, as emphasised in Magnus and Garnier-Villarreal (2022, p. 277).
What about all-zero responders? For persons with \(Y = 0\) on every item, no items provide information about \(\theta_{pcm}\) directly. Their posterior on \(\theta_{pcm}\) is shaped by the multivariate-normal prior linking it to \(\theta_{hurdle}\) (and is therefore wide but well-defined). These persons still contribute to the RMU calculation; their contribution is appropriately downweighted through their large posterior variance.
Computational note. When x is a brmsfit,
this function calls person_parameters_hpcm(..., draws
= TRUE) internally, which extracts the full posterior draws of
the person random effects. For large models you may prefer to call
person_parameters_hpcm once and pass its result to
RMUreliability_hpcm, plot_targeting, etc.
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
Magnus, B. E. & Garnier-Villarreal, M. (2022). A multidimensional zero-inflated graded response model for ordinal symptom data. Psychological Methods, 27(2), 261-279. doi:10.1037/met0000395
See also
RMUreliability for the single-trait version,
person_parameters_hpcm for the underlying person
draws extraction.
Examples
if (FALSE) { # \dontrun{
# Fit a hurdle PCM with the hurdle_acat() family
fit <- brms::brm(
brms::bf(
response | brms::thres(gr = item) ~ 1 + (1 |g| id),
hu ~ 0 + factor(item) + (1 |g| id)
),
data = dat,
family = hurdle_acat(),
stanvars = hurdle_acat_stanvars()
)
# Option 1: pass the brmsfit directly
rel <- RMUreliability_hpcm(fit)
rel$hurdle
rel$pcm
# Option 2: reuse a cached person_parameters_hpcm() result
pp <- person_parameters_hpcm(fit, draws = TRUE)
rel <- RMUreliability_hpcm(pp)
} # }