Pearson correlation
Measures how strongly two numeric measurements are related in a straight line, from −1 to 1.
Statistically reviewed by Daniel Wolff on 5 November 2026.
Clinical example
How strongly body mass index and systolic blood pressure move together in a group of patients. Age affects both, so to adjust for it you would move to linear regression.
When to use it
- You have two measurements per patient and want to know how strongly they move together.
- The relationship is a straight line on a scatter plot. For the CI and p-value, both variables should be roughly normal, and outliers matter more than normality.
- You describe an association. You are not showing that two methods give the same values.
- Correlation describes association only. For how much one variable changes per unit of the other, or to adjust for a confounder, use linear regression.
Assumptions to check
A straight-line relationship
Plot a scatter diagram first. A curve that keeps going one way (a monotone relationship) points to Spearman. A U-shaped or inverted-U relationship can leave both Pearson and Spearman near 0: use regression with a curved term, for example a spline.
Independent observations
One pair of values per patient. Several measurements per patient need repeated-measures correlation or a mixed model.
The full range of values
The sample should cover the full range of values you want to draw conclusions about (see range restriction under common mistakes).
What to report
- r with its 95% CI, and a scatter plot
- The number of complete pairs actually analyzed
- The exact p-value. It only tests whether r = 0, which is rarely the interesting question
Common mistakes
Correlation is not causation
A correlation shows that two measurements go together, not that one causes the other. A confounder such as age often drives both.
Correlation doesn't show agreement
Two methods can correlate perfectly and still disagree systematically. Use a Bland-Altman plot.
Plot the data before you report a correlation
A coefficient near 0 can hide a U-shaped relationship, and a single extreme patient can create or destroy a correlation. Look at the scatter plot.
Mind the range of your sample
A correlation depends on how spread out the sample is. Studying only hypertensive patients gives a lower coefficient for the same underlying relationship, so comparing correlations between studies with different populations is misleading.
Significant is not strong
With a large sample, a tiny correlation is significant. Report the coefficient with its 95% CI. The p-value only tests whether the coefficient is 0.
Don't pool different subgroups blindly
Pooling, for example men and women or two hospitals, can create or hide a correlation.
Don't correlate change with the baseline value
Regression to the mean builds in a negative correlation between the change and the starting value.
Repeated measurements aren't independent
Treating several measurements per patient as separate patients makes confidence intervals too narrow and p-values too small.
Alternatives
| If your situation is… | Use |
|---|---|
| Skewed or ordinal data, or a curve that keeps going one way (monotone) | Spearman rank correlation |
| You want the size of the change per unit, need to adjust for other variables, or the relationship is U-shaped (regression with a curved term) | Linear regression |
| Several measurements per patient (repeated-measures correlation, or a mixed model) | Linear mixed model |
| You actually want to show that two methods give the same values | Bland-Altman plot and ICC |
In your software
# R
plot(d$bmi, d$sbp) # always plot first
res <- cor.test(d$bmi, d$sbp, method = "pearson")
res # the estimate is r, and the 95% CI is for r (Fisher z)
sum(complete.cases(d$bmi, d$sbp)) # pairs analyzed: incomplete pairs are dropped silently
* Pearson Correlation is r, Sig. (2-tailed) is the p-value, and N is the number of pairs.
* NOSIG flags significant correlations with asterisks.
* The CI needs SPSS 27 or later. In older versions, calculate it by hand with Fisher z.
CORRELATIONS
/VARIABLES=bmi sbp
/PRINT=TWOTAIL NOSIG
/CI CILEVEL(95).