Notes · methods
Extracting a crossover trial: why its conditions are not two arms
2026-07-10
It’s 11pm, the trial in front of you is a crossover (every participant received both the active condition and the control, in sequence), and the results table reports a mean and SD for each condition. Your meta-analysis wants an effect size and its standard error. The fastest move is to drop those two columns into your parallel-arm form as if they were two independent groups. It is also the single most common way a crossover gets extracted wrong.
Why the two conditions are not two arms
In a parallel trial, the two groups are different people, so the contrast between them carries the full between-person variance. A crossover measures the same person under both conditions. Each participant is their own control, and the two measurements are correlated: someone who scores high on the active condition tends to score high on the control too. That within-person correlation is the entire reason crossovers are efficient, and it lives in the variance of the difference, not in either per-condition SD.
Treating the conditions as parallel arms does two wrong things at once. It ignores the correlation, so it computes a variance that’s too large. And it double-counts the sample: 20 participants become 40 observations. The net effect: the trial’s precision is understated, its weight in the pool shrinks, and a real effect gets washed toward null. Cochrane Handbook ch. 23 (§23.2) is explicit that crossover analysis must be based on paired differences.
The paired-difference recovery, worked
Suppose the trial reports, for n = 20 participants, condition A mean 5.2, SD 1.8 and condition B mean 4.1, SD 1.9. The mean difference is easy:
MD = 5.2 − 4.1 = 1.1
The SD of the paired differences is what you actually need, and it requires the within-person correlation r (§23.2.7):
SD_diff = √(SD_A² + SD_B² − 2 × r × SD_A × SD_B)
With r = 0.5:
SD_diff = √(1.8² + 1.9² − 2 × 0.5 × 1.8 × 1.9)
= √(3.24 + 3.61 − 3.42)
= √3.43 = 1.852
Then the standard error of the mean difference uses n, the number of participants, not 2n:
SE = SD_diff / √n = 1.852 / √20 = 0.414
Compare the parallel-arm shortcut you were about to use:
SE_wrong = √(SD_A²/n + SD_B²/n) = √(3.24/20 + 3.61/20) = 0.585
That’s a 41% inflation of the standard error: the trial gets under-weighted by exactly the correlation you threw away.
The correlation you have to supply
The catch: crossover papers rarely report r. You cannot read it off the table, and it swings the answer more than any other input:
r = 0.3 → SD_diff = 2.190, SE = 0.490
r = 0.5 → SD_diff = 1.852, SE = 0.414
r = 0.7 → SD_diff = 1.436, SE = 0.321
The Handbook’s advice is to impute r (ideally from crossover trials in the same review that do report a paired analysis) and then run a sensitivity analysis across a plausible range. If any trial reports the paired result directly (a mean difference with its CI or SE, a paired t-statistic, or a paired-sample p-value), use it: those already embed the correlation, and you can back out SD_diff without imputing anything.
The audit-trail habit
Record three things for every crossover you extract: that the SE was derived via the paired-difference route, the value of r you assumed, and where it came from. “We recovered SE = 0.414 from per-condition SDs via Handbook §23.2.7, imputing r = 0.5 from the two trials reporting paired data” is a complete answer to the statistical reviewer who, two years from now, asks why this trial’s confidence interval looks the way it does. The imputed correlation is a modelling choice; the one unforgivable move is to make it silently. When the derivation and its assumed constant travel with the number, that question answers itself instead of reopening the extraction.