De la stature chez l’Homme ... ` a la taille des cerveaux chez les mammif`eres.
R´eversion, R´egression, Corr´elation
A.B. Dufour, J.R. Lobry & D. Chessel 31 mars 2008
Table des mati` eres
1 Un peu d’histoire . . . 2
2 La corr´elation 5 2.1 Qu’est-ce que c’est ? . . . 5
2.2 Comment calculer la corr´elation ? . . . 6
2.3 A quoi ¸ca sert ? . . . 9
3 Quelques exemples et exercices 10 3.1 A propos de s´ecurit´e routi`ere . . . 10
3.2 Tension art´erielle et fumeurs . . . 11
3.3 Saut en longueur et 100m . . . 15
3.4 Les donn´ees deAnscombe . . . 15
3.5 Mariage et Produit int´erieur brut . . . 16
3.6 Poids du corps et taille du cerveau chez les mammif`eres . . . 16
4 Conclusion 19
R´ef´erences 20
1 Un peu d’histoire . . .
En 1895, Karl Pearson (1857-1936) donnait la paternit´e de la corr´elation `a Auguste Bravais (1811-1863) puis il revint sur cet avis en 1920. Les historiens de la statistique [4] s’entendent aujourd’hui pour dire que le rˆole essentiel a ´et´e jou´e par Francis Galton (1822-1911).
Fig.1 –K. Pearson et F. Galton
Ce dernier a soulign´e la n´ecessit´e d’une mesure de la corr´elation dans l’ana- lyse des s´eries bivari´ees. Et c’est par le concept de r´egression qu’il d´ebute. Le 9 f´evrier 1877, Galton fait un expos´e `a l’Institution Royale de Grande-Bretagne, intitul´eTypical laws of heredity in man.
Reversion is a tendency of the ideal mean filial type to depart from the parental type, reverting to what may be roughly and perhaps fairly described as the average ancestral type. If family variability has been the only process in simple descent that affected the characteristics of a sample, the dispersion of the race from its mean ideal type would indefinitely increase with the number of generations, but reversion checks this increase, and brings it to a standstill.
Galton exprime le d´esir de construire un coefficient de r´eversion qui indique la r´eduction de la variabilit´e de la famille. Cette r´eversion se transforme peu `a peu en r´egression puis en corr´elation [6].
It is easy to see that co-relation must be the consequence of the va- riations of the two organs being partly due to common causes. If they were wholly due to common causes, the co-relation would be perfect, as in approximately the case with the symmetrically disposed parts of the body. If they were in no respect due to the common causes, the co-relation would be nil. Between these two extremes are an endless
number of intermediate cases and it will be shown how the closeness of co-relation in any particular case admits of being expressed by a singular number.
C’est en 1896 que Karl Pearson [8] reprend le concept et lui donne la forme que nous connaissons aujourd’hui.
L’objectif de cette s´eance est de d´efinir, comprendre la nature du coefficient de corr´elation lin´eaire et de lier la repr´esentation graphique associ´ee au croisement de deux variables quantitatives appel´eenuage de pointset ce fameux coefficient.
Analysons les donn´ees [6] de F. Galton (1886) sur la relation entre la taille (en pouces : 1 pouce vaut 2.54 cm) de 928 enfants et la taille de leurs parents (en pouces). Comme un enfant a deux parents, Galton a trait´e le probl`eme en introduisant la notion du ”mid-parent” en prenant la moyenne de la taille du p`ere avec la taille de la m`ere multipli´ee par 1.08. Ce coefficient a ´et´e construit `a partir de la moyenne des tailles des p`eres et la moyenne des tailles des m`eres. Les donn´ees ont ´et´e trouv´ees sur le site internet :http://www.mugu.com/galton/
index.html. Importez les dans avec la commande suivante :
taimdc <- read.table("http://pbil.univ-lyon1.fr/R/donnees/taimdc.txt", header = TRUE)
summary(taimdc)
x y
Min. :64.00 Min. :61.70 1st Qu.:67.50 1st Qu.:66.20 Median :68.50 Median :68.20 Mean :68.31 Mean :68.09 3rd Qu.:69.50 3rd Qu.:70.20 Max. :73.00 Max. :73.70
Les donn´ees sont en pouces, ce n’est pas tr`es lisible, convertissez les en centi- m`etres :
taimdc <- 2.54 * taimdc summary(taimdc)
x y
Min. :162.6 Min. :156.7 1st Qu.:171.4 1st Qu.:168.1 Median :174.0 Median :173.2 Mean :173.5 Mean :172.9 3rd Qu.:176.5 3rd Qu.:178.3 Max. :185.4 Max. :187.2
Repr´esentez les graphiquement :
sunflowerplot(taimdc, xlab = "Taille du mid-parent [cm]", ylab = "Taille de l'enfant [cm]", las = 1, main = "Les donnees de F. Galton (1886)")
165 170 175 180 185 160
165 170 175 180 185
Les donnees de F. Galton (1886)
Taille du mid−parent [cm]
Taille de l'enfant [cm]
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
Nous reconnaissons dans cette figure la repr´esentation graphique appel´ee
”sunflowerplot”. Nous avons d’une part les points correspondant au croisement des tailles ”parents, enfants” et les branches d´ecomptent le nombre de r´ep´etitions.
On peut utiliser ´egalement une repr´esentation avec une carte de densit´e :
library(MASS)
densite <- kde2d(taimdc$x, taimdc$y, n = 50)
filled.contour(densite, color = topo.colors, xlab = "Taille du mid-parent [cm]", ylab = "Taille de l'enfant [cm]", las = 1, main = "Les donnees de F. Galton (1886)")
0.000 0.001 0.002 0.003 0.004 0.005 0.006 0.007
165 170 175 180 185
160 165 170 175 180 185
Les donnees de F. Galton (1886)
Taille du mid−parent [cm]
Taille de l'enfant [cm]
Le coefficient de corr´elation calcul´e sur ces donn´ees est ´egal `a 0.46.
cor(taimdc$x, taimdc$y) [1] 0.4587624
Mais que signifie-t-il ?
2 La corr´ elation
2.1 Qu’est-ce que c’est ?
Le coefficient de corr´elation lin´eaire est une mesure de la liaison lin´eaire, c’est-`a-dire de la capacit´e de pr´edire une variablex par une autrey `a l’aide d’un mod`ele lin´eaire. Pour ce faire, profitons du logiciel pour r´ealiser quelques simulations.
Allez dans votre dossier de travail, puis ouvrez un document texte seul (`a l’aide du clic droit de la souris). Nous allons construire les fonctions suivantes :simu() cr´ee des nuages de points,nuage()construit ces nuages en superposant le mod`ele lin´eaire.
simu <- function(rho) { n = 100
for (i in 1:100) {
cov <- matrix(c(2, sqrt(2) * rho, sqrt(2) * rho, 1), 2, 2)
w <- mvrnorm(n, c(5, 3), cov) w <- data.frame(w)
names(w) <- c("x", "y") robs <- cor(w$x, w$y)
if (((rho - 0.02) < robs) & (robs < (rho + 0.02))) return(w)
}
return(w) }
nuage <- function(X) {
plot(X$x, X$y, xlim = c(0, 10), ylim = c(0, 6), pch = 20) lm0 <- lm(y ~ x, data = X)
abline(lm0, col = "red", lwd = 2) r2 <- summary(lm0)$r.squared
text(2, 5, as.integer(100 * r2), cex = 3) }
Maintenant, allez sous puis dans le menu file, Source R code. Dans la fenˆetre ”Select file to source”, s´electionner tous les types de fichiers puis ouvrir le fichier ”.txt” comprenant la fonction que vous venez de cr´eer. Il se peut que des messages d’erreurs soient signal´es. Cela signifie que vous avez mal rentr´e le
”texte”. R´e-it´erer l’op´eration jusqu’`a ce qu’il n’y ait plus d’erreur. Puis taper les commandes suivantes :
par(mfrow = c(4, 4)) par(mar = c(2, 2, 1, 1))
w <- lapply(sqrt(seq(0, 1, le = 16)), simu) lapply(w, nuage)