Compute sensitivity and criterion from hit and false alarm
rates for different SDT distribution families. A single (hit, false alarm)
pair cannot identify the signal-to-noise SD ratio, so both quantities are
the equal-variance values; see sdt_yn() for the unequal-variance
model.
Arguments
- hit_rate
Numeric. Proportion of hits (P("old" | signal)).
- fa_rate
Numeric. Proportion of false alarms (P("old" | noise)).
- dist
Character. The distribution assumed for the latent evidence, given here by its cumulative distribution function:
"normal" (default): Gaussian, \(\Phi(x)\)
"gumbel_min": smallest extreme value, \(1 - \exp(-\exp(x))\) (the complementary log-log distribution)
"gumbel_max": largest extreme value, \(\exp(-\exp(-x))\) (the log-log distribution, as in
evd::pgumbel)"logistic": \(1 / (1 + \exp(-x))\)
Value
sdt_d returns the distance between the signal and noise
distributions on the latent evidence axis, obtained by inverting the
decision rule "respond old when the evidence exceeds the criterion":
\(Q(1 - FA) - Q(1 - H)\), where \(Q\) is the quantile function of
dist. For dist = "normal" this reduces to the familiar
\(d' = \Phi^{-1}(H) - \Phi^{-1}(FA)\). Because one operating point implies
equal variance, this matches the d parameter of sdt_yn() whenever
sdratio is at its default.
sdt_criterion returns the criterion (response bias) on the
centred, noise-standardized evidence axis used by sdt_yn(), where the
noise and signal distributions sit at -d'/2 and +d'/2:
\((Q(1 - FA) + Q(1 - H)) / 2\). For dist = "normal" this reduces to
the familiar \(-(\Phi^{-1}(H) + \Phi^{-1}(FA)) / 2\).
See also
sdt_yn(), whose d and criterion parameters these two functions
compute in closed form from observed rates: sdt_d() returns the same
quantity as the d parameter and sdt_criterion() the same quantity as
criterion, on the same axis, whenever sdratio is at its default.
Examples
# Compute d from hit and false alarm rates (Gaussian SDT)
sdt_d(hit_rate = 0.8, fa_rate = 0.2, dist = "normal")
#> [1] 1.683242
# The extreme-value analogue
sdt_d(hit_rate = 0.75, fa_rate = 0.25, dist = "gumbel_min")
#> [1] 1.572534
# Compute criterion from hit and false alarm rates
sdt_criterion(hit_rate = 0.8, fa_rate = 0.2, dist = "normal")
#> [1] 0
