Signal Detection Theory
A radiologist stares at a chest X-ray. Somewhere in the gray there is either a tumor or nothing, and the image refuses to say which: diseased tissue sometimes photographs clean, healthy tissue sometimes looks suspicious. Signal detection theory is the statistics of decisions made on evidence that overlaps like that. Its gift to research is a clean separation between two things every raw accuracy score blurs together: how well the observer can tell the two worlds apart (sensitivity), and how willing they are to say “yes” (response bias).
One question, four outcomes
The basic experiment could not be simpler. On every trial something is either there (signal) or not (noise), the observer answers yes or no, and each trial lands in one of four cells. A yes to a real signal is a hit; a no is a miss. A yes when nothing was there is a false alarm; a no is a correct rejection. If that table feels familiar, it should: it is the same 2×2 you met as the confusion matrix, with a human playing the role of the classifier.
Because each row must sum to 100%, the whole table boils down to two independent numbers: the hit rate H (the share of signal trials answered yes) and the false-alarm rate FA (the share of noise trials answered yes). And two numbers is one more than a percent-correct score keeps. That lost number is the interesting one. An observer who answers yes on every single trial earns a perfect 100% hit rate, alongside a 100% false-alarm rate; they detected nothing at all. Accuracy alone cannot tell that strategy apart from skill.
Two bells and one line
The model behind the theory is almost drawably simple. Every trial produces an internal evidence value in the observer's head: how tumor-ish the X-ray looks, how word-like the memory feels. Noise trials generate evidence scattered around a low average; signal trials generate evidence from the same bell shifted to the right. The distance between the two bells, measured in standard deviation units, is d′ (“d-prime”): the observer's sensitivity. Far-apart bells mean the two worlds rarely produce confusable evidence; overlapping bells mean frequent confusion no strategy can remove.
The observer's decision rule is a single vertical line, the criterion: answer yes whenever the evidence lands to its right. Placed low (to the left), the rule is liberal, producing many hits and many false alarms; placed high, it is conservative, producing few of both. The statistic c measures that placement as the distance from the neutral point halfway between the bells, so c = 0 is unbiased, positive is conservative, negative is liberal.
Everything is computed with the z-scores you already know. Convert the two observed rates into normal quantiles and both parameters fall out:
d′ = z(H) − z(FA) c = −[z(H) + z(FA)] / 2
A third index, β = ec·d′, expresses the same bias as a likelihood ratio: how many times more probable the evidence at the criterion must be under signal than under noise before the observer commits to yes. Play with all of it below.
🎛️ The signal detection playground
Top: the noise and signal + noise evidence distributions. Drag the criterion line sideways (or focus the chart and use ← →); everything to its right gets a “yes.” The four shaded regions, the 2×2 grid, and the ROC point all follow. Sweep rides the criterion across the whole axis to trace the ROC curve.
present
only
Skill or strategy: two ways to get more hits
The playground makes the central lesson physical. There are exactly two ways to raise a hit rate. Pull the bells apart (raise d′), and hits climb while false alarms fall: the observer genuinely distinguishes better. Or slide the criterion left (lower c), and hits climb while false alarms climb with them: nothing about the perception improved, only the willingness to commit. Only the first is skill. A memory drug that “improves recognition by 10%” has shown nothing until the false-alarm rate is on the table too.
Neither parameter is more “real” than the other, though. Criterion placement is where costs, rewards, and base rates enter the decision. A smoke detector is engineered to be extremely liberal, because a false alarm costs a minute of annoyance while a miss costs a house. A criminal jury is instructed to be conservative for the mirror-image reason. Airport screeners, spam filters, and drowsy radiologists all live at some chosen point on this trade-off, and signal detection theory is the language for saying where, separately from how good they are.
Where the criterion should sit
Costs, rewards and base rates determine the criterion exactly. The optimal policy is to answer yes whenever the evidence is more likely under signal than under noise by some constant factor, and that factor is the β above:
βopt = [P(noise) / P(signal)] × [cost of a false alarm / cost of a miss]
Rare signals push β up, because most yeses would be wrong anyway; expensive misses push it down. In the criterion units the playground uses, copt = ln(βopt) / d′, which is worth setting on the sliders above at their default d′ = 1.5. Equally common signal and noise trials with equally costly errors give βopt = 1 and copt = 0, the slider's home position. Make signal trials rare, one in ten, and βopt = 9 lifts the ideal criterion to c = +1.46, where hits fall to 24% and false alarms to 1.3%. That looks lazy until you remember that at a 10% base rate a neutral observer's yeses are wrong more often than not. A smoke alarm sits at the other extreme: if a miss costs twenty times a false alarm, βopt = .05 and copt = −2.00.
The instructive case is the one where both forces pull at once. In a screening program where 5 people in 1,000 carry the disease and a missed case costs a hundred times a needless recall, the base-rate term (199) and the cost term (1/100) very nearly cancel: βopt = 1.99, copt = +0.46, a hit rate of 61% and a false-alarm rate of 11%. Neither of those two numbers looks defensible by itself, and both fall out of one line of arithmetic. It is the prior-odds-times-likelihood-ratio move from Bayesian thinking, with a yes/no decision on the end of it.
Sweep the criterion and you draw the ROC
Every criterion placement yields one (false-alarm rate, hit rate) pair: a single point in the square panel above. Sliding the criterion across the whole evidence axis drags that point along a curve, from the ultra-conservative corner (never say yes: 0, 0) to the ultra-liberal one (always say yes: 1, 1). That curve is the receiver operating characteristic, and the “receiver” in the name is a 1950s radar operator judging blips, which is where this theory was born. The ROC curve you met in the ML course is the identical object with a model's score threshold standing in for the observer's criterion.
The curve's shape depends on d′ alone. Moving the criterion slides the operating point along the curve; only a change in sensitivity lifts the whole curve toward the top-left corner. That makes ROC area the bias-proof summary of performance: for the equal-variance model, AUC = Φ(d′/√2), so d′ = 1 gives 0.76 and d′ = 2 gives 0.92, the same numbers the ML lesson reports for its separation slider. Memory researchers exploit this daily: asking participants for confidence ratings instead of a bare yes/no yields several criteria at once, an empirical ROC, and a sensitivity estimate no criterion shift can fake.
🕹️ Be the detector
Twenty quick trials. Each shows one evidence reading drawn from the model above at d′ = 1.5, half the trials signal and half noise, shuffled. Decide where your criterion sits and call each one; your own hits and false alarms then give your measured d′ and c.
From counts to d′
Real data arrive as four counts, and the arithmetic is two z-transforms long. Say a recognition-memory test used 20 old and 20 new words, and a participant produced 15 hits and 4 false alarms. Then H = .75 and FA = .20, so z(.75) = 0.674 and z(.20) = −0.842 (the site's z, t, χ² and F tables will hand you either one), giving d′ = 0.674 − (−0.842) = 1.52 and c = −(0.674 − 0.842)/2 = 0.08: solid discrimination, close to neutral bias. The “Try it yourself” box below runs the same four lines in R or Python.
The 0-and-1 problem. A perfect hit rate or a zero false-alarm rate breaks the formula, because z(0) and z(1) are infinite. The standard fixes nudge the extreme proportions inward, and this lesson (including the game above) uses the log-linear rule: add 0.5 to every count and 1 to every trial total before converting, for all participants, extreme or not. The common alternative, the 1/(2N) rule, replaces only the offending 0s and 1s. Either is respectable; applying one consistently and saying so in your methods section is what matters.
When the two bells are not the same width
All of the above assumes the two evidence distributions have the same spread, which is what lets a single d′ stand for sensitivity. Memory data have disagreed with that assumption for decades. The way to check it is the zROC: take the several (false-alarm rate, hit rate) pairs a confidence-rating experiment gives you, convert both to z-scores, and plot z(H) against z(FA). Equal variance predicts a straight line of slope 1. Old/new recognition studies keep returning a slope nearer 0.8, which says the studied-item distribution is about 1.25 times wider than the new-item one. That is not mysterious: studied items differ in how well they were learned, while unstudied items have nothing to differ in.
A slope other than 1 has an uncomfortable consequence. Plain d′ = z(H) − z(FA) stops describing the observer and starts describing the observer plus their criterion. Put the signal distribution at 1.5 with an SD of 1.25 against standard-normal noise, giving a zROC of slope .80 and intercept 1.20, and read the usual statistics off at six criterion placements:
| Criterion | Hit rate | False alarms | Plain d′ | c |
|---|---|---|---|---|
| liberal | 94.5% | 69.1% | 1.10 | −1.05 |
| 88.5% | 50.0% | 1.20 | −0.60 | |
| 78.8% | 30.9% | 1.30 | −0.15 | |
| 65.5% | 15.9% | 1.40 | +0.30 | |
| 50.0% | 6.7% | 1.50 | +0.75 | |
| conservative | 34.5% | 2.3% | 1.60 | +1.20 |
One observer, one true sensitivity, six different answers, and the only thing that changed was how willing they were to say yes. Two groups that differ in criterion will therefore look as though they differ in sensitivity, which is the confound d′ exists to remove.
Fixing it takes more than one point on the ROC, which is the practical reason confidence ratings are worth collecting. Given the whole zROC, the summary that survives unequal variance is da, the separation divided by the root-mean-square of the two spreads:
da = (μS − μN) / √[(σN² + σS²) / 2]
For the observer in the table that is 1.33, with an area Az = Φ(da/√2) = .826, where Φ (phi) is the normal CDF, that a Monte Carlo of forty million trial pairs reproduces to four decimals. The six equal-variance readings above would have claimed areas anywhere from .782 to .871 for that same curve. So check the zROC slope before you quote a d′, and when it is not close to 1, report da or Az and name which.
Beyond the lab, the same two-number logic runs through recognition-memory experiments (old/new judgments), audiology and vision screening, radiologists' diagnostic performance, eyewitness lineups, and quality inspection. And it connects straight back to the previous lesson: the cumulative-Gaussian psychometric function is what a signal detection observer traces as the stimulus itself grows stronger. Section 4.11 fits the response curve; this lesson is the decision theory underneath it.
Why it matters: whenever a person or a model makes yes/no calls on ambiguous evidence, percent correct hides the strategy inside the skill. Reporting d′ and c (or an ROC and its area) keeps the two honest and separable: a training program that truly sharpens perception, and one that merely coaches people to say yes more often, produce identical hit rates and completely different signal detection profiles.
Problem 33 of the practice problems computes d′, c, β and AUC from raw hit and false-alarm counts, including the participant who scored worse on percent correct while being the more sensitive observer.
Common questions
What is a good d′ value?
Zero means the observer cannot tell signal from noise at all, and values grow without a fixed ceiling. Useful anchors come from the ROC identity AUC = Φ(d′/√2): d′ = 1 corresponds to getting a two-alternative comparison right about 76% of the time, d′ = 2 about 92%, and beyond 3 performance is so close to perfect that hit and false-alarm rates start saturating at 0 and 1, where the estimate itself turns fragile. What counts as good is task-dependent. A d′ of 1 is respectable for faint stimuli near threshold and alarming for a tumor-versus-clean judgment.
My task was two-alternative forced choice, not yes/no. Does d′ still work?
Forced choice needs a different formula and hands back a cleaner number. The observer compares two intervals and picks one, so there is no yes/no line to place and whatever interval bias survives is usually small, which makes proportion correct close to a pure sensitivity measure on its own. Convert it with d′ = √2 · z(Pc): 76% correct is d′ = 1 and 92% is d′ = 2, the same two anchors as the AUC identity, because it is the same formula. What the conversion does not license is mixing designs. A 2AFC d′ and a yes/no d′ from the same observer are estimates of the same underlying sensitivity but they come from different tasks and different amounts of measurement noise, so name the design beside the number instead of pooling the two.
What should I do when a hit or false-alarm rate is exactly 0 or 1?
The z-transform sends those proportions to infinity, so d′ cannot be computed from them directly. Two standard corrections exist. The log-linear rule adds 0.5 to every count and 1 to every trial total before converting — applied to all observers, not just the extreme ones. The 1/(2N) rule instead replaces only the offending rates, with 1/(2N) standing in for 0 and 1 − 1/(2N) for 1. Both shrink extreme estimates toward the middle; the log-linear version is less biased in simulations and is what this lesson uses. Whichever you pick, apply it uniformly and name it in your methods section.