# Pre-registered plan: do antidepressants increase serious suicidal events in placebo-controlled trials that posted results to ClinicalTrials.gov?

## Question

Whether antidepressants raise the risk of suicidal behaviour in adults is still disputed. The United States Food and Drug Administration (FDA) pooled 372 placebo-controlled trials (99,231 adults) from drug development programmes. It found that the risk of suicidal behaviour or ideation depended on age: odds ratio 1.62 (95% CI 0.97 to 2.71) under 25, 0.79 (0.64 to 0.98) at 25 to 64, and 0.37 (0.18 to 0.76) at 65 or over. For suicidal behaviour alone the odds ratios were 2.30 (1.04 to 5.09), 0.87 (0.58 to 1.29) and 0.06 (0.01 to 0.58), and they fell by 4.6% per year of age (Stone et al., BMJ 2009;339:b2880). In 24 pediatric trials the FDA found a risk ratio for suicidality of 1.95 (1.28 to 2.98) (Hammad et al., Arch Gen Psychiatry 2006;63:332–339). These analyses are the basis of the boxed warning for people under 25.

Later re-analyses of FDA summary data on newer antidepressants disagree about adults:

- Hengartner and Plöderl (Psychother Psychosom 2019;88:247–248) pooled events and found an odds ratio of 2.38 (1.63 to 3.61) for suicide attempts and 2.83 (1.13 to 9.67) for suicides.
- Kaminski and Bschor (J Affect Disord 2020;266:95–99) analysed the same data with the Mantel–Haenszel method and found 1.63 (1.09 to 2.43) for attempts and 1.98 (0.71 to 5.50) for suicides.
- Hayes and colleagues (Psychother Psychosom 2019;88:371–372) found no statistical evidence of increased suicide.
- Khan and colleagues, measuring exposure in patient-years, found no difference.

All of these rest on data that sponsors submitted to the FDA, mostly before 2008.

Since 2008, trials of drugs regulated in the United States have posted their results to ClinicalTrials.gov. This includes every serious adverse event (death, a life-threatening event, hospitalization or its prolongation, lasting disability), by arm and by MedDRA term. Those posted tables are a source of randomized evidence independent of the data behind the analyses above.

**Questions.**

1. **Co-primary.** In adult trials that randomized participants to an antidepressant or placebo from the start, how does the risk differ between the two:
   - of serious suicidal behaviour (completed suicide, suicide attempt, intentional self-harm, intentional overdose) (**P1**);
   - and of any serious suicidality, behaviour or ideation (**P2**)?
2. Where do those estimates sit against the earlier ones?
3. **Secondary.** What do the trials show:
   - for serious suicidal ideation, completed suicide, and suicidal behaviour counting overdoses of unstated intent;
   - by indication, in trials of older adults, in trials completed after 2017, and by drug class;
   - with combination products, in randomized-withdrawal trials, and in pediatric trials, against the FDA's pediatric estimate?
4. **Age.** Does the effect change with the trials' mean age, as the FDA found by participant?

## Data

We searched ClinicalTrials.gov's API (version 2.0.5, data as of 2026-10-09) on 2026-10-13. Each search used `query.intr=<term>` with `aggFilters=results:with,studyType:int`, for 39 antidepressant names (`data/search.json`), and found 932 interventional studies with posted results. Each study's full record is in `data/ctgov/<NCT>.json`, byte for byte as the API returned it. ClinicalTrials.gov is a United States Government database in which the National Library of Medicine asserts no proprietary rights.

## Eligible trials

1. **By the record's structured fields:** randomized allocation, a parallel or factorial design, and at least two adverse-event groups. This keeps 639 of the 932 (203 not randomized, 68 crossover, 10 single group, 9 sequential, 3 with fewer than two adverse-event groups).
2. **By two coders, under `screening_codebook.md`.** The coders decided:
   - which adverse-event groups compare an antidepressant with placebo with nothing else different (pooling doses and antidepressants; one comparison per background in factorial or multi-background trials; combination products marked);
   - the molecules;
   - the design (`acute`, `randomized_withdrawal`, or `other`);
   - and the indication (`depressive`, `other_psychiatric`, or `non_psychiatric`).

   The coders were separate instances of Claude Opus 5.5, each working alone, with its own scratch folder. Each saw only the trials' titles, conditions, eligible ages, arms, interventions, and adverse-event group titles and descriptions, with no counts. A third instance, given the codebook, the record and both codings, decided the 11 trials on which the coders differed. Its reasons are recorded.

   The coders agreed on eligibility for 635 of the 639 trials (kappa 0.987). Of the 398 both found eligible, they gave identical comparisons for 395, the same design for 397, and the same indication for 396. After the third reader's decisions, 398 trials are eligible, and 393 have comparisons whose groups have participants at risk.

   A first launch of the screeners was stopped before any coding had been written, and the screening was run afresh.
3. **By the record's structured fields again:**
   - **age group** from the eligible ages: `pediatric` (all under 18), `older` (all 60 or over), `adult` (all 18 or over), or `mixed`;
   - **mean age** from the posted baseline "Age, Continuous" (the total group's mean, else the participant-weighted mean of the groups', else the median);
   - **completion date** (primary completion date, else study completion date).

Comparisons of design `other` enter no analysis.

## Outcomes and counting

**Terms to outcomes.** Every distinct adverse-event term in the 639 trials, serious or not (4,029 after collapsing spaces and case), was coded to the outcomes it meets under `outcome_codebook.md`, by two coders working alone with only the terms, their organ systems and tables:

- S1, suicidal behaviour;
- S2, suicidal ideation;
- S4, completed suicide;
- S5, overdose of unstated intent;
- C1, nausea.

They gave identical outcome sets to 4,028 terms (kappa 0.995). A third reader decided the 10 terms on which they differed, 9 of them only in the preferred term. The decided coding is `data/term_coding.json`.

**Outcomes** (`data/outcomes.json`):

| Outcome | Definition | Table |
|---|---|---|
| S1 | Serious suicidal behaviour | serious |
| S2 | Serious suicidal ideation | serious |
| S3 | Any serious suicidality (S1 or S2 terms) | serious |
| S4 | Completed suicide | serious |
| S15 | Suicidal behaviour or overdose of unstated intent | serious |
| C1 | Nausea | non-serious |

Death from any cause comes from the groups' death counts, where every group in a comparison reports them; any serious adverse event comes from the groups' counts of participants with one.

**Counts.** For each comparison and arm, an outcome's count is the sum over its terms of participants affected, capped at those at risk. A participant with two of an outcome's terms counts twice. Serious outcomes are counted in every comparison, since a serious table lists every serious event. Nausea is counted only in comparisons whose non-serious table lists a nausea term, because that table omits terms below its frequency threshold.

## Estimates

- **Primary estimate:** the Mantel–Haenszel risk ratio, stratified by comparison, with the Greenland–Robins variance, a 95% interval and a two-sided Wald p. Comparisons with no events add nothing.
- **Testing:** an analysis with fewer than 10 participants affected is reported but not tested.
- **Multiplicity:** the co-primary p-values are Holm-adjusted across the two; the secondary analyses are Benjamini–Hochberg-adjusted across their family.
- **Sensitivity analyses**, for every tested analysis:
  - Peto's odds ratio;
  - random effects (DerSimonian–Laird on log risk ratios, 0.5 added to every cell of a comparison with a zero cell);
  - the outcome's most frequent preferred term alone;
  - a conservative variance, multiplied by the outcome's overlap bound (its count divided by the sum over comparisons of its largest preferred term, blind to arm, capped at the overcount of serious events as a whole);
  - leave one trial out;
  - two halves of the trials, paired by size with one of each pair drawn by `numpy.random.default_rng(20261013)`.
- **Robust:** p < 0.05, and p < 0.05 with the conservative variance, under random effects, and with every single trial left out.
- **Age (G1, G2):** a Peto meta-regression across all acute comparisons with events and a known mean age (pediatric, mixed, adult and older). It is a weighted regression of each comparison's (O − E)/V on its mean age, with weights V, giving the change in the log odds ratio per year of age and its 95% interval.
- **Checks of the data (K1 to K3):** nausea is expected to be more frequent on antidepressants (p < 0.05). If it is not, the paper says so and treats every estimate as suspect. Death from any cause and any serious adverse event are reported.

## Against earlier estimates

For each analysis, `data/analyses.json` names the earlier estimates it is set against, and `data/parameters.json` their values:

| Earlier estimate | Value | Set against |
|---|---|---|
| Hengartner and Plöderl, suicide attempts | 2.38 | behaviour analyses |
| Kaminski and Bschor, suicide attempts | 1.63 | behaviour analyses and P2 |
| FDA, suicidal behaviour at 25 to 64 | 0.87 | behaviour analyses |
| FDA, suicidality at 25 to 64 | 0.79 | P2 |
| FDA, under 25 (behaviour; suicidality) | 2.30; 1.62 | pediatric and mixed-age analyses |
| Hammad and colleagues, pediatric suicidality | 1.95 | pediatric suicidality |

An estimate is reported as:
- an **increase** if its 95% interval lies above 1;
- a **decrease** if it lies below 1;
- **excluding** an earlier estimate if that value lies outside the interval.

A risk ratio and an odds ratio are close for events this rare, which is how they are compared.

## Power (`power.json`, blind to arm)

- **P1:** 306 trials, 322 comparisons, 71,643 participants, and 65 with serious suicidal behaviour. A two-sided 5% test has power 0.94 to detect a risk ratio of 2.38 and 0.50 to detect 1.63.
- **P2:** 125 participants affected; power 0.78 for 1.63.
- **Pediatric suicidality:** 30 trials and 46 participants affected; power 0.62 for 1.95.
- **Completed suicide:** 7 participants affected, too few to test.
- **Other analyses:** several secondary analyses (bupropion, older adults, other psychiatric and non-psychiatric indications, randomized withdrawal, mixed ages) have too few events to test.
- **Age regressions:** 51 comparisons (G1) and 73 (G2) with events and a known mean age, from 9.3 to 60.8 years.

## What was seen before this plan was registered

- The FDA analyses and their re-analyses, as summarized above, and the published literature on the question.
- The number of studies with posted results naming each antidepressant, and how many of them were randomized with a placebo-comparator arm, counted from structured fields with no outcome data.
- Counts pooled over both arms: participants affected per outcome and per analysis, for the power calculations. No count by arm was computed or looked at.
- The format of the posted baseline age measure, read from a few records.
- The analysis code was written and tested with each comparison's arms swapped at random (`code/analyze.py --blind`). Results under that swap say nothing about the drugs.

## Files

- `plan.md`, `screening_codebook.md`, `outcome_codebook.md`: this plan and the codebooks.
- `coding/`: both screenings, both term codings, the third reader's decisions with reasons, the terms as coded, and the agreement.
- `data/`: what the analysis reads, as registered: `screening.json`, `term_coding.json`, `outcomes.json`, `analyses.json`, `molecules.json`, `parameters.json`, `search.json`.
- `ctgov_digests.json`: the SHA-256 of each of the 932 records.
- `code/`: the analysis (`analyze.py`), its command (`run`), and `requirements.txt` (Python 3.12, NumPy 2.5.3, SciPy 1.18.1).
- `power.json`: what the blinded run gave that doesn't depend on which arm is which.

## Deviations

Any departure from this plan will be listed in the bundle's `deviations.json` with its reason.
