statistique bivariée avec r
TRANSCRIPT
Statistique bivariee
J. Barnier, présenté par M.A. Khouaja
4 mars 2016
NB
Ce document n’est qu’une présentation de la partie “Statistiquebivariée” de son document original de J. Barnier, diponible sur leweb : https://cran.r-project.org/doc/contrib/Barnier-intro_R.pdf
Statistique bivariée
On entend par statistique bivariee l’étude des relations entre deuxvariables, celles-ci pouvant etre quantitatives ou qualitatives.
On travaillera sur les jeux de donnees fournis avec l’extensionquestionr et tire de l’enquete Histoire de vie et du recensement 1999
library(questionr)data(hdv2003)d <- hdv2003data(rp99)
Deux variables quantitatives
Deux variables quantitativesLa comparaison de deux variables quantitatives se fait en premierlieu graphiquement, en représentant l’ensemble des couples devaleurs. On peut ainsi représenterles valeurs du nombre d’heures passées devant la télévision selon l’âge:
20 40 60 80 100
02
46
810
12
d$age
d$he
ures
.tv
Deux variables quantitatives
il n’y a pas de structure très nette qui semble se dégager. On peuttester ceci mathématiquement en calculant le coefficient decorrélation entre les deux variables à l’aide de la fonction (cor=0.18)
cor(d$age, d$heures.tv, use = "complete.obs")
## [1] 0.1776249
Deux variables quantitatives
I On va donc s’intéresser plutôt à deux variables présentes dansle jeu de données rp99, la part de diplômés du supérieur et laproportion de cadres dans les communes du Rhône en 1999.
I À nouveau, commençons par représenter les deux variables(figure slide suivante).
Deux variables quantitatives
0 5 10 15 20 25
05
1015
2025
3035
Part des diplomês du supérieur
Par
t des
cad
res
Ça ressemble déjà beaucoup plus à une relation de type linéaire.
Deux variables quantitatives
I Calculons le coefficient de corrélation :
cor(rp99$dipl.sup, rp99$cadres)
## [1] 0.8975282
I C’est beaucoup plus proche de 1. On peut alors effectuer unerégression linéaire complète en utilisant la fonction lm
reg <- lm(cadres ~ dipl.sup, data = rp99)summary(reg)
Deux variables quantitatives#### Call:## lm(formula = cadres ~ dipl.sup, data = rp99)#### Residuals:## Min 1Q Median 3Q Max## -9.6905 -1.9010 -0.1823 1.4913 17.0866#### Coefficients:## Estimate Std. Error t value Pr(>|t|)## (Intercept) 1.24088 0.32988 3.762 0.000203 ***## dipl.sup 1.38352 0.03931 35.196 < 2e-16 ***## ---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1#### Residual standard error: 3.281 on 299 degrees of freedom## Multiple R-squared: 0.8056, Adjusted R-squared: 0.8049## F-statistic: 1239 on 1 and 299 DF, p-value: < 2.2e-16
Deux variables quantitativesLe résultat montre que les coefficients sont significativementdifférents de 0. La part de cadres augmente donc avec celle dediplômés du supérieur. On peut très facilement représenter la droitede régression à l’aide de la fonction abline
0 5 10 15 20 25
05
1015
2025
3035
Part des diplômés du supérieur
Par
t des
cad
res
Une variable quantitative et une variablequalitative
Une variable quantitative et une variable qualitativeI Quand on parle de comparaison entre une variable quantitative
et une variable qualitative, on veut en général savoir si ladistribution des valeurs de la variable quantitative est la mêmeselon les modalités de la variable qualitative. En clair : est ceque l’âge de ceux qui écoutent du hard rock est différent del’âge de ceux qui n’en écoutent pas ?
I Là encore, l’idéal est de commencer par une représentationgraphique. Les boîtes à moustaches sont parfaitement adaptéespour cela.
d.hard <- subset(d, hard.rock == "Oui")d.non.hard <- subset(d, hard.rock == "Non")boxplot(d.hard$age, d.non.hard$age)
1 2
2040
6080
100
Une variable quantitative et une variable qualitative
1 2
2040
6080
100
-Boxplot de la répartition des âges(sous-populations)
Une variable quantitative et une variable qualitativeLa constructions des sous-populations n’est pas nécessaire. On peututiliser directement la version de boxplot prenant une formule enargument
boxplot(age ~ hard.rock, data = d)
Non Oui
2040
6080
100
Une variable quantitative et une variable qualitative
Non Oui
2040
6080
100
Une variable quantitative et une variable qualitative
La population écoutant du hard rock a l’air sensiblement plus jeune.Mathématiquement, on peut calculer la moyenne d’âge des deuxgroupes en utilisant la fonction tapply
tapply(d$age, d$hard.rock, mean)
## Non Oui## 48.30211 27.57143
Une variable quantitative et une variable qualitative
L’écart est très important. Est-il statistiquement significatif ? Pourcela on peut faire un test t de comparaison de moyennes à l’aide dela fonction t.test :
#### Welch Two Sample t-test#### data: d$age by d$hard.rock## t = 9.6404, df = 13.848, p-value = 1.611e-07## alternative hypothesis: true difference in means is not equal to 0## 95 percent confidence interval:## 16.11379 25.34758## sample estimates:## mean in group Non mean in group Oui## 48.30211 27.57143
Une variable quantitative et une variable qualitative
I Le test est extrêmement significatifI L’intervalle de confiance à 95 % de la différence entre les deux
moyennes va de 16.1 à 27.6 ans.I Nous avons négligé une hypothèse fondamentale du test t : les
ensembles de valeur comparés doivent suivreapproximativement une loi normale et être de même variance
I Comment vérifier cela? [Graphique, puis test de normalité deShapiro-Wilk avec la fonction shapiro.test ET test d’égalité desvariances avec la fonction var.test]
Une variable quantitative et une variable qualitative
Hard rock
d$age[d$hard.rock == "Oui"]
Fre
quen
cy
15 20 25 30 35 40 45
01
23
45
Sans hard rock
d$age[d$hard.rock == "Non"]
Fre
quen
cy
20 40 60 80 100
050
100
150
200
Une variable quantitative et une variable qualitative
shapiro.test(d$age[d$hard.rock == "Oui"])
#### Shapiro-Wilk normality test#### data: d$age[d$hard.rock == "Oui"]## W = 0.86931, p-value = 0.04104
I Visiblement, le test estime que les distributions ne sont passuffisamment proches de la normalité dans les deux cas.
Une variable quantitative et une variable qualitative
I Concernant l’égalité des variances:
tapply(d$age, d$hard.rock, var)
## Non Oui## 285.62858 62.72527
I L’écart n’a pas l’air négligeable. On peut le vérifier avec le testfourni par la fonction var.test
Une variable quantitative et une variable qualitative
I Test d’égalité des variances:
var.test(d$age ~ d$hard.rock)
#### F test to compare two variances#### data: d$age by d$hard.rock## F = 4.5536, num df = 1985, denom df = 13, p-value = 0.003217## alternative hypothesis: true ratio of variances is not equal to 1## 95 percent confidence interval:## 1.751826 8.694405## sample estimates:## ratio of variances## 4.553644
Une variable quantitative et une variable qualitative
I La différence est très significative. En toute rigueur le test tn’aurait donc pas pu être utilisé.
I Un nouveau test, connu sous le nom deWilcoxon/Mann-Whitney.
I Ce test a l’avantage d’être non-paramétrique, c’est à dire de nefaire aucune hypothèse sur la distribution des échantillonscomparés.
I Par contre il ne compare pas des différences de moyennes maisdes différences de médianes
wilcox.test(d$age ~ d$hard.rock)
Une variable quantitative et une variable qualitative
wilcox.test(d$age ~ d$hard.rock)
#### Wilcoxon rank sum test with continuity correction#### data: d$age by d$hard.rock## W = 23980, p-value = 2.856e-06## alternative hypothesis: true location shift is not equal to 0
I Ouf ! La différence est hautement significativeI Ce test peut également fournir un intervalle de confiance avec
l’option conf.int=TRUE
Deux variables qualitatives
Deux variables qualitatives
I La comparaison de deux variables qualitatives s’appelle engénéral un tableau croisé. C’est sans doute l’une des analysesles plus fréquentes lors du traitement d’enquêtes en sciencessociales.
I La manière la plus simple d’obtenir un tableau croisé estd’utiliser la fonction table en lui donnant en paramètres lesdeux variables à croiser. En l’occurrence nous allons croiser unrecodage du niveau de qualification regroupé avec le fait depratiquer un sport. On commence par calculer la variablerecodée et par afficher le tri à plat des deux variables :
Deux variables qualitatives
d$qualreg <- as.character(d$qualif)d$qualreg[d$qualif %in% c("Ouvrier specialise", "Ouvrier qualifie")]="Ouvrier"d$qualreg[d$qualif %in% c("Profession intermediaire", "Technicien")]="Intermediaire"table(d$qualreg)
#### Autre Cadre Employe Intermediaire Ouvrier## 58 260 594 246 495
table(d$sport)
#### Non Oui## 1277 723
Deux variables qualitatives
Le tableau croisé des deux variables s’obtient de la manière suivante:
table(d$sport, d$qualreg)
#### Autre Cadre Employe Intermediaire Ouvrier## Non 38 117 401 127 381## Oui 20 143 193 119 114
I On n’a cependant que les effectifs, ce qui rend difficile lescomparaisons. L’extension questionr fournit des fonctionspermettant de calculer les pourcentages lignes, colonnes ettotaux d’un tableau croisé.
Deux variables qualitatives
tab <- table(d$sport, d$qualreg)lprop(tab)
#### Autre Cadre Employe Intermediaire Ouvrier Total## Non 3.6 11.0 37.7 11.9 35.8 100.0## Oui 3.4 24.3 32.8 20.2 19.4 100.0## Ensemble 3.5 15.7 35.9 14.9 29.9 100.0
Deux variables qualitativesI Les pourcentages ligne ne nous intéressent guère ici. On ne
cherche pas à voir quelle est la proportion de cadres parmi ceuxqui pratiquent un sport, mais plutôt quelle est la proportion desportifs chez les cadres. Il nous faut donc des pourcentagescolonnes, que l’on obtient avec la fonction cprop :
cprop(tab)
#### Autre Cadre Employe Intermediaire Ouvrier Ensemble## Non 65.5 45.0 67.5 51.6 77.0 64.4## Oui 34.5 55.0 32.5 48.4 23.0 35.6## Total 100.0 100.0 100.0 100.0 100.0 100.0
I Dans l’ensemble, le pourcentage de personnes ayant pratiquéun sport est de 35,6 %. Mais cette proportion varie fortementd’une catégorie professionnelle à l’autre : 55,0 % chez lescadres contre 23,0 % chez les ouvriers.
Deux variables qualitativesI Pour tester l’existence d’un lien entre les modalités des deux
variables, on va utiliser le très classique test du CHI2I Celui-ci s’obtient grâce à la fonction chisq.test, appliquée au
tableau croisé obtenu avec la fonction table
chisq.test(tab)
#### Pearson's Chi-squared test#### data: tab## X-squared = 96.798, df = 4, p-value < 2.2e-16
I Le test est hautement significatif, on ne peut pas considérerqu’il y a indépendance entre les lignes et les colonnes dutableau.
Deux variables qualitatives
I On peut affiner l’interprétation du test en déterminant dansquelle case l’écart à l’indépendance est le plus significatif enutilisant les résidus du test. Ceux-ci sont notammentaffichables avec la fonction chisq.residuals de questionr
chisq.residuals(tab)
#### Autre Cadre Employe Intermediaire Ouvrier## Non 0.11 -3.89 0.95 -2.49 3.49## Oui -0.15 5.23 -1.28 3.35 -4.70
Deux variables qualitatives
Les cases pour lesquelles l’écart à l’indépendance est significatif ontun résidu dont la valeur est supérieure à 2 ou inférieure à -2. Ici onconstate que la pratique d’un sport est sur-représentée parmi lescadres et, à un niveau un peu moindre, parmi les professionsintermédiaires, tandis qu’elle est sousreprésentée chez les ouvriers.
Deux variables qualitatives
On peut calculer le coefficient de contingence de Cramer du tableau,qui peut nous permettre de le comparer par la suite à d’autrestableaux croisés. On peut pour cela utiliser la fonction cramer.v dequestionr:
cramer.v(tab)
## [1] 0.24199
Deux variables qualitativesEnfin, on peut obtenir une représentation graphique synthétisantl’ensemble des résultats obtenus sous la forme d’un graphique enmosaïque, grâce à la fonction mosaicplot.
mosaicplot(qualreg ~ sport, data = d, shade = TRUE, main = "Graphe en mosaïque")
Sta
ndar
dize
dR
esid
uals
:
<−
4−
4:−
2−
2:0
0:2
2:4
>4
Graphe en mosaïque
qualreg
spor
t
Autre Cadre Employe Intermediaire Ouvrier
Non
Oui
Deux variables qualitatives
I Comment interpréter ce graphique haut en couleurs? Chaquerectangle représente une case de tableau.
I La largeur correspond au pourcentage des modalités encolonnes (il y’a beaucoup d’employés et d’ouvriers et très peud’« autres »).
I La hauteur correspond aux pourcentages-colonnes : laproportion de sportifs chez les cadres est plus élevée que chezles employés.
I Enfin, la couleur de la case correspond au résidu du test duCHI2 correspondant : les cases en rouge sont sous-représentées,les cases en bleu sur-représentées, et les cases blanches sontstatistiquement proches de l’hypothèse d’indépendance.
Annexe
I L’extension questionr contient plusieurs jeux de données(dataset) destinés à l’apprentissage de R.
I hdv2003 est un extrait comportant 2000 individus et 20variables provenant de l’enquête Histoire de Vie réalisée parl’INSEE en 2003.
I rp99 est issu du recensement de la population de 1999 del’INSEE. Il comporte une petite partie des résultats pourl’ensemble des communes du Rhône, soit 301 lignes et 21colonnes
I Contact: Mohamed Ali [email protected]