Fits hierarchical signal detection theory (SDT) models to paired awareness and influence measures in research on unconscious processing. Estimates mean sensitivities, their latent correlation and influence sensitivity at zero awareness sensitivity, using maximum likelihood with 'lme4' or Bayesian inference with 'brms'. Provides Bayes factors, equivalence tests, reliability estimates and study planning for power, precision and cost.

uSDT fits hierarchical signal detection theory models to paired awareness
and influence measures. It compares mean sensitivities, estimates their latent
association and tests influence sensitivity at zero awareness sensitivity.
It supports maximum likelihood and Bayesian estimation, Bayes factors and
study planning for power, precision, cost and detectable effects.
Visit the documentation for the package:
The CRAN release may have an older API.
Install the released version from CRAN:
install.packages("uSDT")
Or install the development version from GitHub:
# install.packages("pak")
pak::pak("RicardoReySaez/uSDT@dev")
The development version installs brms. Bayesian fitting also needs a C++
toolchain and either rstan with BH and RcppEigen, or cmdstanr with CmdStan.
The examples below require uSDT 0.2.0 or later.
The package includes the two trial-level data frames from Experiment 2 of
Vadillo et al. (2025): vadillo_awareness for the awareness task and
vadillo_cuing for the influence task.
library(uSDT)
data(vadillo_awareness)
data(vadillo_cuing)
d <- usdt_data_tasks(
awareness = vadillo_awareness,
influence = vadillo_cuing,
subject_col = "subj",
condition_col = "condition",
condition_levels = c(signal = "old", noise = "new"),
response_col = list(awareness = "judged.old", influence = "rt"),
response_levels = list(
awareness = c(signal = 1, noise = 0),
influence = c(signal = "faster", noise = "slower")
),
dichotomize = list(awareness = FALSE, influence = TRUE)
)
fit <- hsdt(d)
summary(fit)
# The same model with brms, and Bayes factors for the three hypotheses
fit_bayes <- hsdt(d, estimation = "bayesian")
summary(fit_bayes)
usdt_bf(fit_bayes)
Column, level and format arguments take a shared value or task-specific values
as list(awareness = ..., influence = ...).
The source data are from Vadillo, Malejka, and Shanks (2025), Mapping the reliability multiverse of contextual cuing, doi:10.1037/xlm0001410.