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.
Documentation
Visit the documentation for the package:
- Getting started, from trial-level data to the three hypotheses.
- Bayesian estimation, priors, posterior summaries and Bayes factors.
- Planning a study, power analysis and the choice of subjects and trials.
- Reference, the help page of every function.
- Changelog, the changes in each release.
The CRAN release may have an older API.
Installation
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.
Example: Vadillo et al. data
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.
