Written and maintained by CASRAI Editorial Board
Last updated
A strong positive correlation means two quantitative variables rise together in a tight, close-to-straight pattern: when one is above its average, the other almost always is too. In Pearson’s r terms, it is a coefficient close to +1. This guide gives the definition, the arithmetic for a worked positive example, a table for reading strong against weak and positive against negative, and tested one-line code for Excel, R and Python.
What is a strong positive correlation?
A strong positive correlation is a Pearson correlation coefficient (r) near +1: the points on a scatterplot hug an upward-sloping line. Two things are packed into r. The sign gives the direction (positive: as x grows, y tends to grow). The absolute value |r| gives the strength. The SciPy documentation puts it this way: r varies between −1 and +1, 0 implies no correlation, and −1 or +1 imply an exact linear relationship.
No single cutoff for “strong” comes from a standards body. The most-quoted benchmarks are Jacob Cohen’s conventions (Statistical Power Analysis for the Behavioral Sciences, 2nd ed., 1988): |r| of about .10 is small, .30 medium and .50 large. Cohen himself advised against applying them rigidly, so what counts as strong depends on the field. Many textbook tables use stricter bands, which is why two sources can label the same r differently.
Formula, with every symbol explained
Pearson’s r is the covariance of x and y divided by the product of their standard deviations. In sums of squares form:
r = Sxy / √(Sxx × Syy)
- Sxy = Σ(x − x̄)(y − ȳ), the sum of products of deviations from each mean.
- Sxx = Σ(x − x̄)² and Syy = Σ(y − ȳ)², the sums of squared deviations.
- x̄, ȳ are the sample means; n is the number of paired observations.
For a step-by-step treatment of the formula, see formula for correlation analysis.
Worked example with the arithmetic shown
The data below are invented for illustration (not from a real study): weekly practice hours (x) and a skills-check score (y) for seven trainees.
| Trainee | x (hours) | y (score) |
|---|---|---|
| 1 | 2 | 52 |
| 2 | 4 | 58 |
| 3 | 5 | 55 |
| 4 | 7 | 66 |
| 5 | 8 | 70 |
| 6 | 10 | 74 |
| 7 | 12 | 81 |
- Sums: Σx = 48, Σy = 456, so x̄ = 48/7 = 6.857 and ȳ = 456/7 = 65.143.
- Σx² = 402, so Sxx = 402 − 48²/7 = 402 − 329.143 = 72.857.
- Σy² = 30,386, so Syy = 30,386 − 456²/7 = 30,386 − 29,705.143 = 680.857.
- Σxy = 3,345, so Sxy = 3,345 − (48 × 456)/7 = 3,345 − 3,126.857 = 218.143.
- r = 218.143 / √(72.857 × 680.857) = 218.143 / 222.72 = .979, reported as r = .98.
- Shared variance: r² = .96. With n − 2 = 5 degrees of freedom the two-sided p-value is about .0001.
The 95% confidence interval from the Fisher transformation (SciPy’s default) is roughly .86 to .997. With only seven pairs, the interval is wide even though r is very high.
Strong vs weak correlation: how to read r
Strength depends only on |r|. The table below applies Cohen’s conventions as a reading guide, not a verdict.
| r | Direction | Reading under Cohen’s conventions |
|---|---|---|
| +.98 | Positive | Large (the worked example) |
| −.98 | Negative | Large: same strength, opposite direction |
| +.50 | Positive | Large, at the benchmark |
| +.30 | Positive | Medium |
| +.10 | Positive | Small |
| 0 | None | No linear correlation |
Strong or weak correlation: which relationship is strongest?
The strongest linear association is the one with the largest |r|, ignoring the sign. Given r = +.62, −.91, +.85 and +.10, the strongest relationship is −.91, a strong negative correlation, and the weakest is +.10. If a question asks which set of data has the strongest linear association, compare absolute values, then check the scatterplot.
Strong positive vs strong negative correlation
Both are equally strong at the same |r|. A strong positive correlation slopes up (more of one, more of the other). A strong negative one slopes down; see negative correlation scatter plot for that case. Whether you ask about strong or weak, strong vs weak or weak vs strong correlation, the answer comes down to |r| alone. For what a pattern with no relationship looks like, see no correlation examples, and for reading the plot itself, scatterplot interpretation.
Assumptions and common mistakes
- Strong does not mean causal. A third variable, reverse direction or chance can produce r = +.98. See correlation vs causation.
- One outlier can manufacture a strong r. Take eight pairs with x = 1, 2, 3, 4, 5, 6, 7, 20 and y = 5, 3, 6, 4, 5, 3, 6, 30. The first seven pairs give r = .12 (no pattern). Add the eighth and r jumps to .94 (p ≈ .0005). Always plot the data first.
- Pearson’s r measures linear association only. A strong curve can produce a modest r. SciPy also notes that no correlation does not imply independence unless (x, y) is jointly normal.
- The p-value depends on n. With few pairs a high r is imprecise; with many pairs a tiny r can be significant. SciPy’s p-value assumes the underlying distributions are uncorrelated and normally distributed. For ranks or non-normal data, use Spearman (how to calculate Spearman correlation).
- r = .5 is not “50%”. The share of variance explained is r² (.25 here).
How to report it
A typical write-up gives the direction, the strength word, r with its degrees of freedom (n − 2) and the p-value. For the worked example: “There was a strong positive correlation between weekly practice hours and skills-check score, r(5) = .98, p < .001.” Add the confidence interval when you can: 95% CI [.86, 1.00]. Check your journal or course style guide for its exact formatting rules.
How to calculate it in Excel, R or Python
Excel
=CORREL(B2:B8, C2:C8) returns r. Per Microsoft Support, text, logical values and empty cells are ignored, arrays of different lengths return #N/A, and empty arrays or zero standard deviation return #DIV/0!.
R
cor.test(x, y, method = "pearson", conf.level = 0.95) with x <- c(2,4,5,7,8,10,12); y <- c(52,58,55,66,70,74,81) gives r, the t statistic on n − 2 degrees of freedom, p and a confidence interval. R documents that the Pearson interval needs at least 4 complete pairs.
Python
from scipy.stats import pearsonr; res = pearsonr(x, y); res.statistic, res.pvalue, res.confidence_interval() returns r = 0.979, p ≈ 0.0001 and the interval above.
FAQ
What is a strong positive correlation?
An r close to +1, where the two variables increase together along a near-straight line. By Cohen’s conventions, r of .50 or more is large, though fields differ.
Is 0.8 a strong positive correlation?
Yes, by Cohen’s conventions and most textbook tables. Check the scatterplot for outliers and curvature before relying on it.
Is −0.9 stronger than +0.5?
Yes. Strength depends on |r|, so −.90 is stronger than +.50; the sign only gives direction.
Which set of data has the strongest linear association?
The one whose correlation coefficient has the largest absolute value.
What is the difference between strong and weak correlation?
In a strong correlation points sit close to a line (|r| near 1); in a weak one they scatter widely (|r| near 0).
Sources
Checked 2026-10-29.
- SciPy documentation, scipy.stats.pearsonr: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html
- Microsoft Support, CORREL function: https://support.microsoft.com/en-us/office/correl-function-995dcef7-0c0a-4bed-a3fb-239d7b68ca92
- R Documentation, cor.test: https://stat.ethz.ch/R-manual/R-devel/library/stats/html/cor.test.html
- Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences (2nd ed.). Lawrence Erlbaum (print book; benchmarks as summarised on formula for correlation analysis).








