1 Introduction

Il y a quelques années, un article viral affirmait que « les personnes mangeant régulièrement du chocolat ont de meilleurs résultats aux tests cognitifs ». Aussitôt, les réseaux sociaux se sont emballés : et si le chocolat rendait plus intelligent ? Des éditorialistes enthousiastes suggéraient d’ajouter une tablette à chaque repas. Mais une question cruciale a été évacuée : le chocolat est-il vraiment la cause de cette meilleure performance, ou simplement une coïncidence ?

Dans une époque où les données sont partout — dans nos téléphones, nos hôpitaux, nos écoles, nos réseaux sociaux — il est tentant de croire que la statistique peut tout expliquer. Deux variables évoluent ensemble ? Voilà une belle histoire à raconter. Et pourtant, le fait qu’elles soient corrélées ne signifie pas qu’elles sont liées par une relation de cause à effet.

Dans ce travail, nous explorerons cette distinction essentielle entre corrélation et causalité, à travers des données réelles et des exemples concrets, analysés avec le langage R. En chemin, nous croiserons des voitures des années 1970, des pays riches et pauvres, des pics de pollution à New York, et des taux de criminalité aux États-Unis.


2 Corrélation : Quand deux variables évoluent ensemble

Imaginez que vous observez, dans une petite ville, que plus les habitants consomment de glaces, plus le nombre de noyades augmente. Conclusion rapide : les glaces tuent-elles ? Bien sûr que non. Il existe un troisième facteur : la chaleur. Quand il fait chaud, on mange plus de glaces et on se baigne davantage. Le lien entre glace et noyade est corrélé, mais non causal.

2.1 Exemple 1 – Données automobiles : poids et consommation

Le jeu de données mtcars, inclus par défaut dans R, provient d’un article de la revue Motor Trend en 1974. Il contient des caractéristiques techniques de 32 modèles de voitures. Une question simple : plus une voiture est lourde, plus elle consomme ?

data(mtcars)
cor.test(mtcars$wt, mtcars$mpg)
## 
##  Pearson's product-moment correlation
## 
## data:  mtcars$wt and mtcars$mpg
## t = -9.559, df = 30, p-value = 1.294e-10
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.9338264 -0.7440872
## sample estimates:
##        cor 
## -0.8676594
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  theme_minimal() +
  labs(title = "Poids vs Consommation", x = "Poids (1000 lbs)", y = "Miles per gallon")

Résultat : une corrélation négative de -0.87, ce qui signifie que plus le poids augmente, plus la consommation (mesurée en miles per gallon) diminue. Le graphique présent en est la parfaite illustration.

Cela semble logique : une voiture plus lourde demande plus d’énergie. Mais attention, d’autres variables pourraient jouer : le nombre de cylindres ou la puissance du moteur. Le lien est fort, mais n’est pas nécessairement une preuve directe de causalité.


3 Causalité : Quand l’un influence réellement l’autre

La causalité implique plus qu’une co-occurrence. Elle suppose :

  • Que la cause précède l’effet ;
  • Qu’aucune autre variable ne soit responsable de la relation observée ;
  • Et que le lien soit logique, répétable, et cohérent avec d’autres observations.

C’est pourquoi les scientifiques préfèrent les expériences contrôlées (par exemple en médecine, les essais randomisés). Mais dans les sciences sociales, on travaille souvent avec des données d’observation, ce qui rend l’identification de la causalité plus délicate.

3.1 Exemple 2 – Richesse et espérance de vie

Le jeu de données gapminder, développé par Hans Rosling et ses collègues, contient des informations sur l’espérance de vie, le PIB par habitant, et la population pour plus de 100 pays, entre 1952 et 2007.

On examine ici l’année 2007 :

library(gapminder)
gap07 <- gapminder %>% filter(year == 2007)
cor.test(gap07$gdpPercap, gap07$lifeExp)
## 
##  Pearson's product-moment correlation
## 
## data:  gap07$gdpPercap and gap07$lifeExp
## t = 10.933, df = 140, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.5786217 0.7585843
## sample estimates:
##       cor 
## 0.6786624
ggplot(gap07, aes(x = gdpPercap, y = lifeExp)) +
  geom_point(aes(size = pop, color = continent), alpha = 0.6) +
  geom_smooth(method = "lm", col = "black") +
  scale_x_log10() +
  theme_minimal() +
  labs(title = "PIB par habitant vs espérance de vie", x = "PIB par habitant (log scale)", y = "Espérance de vie")

On trouve une corrélation positive : les pays riches vivent plus longtemps.

Mais est-ce une causalité ? Pas nécessairement. En réalité, des variables comme l’éducation, le système de santé, la stabilité politique ou les habitudes alimentaires peuvent jouer un rôle plus direct. De plus, certains pays d’Amérique latine ou d’Europe de l’Est vivent longtemps sans avoir un PIB très élevé. D’autres pays riches en pétrole, comme le Qatar, ont un PIB élevé mais une espérance de vie moyenne.

Quand on ajoute le continent comme facteur explicatif :

m1 <- lm(lifeExp ~ gdpPercap + continent, data = gap07)
tbl_regression(m1, exponentiate = FALSE) %>% as_gt()
Characteristic Beta 95% CI1 p-value
gdpPercap 0.00 0.00, 0.00 <0.001
continent


    Africa
    Americas 16 13, 19 <0.001
    Asia 13 9.6, 16 <0.001
    Europe 15 11, 19 <0.001
    Oceania 17 6.8, 26 0.001
1 CI = Confidence Interval

Le lien s’affaiblit pour certaines régions : le continent explique une part de la variation, indépendamment du revenu. Les tableaux suivant en donne une indication.

  • Evolution de l’espérance de vie dans le monde de 1952 à 2007
tab_summary1 <- gapminder %>% 
  group_by(year, continent) %>% 
  summarise(m = round(mean(lifeExp, na.rm = TRUE))) %>%
  pivot_wider(names_from = continent, values_from = m, values_fill = NA)

tab_summary1 %>% 
  gt() %>% 
  tab_header(title = "Evolution de l'espérance de vie dans le monde (par continent) de 1952 à 2007")
Evolution de l'espérance de vie dans le monde (par continent) de 1952 à 2007
Africa Americas Asia Europe Oceania
1952
39 53 46 64 69
1957
41 56 49 67 70
1962
43 58 52 69 71
1967
45 60 55 70 71
1972
47 62 57 71 72
1977
50 64 60 72 73
1982
52 66 63 73 74
1987
53 68 65 74 75
1992
54 70 67 74 77
1997
54 71 68 76 78
2002
53 72 69 77 80
2007
55 74 71 78 81
tab_summary2 <- gapminder %>% 
  group_by(year, continent) %>% 
  summarise(m = round(log(mean(gdpPercap, na.rm = TRUE)) ,2)) %>%
  pivot_wider(names_from = continent, values_from = m, values_fill = NA)

tab_summary2 %>% 
  gt() %>% 
  tab_header(title = "Evolution du PIB par habitant (log scale) dans le monde (par continent) de 1952 à 2007")
Evolution du PIB par habitant (log scale) dans le monde (par continent) de 1952 à 2007
Africa Americas Asia Europe Oceania
1952
7.13 8.31 8.56 8.64 9.24
1957
7.23 8.44 8.66 8.85 9.36
1962
7.38 8.50 8.65 9.03 9.45
1967
7.63 8.64 8.69 9.22 9.58
1972
7.76 8.78 9.01 9.43 9.71
1977
7.86 8.90 8.96 9.57 9.76
1982
7.82 8.92 8.91 9.66 9.83
1987
7.73 8.96 8.94 9.75 9.93
1992
7.73 8.99 9.06 9.74 9.95
1997
7.77 9.09 9.19 9.86 10.09
2002
7.86 9.14 9.23 9.99 10.20
2007
8.04 9.31 9.43 10.13 10.30

4 Thèse : la corrélation peut être causale

Le jeu de données airquality contient des mesures atmosphériques à New York (mai à septembre 1973). On examine ici si la température influence le taux d’ozone.

4.1 Exemple 3 – Pollution à New York

data(airquality)
cor.test(airquality$Temp, airquality$Ozone)
## 
##  Pearson's product-moment correlation
## 
## data:  airquality$Temp and airquality$Ozone
## t = 10.418, df = 114, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.5913340 0.7812111
## sample estimates:
##       cor 
## 0.6983603
ggplot(airquality, aes(x = Temp, y = Ozone)) +
  geom_point() +
  geom_smooth(method = "lm") +
  theme_minimal() +
  labs(title = "Température et taux d’ozone à New York", x = "Température", y = "Ozone (ppb)")

On observe une corrélation positive : quand la température monte, l’ozone augmente aussi. Cela a du sens : les rayons UV, combinés aux polluants urbains, favorisent la formation d’ozone, notamment pendant les épisodes caniculaires.

Ici, le lien est à la fois statistique, temporel et plausible chimiquement. On peut raisonnablement suggérer une causalité, même si l’étude reste observationnelle.


5 Antithèse : la corrélation peut être trompeuse

5.1 Exemple 4 – Criminalité aux États-Unis

Le dataset USArrests présente le taux d’arrestations pour différents crimes (Meurtre, Viol, Vol) dans les 50 États américains.

data(USArrests)
cor(USArrests$Murder, USArrests$Rape)
## [1] 0.5635788

On trouve une corrélation entre taux de viols et taux d’homicides. Le graphique suivant parait etre encore plus convaiquant:

ggplot(USArrests, aes(x = Murder, y = Rape)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  theme_minimal() +
  labs(title = "Corrélation entre meurtres et viols", x = "Meurtres pour 100 000", y = "Viols pour 100 000")

Ce jeu de données montre que dans les États où il y a plus de meurtres, il y a aussi plus de viols. Mais cela ne signifie pas que l’un cause l’autre. Ces deux variables sont probablement liées à des facteurs tiers comme la pauvreté, la faiblesse des institutions ou les politiques locales. Un gouverneur pourrait dire : « Pour réduire les homicides, luttons contre les viols ». Mais ce serait un contresens statistique. —

6 Discussion

Nous avons vu des cas où :

  • La corrélation s’explique par une cause commune ;
  • Le lien apparent disparaît quand on contrôle des variables cachées ;
  • Et parfois, la corrélation reflète bien une influence directe.

Mais notre cerveau est avide de récits simples : si deux choses sont liées, alors l’une explique l’autre. Or, comme le disait le statisticien David Freedman : « L’association ne prouve rien. »

Les erreurs d’interprétation sont courantes :

  • Dans les médias (« les jeunes qui utilisent TikTok sont plus déprimés ») ;
  • En politique (« les immigrés augmentent la criminalité car les deux ont augmenté en même temps ») ;
  • Même dans la recherche scientifique (où l’on publie souvent des corrélations sans preuve expérimentale).

7 Conclusion

Ce travail nous a permis d’explorer une question essentielle : les chiffres nous parlent-ils toujours vrai ? Pas forcément.

Les données sont des signaux, pas des vérités. Une corrélation est un indice, parfois très utile pour explorer des pistes, formuler des hypothèses, mais elle ne remplace pas l’analyse critique ni la compréhension des mécanismes sous-jacents.

Si deux variables évoluent ensemble, ne vous précipitez pas pour conclure. Posez la question : « Pourquoi ? » Et surtout : « Et si ce n’était qu’un hasard ? »


8 Bibliographie

  • Freedman, D. (1999). From Association to Causation: Some Remarks on the History of Statistics. Statistical Science.
  • Pearl, J. (2009). Causality: Models, Reasoning and Inference. Cambridge University Press.
  • Rosling, H., Rosling, O., & Rönnlund, A. R. (2007). Gapminder Foundation.
  • Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer.
  • R Documentation : ?cor.test, ?lm, ?ggplot, ?gapminder