How to Read r = 0.95: Correlation vs. Causation
At the end of last post I dropped this question.
Does run differential cause winning percentage, or do they just move together?
We confirmed r = 0.95 across 5 seasons and 150 teams. The number itself isn't going anywhere. But what the number means is a separate problem.
Looking at r = 0.95, can we say "run differential causes wins"?
You've Probably Heard This One
Anyone who's poked around data analysis even a little has seen this sentence.
Correlation is not causation.
It gets quoted so often it sounds like a slogan, but the meaning is clear. Two variables moving together doesn't mean one of them is producing the other.
Common examples:
- Ice cream sales and drowning incidents have a strong positive correlation. Ice cream doesn't cause drowning. They both go up because of summer.
- Shoe size and vocabulary have a strong positive correlation. Adults have bigger feet and bigger vocabularies than kids. Age pushes both up.
These hidden third variables are called lurking variables (or confounders). Two things look linked, but both are actually following a third variable you can't see.
Okay, back to our data.
Could there be a lurking variable behind run diff and win rate?
"Team Quality" as a candidate
There's one obvious candidate: team quality.
If a team is good — strong hitters, strong pitchers, solid defense — then naturally two things happen.
- Runs scored go up, runs allowed go down → bigger run differential
- They win more games → higher win rate
The arrows look like this.
Team Quality
↙ ↘
Run Diff Win Rate
In this picture, run differential and win rate both come from a common cause: team quality. The r = 0.95 might just reflect two variables sharing that cause.
Frame it this way and 0.95 starts to look different. It just says "these two move together" — it doesn't say one of them is making the other happen.
But... is that really the whole story?
Baseball is different here
The lurking-variable logic above fits most data well. But for run diff and win rate, there's something unusual going on.
What does it mean, by definition, to win a baseball game?
Score at least one more run than the other team over 9 innings.
In other words, in any single game, runs scored > runs allowed means you win. That's the rule of the sport.
Now lift that to the season level.
- A season is 162 games.
- In each of those 162 games, "runs > runs allowed that day" gives you a win, otherwise a loss.
- Add up runs scored and runs allowed across all 162 games and you get season RS and season RA.
- Season run diff = RS − RA = "how much more we scored than the opponent across 162 games."
So season win rate and season run diff can't be two unrelated variables. They're tied together by definition in every single game, and that tie is just being summed up 162 times.
This is where it differs from the ice-cream-vs-drowning case. Ice cream sales and drowning are separate events that happen to coincide in summer. Runs and wins are two facets of the same event.
So Is It Causation?
Careful here. "Tied by definition" doesn't mean "run diff causes win rate" either.
Here's a more precise framing. Season run diff and season win rate are both summaries of a deeper fact — "how runs played out across 162 games."
- Win rate summarizes those 162 games as win/loss binaries. A 6–5 win and a 15–0 win are both "1 win."
- Run diff summarizes those same 162 games as a sum of margins. A 6–5 win is +1; a 15–0 win is +15.
The same games, summarized two ways — that's why they're so tightly coupled. But the two summaries carry slightly different information.
- Suppose a team always wins by 1 and always loses by 10. Their win rate is average; their run diff is very low.
- Flip it: always lose by 1, win by 10. Average win rate, big run diff.
These teams are where the two summaries disagree. That's why r falls short of 1.0. The shortfall comes from the fact that win rate is sensitive to how runs are distributed across games, and run diff is less so.
Re-reading 0.95
Let's pin down how to read r = 0.95.
Wrong: "Run diff causes wins. Increase run diff by N and win rate goes up by Y."
Also wrong: "These two numbers just happen to move together by coincidence."
Right: "Run diff and win rate are two summaries of the same set of game outcomes. Knowing one lets you predict the other fairly well. Where they don't match comes from how the runs were distributed across games."
This distinction sounds nitpicky, but it matters when you actually do analysis. If someone says "let's design a strategy to grow our run differential," that's an odd prescription. Run differential is what follows from playing good baseball.
What the Data Doesn't Tell You
Worth pausing here to mark a limit of data analysis.
We computed r from 5 seasons and 150 points. The number is precise. But that number alone can't tell you why the relationship exists. To get to "why," you have to know what kind of game baseball is and how a single game gets decided.
- Data tells you "what moves with what."
- Domain knowledge tells you "why it moves together."
Either one alone is dangerous. Data without domain knowledge concludes that ice cream causes drowning. Domain knowledge without data ends in "I just have a feeling that..."
The Next Question
So far we've looked at run diff and win rate as just these two numbers. But as we saw above, they don't match perfectly.
- Two teams can have the same run diff but different win rates.
- The difference comes from how they distributed the same runs across games.
That raises the next question.
If run differential alone leaves something on the table, is there a better formula for win rate?
The baseball stats world already has one: the Pythagorean Expectation. In the next post I'll plug it into our data and see how well it actually fits.
This analysis was done with just-mlb, a tool I built. Look at the 5-season scatter, see the r = 0.95 yourself, and find which teams sit off the trend.