Ranking Signal Detection Theory Model
Usage
sdt_ranking(response, m, dist = c("gumbel_min", "normal"), links = NULL, ...)Arguments
- response
A character vector of column names with the target rank-count columns, ordered from rank 1 (most likely target) to rank
m(least). With a constantm, supply exactlymcolumns; with a varying set size, supplymax(m)columns.- m
Either a single integer >= 2 giving the number of ranked items (constant across all rows), or a single string naming a data column that gives the number of ranked items per row.
- dist
Character. The distribution assumed for the latent evidence, given here by its cumulative distribution function:
"gumbel_min" (default): smallest extreme value, \(1 - \exp(-\exp(x))\) (complementary log-log). Closed form via gamma-function ratios.
"normal": Gaussian, \(\Phi(x)\) (supports unequal variance via
sdratio)
- links
A named list of link functions for the parameters. Only the link of
dcan be changed, and only fordist = "gumbel_min": withdist = "normal"the quadrature loses accuracy at the largeda log link reaches, sodkeeps the identity link.sdratioalways keeps the identity link.- ...
used internally for testing, ignore it
Details
Domain: Perception & Recognition Memory
Task: Ranking Task
Name: Signal Detection Theory (Ranking)
Citation:
Meyer-Grant, C. G., Kellen, D., Harding, S. M., & Singmann, H. (2026). Extreme-value signal detection theory for recognition memory: The parametric road not taken. Psychological Review. https://doi.org/10.1037/rev0000615
Requirements:
Provide pre-aggregated ranking counts in wide format:
Rank-count columns (response): one column per rank position, each giving the number of trials in which the target received that rank (column 1 = most likely target, column m = least)
Set size (m): a constant or a column giving the number of ranked items per row; rows with fewer ranks leave the surplus columns at 0 No stimulus column needed (all trials include exactly one target)
Parameters:
d: Sensitivity: d' under equal variance (g' for gumbel_min). When sdratio is estimated, d is d_a, the distance between the target and lure distributions in units of their root-mean-square SD
Fixed parameters:
Default parameter links:
d = identity
Default priors:
d:main: normal(1, 1)effects: normal(0, 0.5)sd: exponential(1)
Models the rank ordering of m items by perceived strength. Only d
is estimated (no criterion). Supports dist = "gumbel_min" (closed-form via
lgamma ratios) and dist = "normal" (Gauss-Hermite quadrature).
The model uses the native brms multinomial family: each rank position is a
multinomial category whose logit is set to log p(rank), so softmax
recovers the rank distribution exactly. This means log_lik,
posterior_predict, posterior_epred, and pp_check come from brms as
proper joint multinomial draws.
Sensitivity is on the same scale as sdt_yn()
d is \(d'\) whenever the target and lure distributions share an SD:
always for dist = "gumbel_min", where it is the \(g'\) of Meyer-Grant et
al. (2026), and for dist = "normal" unless you give sdratio a formula.
With sdratio estimated, d is the balanced index \(d_a\) that
sdt_yn() reports, the separation divided by the root-mean-square of the two
SDs; the noise-standardized separation is then
d * sqrt((1 + exp(sdratio)^2) / 2).
Ranking has no criterion, so \(d_a\) is not read off an ROC here. It is
adopted to keep d on the same scale across the SDT family, and it has a
direct meaning for rankings: it fixes the two-item accuracy at
\(\Phi(d/\sqrt{2})\) whatever sdratio is (see below).
Ranking is the one SDT design that identifies the variance ratio from a
single condition. The rank distribution supplies m - 1 free probabilities
per set size, so with m >= 3 there is enough information to separate d
from sdratio without the criterion sweep that sdt_yn() needs – the
shape of the rank distribution, not just its mean, carries the ratio.
At m = 2 the model reduces to 2AFC and the two parameters are no longer
separable: the probability of ranking the target first is the area under the
yes/no ROC, which for Gaussian noise is \(\Phi(d/\sqrt{2})\) whatever
sdratio is. Keep sdratio fixed for two-item designs.
For Gaussian ranking (dist = "normal"), sdratio is fixed to 0 by default.
Add sdratio ~ 1 to the formula for unequal-variance ranking.
The set size m may be a constant or the name of a data column. Supply a
column to fit trials with different set sizes in a single model: the response
has max(m) columns, and rows with a smaller set size switch off the surplus
rank categories (the multinomial then renormalizes over the valid ranks).
References
Meyer-Grant, C. G., Kellen, D., Harding, S. M., & Singmann, H. (2026). Extreme-value signal detection theory for recognition memory: The parametric road not taken. Psychological Review. Advance online publication. doi:10.1037/rev0000615
Examples
if (FALSE) { # \dontrun{
dat <- data.frame(id = 1:20)
dat <- cbind(dat, rsdt_ranking(20, 200, m = 4, d = 1.5))
model <- sdt_ranking(
response = c("rank1", "rank2", "rank3", "rank4"),
m = 4
)
fit <- bmm(
formula = bmf(d ~ 1),
data = dat,
model = model,
cores = 4,
backend = "cmdstanr"
)
# Mixed set sizes in one model: response has max(m) columns, m is a column
model_mixed <- sdt_ranking(
response = c("rank1", "rank2", "rank3", "rank4", "rank5"),
m = "set_size"
)
} # }
