Which Test?

Paired t-test

Compares the mean of a measurement between two time points or conditions in the same patients, using each patient's difference.

Statistically reviewed by Daniel Wolff on 4 November 2026.

Clinical example

Systolic blood pressure measured in the same patients before and after starting a drug. Each patient contributes a pair of values. This design shows that the pressure changed, not that the drug caused the change: see common mistakes.

When to use it

  • The outcome is a continuous measurement taken twice in the same patients, or in matched pairs.
  • You want to know whether the mean of the within-patient differences is zero. In an uncontrolled before/after design, a change does not show that the treatment caused it.
  • You don't need to adjust for other variables.

Assumptions to check

Pairs are independent of each other

Each patient contributes one pair. Several pairs per patient need a mixed model.

The pairing is correct

Each value is matched to its own partner (the same patient, or the matched partner), and both measurements use the same unit and method.

Differences roughly normal, with no extreme outliers

Compute second minus first for each patient and look at a histogram or Q-Q plot of those differences. The raw values themselves need not be normal. With moderate sample sizes, mild skew is usually acceptable. With strong skew or few pairs, see the alternatives. A single extreme difference can distort the mean and SD.

No equal-variance assumption

Only the differences matter, so unlike the unpaired t-test there is no equal-variance assumption and Welch's correction does not apply.

What to report

  • Mean within-patient difference with 95% CI, and the direction of the difference (which time point minus which)
  • The number of pairs actually analyzed (incomplete pairs are dropped)
  • The SD of the differences
  • The t statistic, the degrees of freedom (n - 1) and the exact p-value, not just "p < 0.05"
  • That the test was two-sided
  • Mean and SD at each time point, computed on the same complete pairs

Common mistakes

Paired data need a paired test

Measurements in the same patient are related. An unpaired test ignores that and loses power, or gives the wrong answer.

Reporting only the p-value, without the mean difference and its 95% CI.

Reading a before/after change as a treatment effect without a control group. Regression to the mean, placebo effects and time trends all produce change. This matters especially when patients start a drug because their blood pressure was high.

Running a separate paired test in each arm and comparing the p-values ("significant in the drug group, not in placebo"). Compare the change between the arms directly, preferably with ANCOVA.

Using a paired t-test to show that two methods agree. A mean difference of zero says nothing about agreement in individual patients.

Checking normality of the raw values instead of the differences.

Silently dropping patients with one missing measurement without reporting how many.

Alternatives

If your situation is…Use
Differences skewed and the median difference is what matters. The sign test applies to the differencesSign test or Wilcoxon signed-rank test
Differences symmetric but with heavy tails or outliers, or an ordered scoreWilcoxon signed-rank test
Multiplicative effect, as with many lab values (analysis on the log scale, ratio of geometric means)Unpaired t-test on log-transformed data
Before and after in two groups, such as treatment and control: adjust the follow-up value for baseline, and don't run two paired testsANCOVA (adjusting for baseline)
Paired yes/no outcomeMcNemar test
Showing that two methods or devices agreeBland-Altman plot and ICC
Three or more measurements per patient, or adjustment for other variablesLinear mixed model

In your software

R
# R (second minus first)
# Use this x/y form: R 4.4+ no longer accepts paired = TRUE with a formula
t.test(trial$sbp_12wk, trial$sbp_baseline, paired = TRUE)
# a negative mean difference means blood pressure went down
sum(complete.cases(trial$sbp_12wk, trial$sbp_baseline))  # pairs analyzed
sd(trial$sbp_12wk - trial$sbp_baseline, na.rm = TRUE)    # SD of the differences
SPSS
* SPSS also prints a table of paired correlations. It is not the test result.
T-TEST PAIRS=sbp_12wk WITH sbp_baseline (PAIRED)
  /CRITERIA=CI(.95).

Sources

An interval without assuming normality

For skewed differences, when the mean difference itself is what you need, a bootstrap confidence interval for the mean difference assumes less than the t-test. It does not rescue a very small sample.