Unit 07.03: Correlation reported honestly
Two claims about a correlation are defensible and two are not.
What observational data supports
Four statements about the same correlation, sorted by whether the data supports them.
The code marks each.
import numpy as np
rng = np.random.default_rng(8)
x = rng.uniform(0, 100, 60)
y = x * 0.7 + rng.normal(0, 20, 60)
r = np.corrcoef(x, y)[0, 1]
print(f"r = {r:.2f}, n = {len(x)}, r-squared = {r ** 2:.2f}")
print()
for claim, honest in [
(f"Ad spend and sales are correlated (r = {r:.2f}, n = {len(x)}).", True),
("Ad spend drives sales.", False),
(f"Ad spend explains {r ** 2:.0%} of the variation in sales.", True),
("Increasing ad spend by 10 will increase sales by 7.", False),
]:
print(f"{'OK ' if honest else 'NOT OK'} {claim}")
print("\nThe two rejected claims assert causation and a controlled effect.")
print("Observational data supports neither, whatever the correlation is.")
Reporting the coefficient with the sample size is honest. Saying it explains a share of the variation is honest. Saying one variable *drives* the other is a causal claim, and saying a ten-unit increase produces a seven-unit rise is a claim about an intervention that was never run.
The rejected pair are the two that get written into recommendations, because they are the ones that imply an action.
The mistake this prevents
The mistake is treating the causal claim as a stylistic upgrade of the correlational one. It is a different and much stronger claim, and it requires either an experiment or an argument about why confounders are ruled out.
Takeaway
Report the coefficient and the sample size; do not upgrade a correlation into a cause or a controlled effect. Those need an experiment.
