binary_SDT.Rd
Calculates d' and c parameter estimates for the Gaussian equal-variance Signal Detection Theory (SDT) model for binary data using the algebraic method. Also computes alternative metrics, including A', B, and B” (Stanislaw & Todorov, 1993).
binary_SDT(x, centered = T, correct = "none")
Either...
A vector of four values, the frequencies for hits and false alarms followed by the total number of observations for the associated signal and noise items, respectively;
A vector of two values, the proportion of hits and false alarms.
Logical; if TRUE
uses the
parameterization in which the signal and noise distributions
are equidistant from zero.
Type of correction to apply, either...
'none': No correction applied.
'log-linear': The log-linear
approach, adds 0.5
to the hits and false alarm
frequencies, then adds 1
to the total number of
observations for the signal and noise items respectively
(Hautus, 1995).
'conditional': The conditional approach, where
proportions equal to 0 or 1 are adjusted by 0.5/N
or (N-0.5)/N
respectively, with N
referring
the associated number of total observations for the given
proportion (Macmillan & Kaplan, 1985).
A named vector with five values:
d': The estimate of separation between the noise and signal distributions.
c: The estimate of response bias (the cut-off determining whether a response is 'signal' versus 'noise').
A': A non-parametric estimate of discrimination (however see Pastore, Crawley, Berens, & Skelly, 2003).
B: The ratio of whether people favor responding 'signal' over whether they favor responding 'noise'.
B'': A non-parametric estimate of B (however see Pastore et al., 2003).
The basic binary signal detection model assumes responses (correct identification of a signal during 'signal' trials and incorrect identification of a signal - a false alarm - during 'noise' trials) arise by classifying a latent continuous value sampled either from a 'signal' or 'noise' distribution. If the value is above a threshold, participants indicates there is a 'signal', otherwise they indicate it is 'noise'. Because the 'signal' and 'noise' distribution overlap, sometimes a value sampled from the 'noise' distribution will fall above the threshold and classified as a 'signal', and sometime a value sampled from the 'signal' distribution will fall below the threshold and be classified as 'noise'.
Assuming the distributions of evidence for 'signal' and 'noise' are Gaussian with their variances fixed to 1, their means fixed to 0.5(δ) and -0.5(δ) respectively, and a threshold parameter κ, one can solve for the parameters δ and κ given the proportion of hits H and false alarms FA:
κ = -0.5( Φ⁻¹(H) + Φ⁻¹(FA) ) and δ = 2( Φ⁻¹(H) + κ), where Φ⁻¹ is the inverse of the standard normal cumulative distribution function (see stats::qnorm).
Other parameterizations exist, but the benefit of this one is easier interpretation of κ, as a value of 0 indicates no bias in responding, values above zero indicate bias against responding 'noise' and values below zero indicate bias against responding 'signal'.
Hautus, M. J. (1995). Corrections for extreme proportions and their biasing effects on estimated values of d'. Behavior Research Methods Instruments, & Computers, 27(1), 46 - 51. DOI: 10.3758/BF03203619.
Macmillan, N. A. & Kaplan, H. L. (1985). Detection theory analysis of group data: Estimating sensitivity from average hit and false-alarm rates. Psychological Bulletin, 98(1), 185 - 199. DOI: 10.1037/0033-2909.98.1.185
Pastore, R. E., Crawley, E. J., Berens, M. S., & Skelly, M. A. (2003). "Nonparametric" A' and other modern misconceptions about signal detection theory. Psychonomic Bulletin & Review, 10(3), 556-569. DOI: 10.3758/BF03196517
Stanislaw, H. & Todorov, N. (1993). Calculation of signal detection theory measures. Behavior Research Methods, Instruments, & Computers, 31, 137 - 149. DOI: 10.3758/BF03207704
# Proportion of hits and false alarms
x <- c(.8, .2)
round( binary_SDT( x ), 3 )
#> d' c A' B B''
#> 1.683 0.000 0.375 1.000 0.000
# Frequency of hits, false alarms, signal trials, noise trials
x <- c(15, 2, 20, 20)
round( binary_SDT( x ), 3 )
#> d' c A' B B''
#> 1.956 0.304 0.397 1.811 0.351
# Cannot compute d' if 100% or 0% for hits or false alarms
x <- c(20, 0, 20, 20)
binary_SDT( x )
#> d' c A' B B''
#> NaN NaN 0.5 NaN NaN
# Corrections allow computation
round( binary_SDT( x, correct = 'log-linear' ), 3 )
#> d' c A' B B''
#> 3.962 0.000 0.488 1.000 0.000
round( binary_SDT( x, correct = 'conditional' ), 3 )
#> d' c A' B B''
#> 3.920 0.000 0.487 1.000 0.000