Chapitre 12 Deux variables
12.1 Mise en place
library(tidyverse)
library(questionr)
library(knitr)
12.2 Croisement de deux variables qualitatives
Quand on veut croiser deux variables qualitatives, on fait un tableau croisé.
12.2.1 Tableaux à double entrée
Lorsque deux variables (peu importe leur type) sont étudiées simultanément, on construit un tableau à double entrée.
Nom de la variable 2 | ||
---|---|---|
Nom de la variable 1 | (Modalités de la variable 2) | Total |
(Modalités de la variable 1) | (Fréquences) | (Sous-totaux) |
Total | (Sous-totaux) | (Total) |
Nous utilisons la commande table
à laquelle on passe cette fois deux variables en argument. Par exemple, en utilisant la base de données gss_cat
, nous pouvons croiser les variables marital
et race
.
table(gss_cat$marital,gss_cat$race)
#>
#> Other Black White Not applicable
#> No answer 2 2 13 0
#> Never married 633 1305 3478 0
#> Separated 110 196 437 0
#> Divorced 212 495 2676 0
#> Widowed 70 262 1475 0
#> Married 932 869 8316 0
Nous pouvons exclure certaines modalités en utilisant l’option exclude
. Par exemple, on peut exclure les modalités Not applicable de la façon suivante:
table(gss_cat$marital,gss_cat$race, exclude = c("Not applicable"))
#>
#> Other Black White
#> No answer 2 2 13
#> Never married 633 1305 3478
#> Separated 110 196 437
#> Divorced 212 495 2676
#> Widowed 70 262 1475
#> Married 932 869 8316
Nous pouvons obtenir un tableau à double entrée comportant des pourcentages à l’aide de la commande prop
.
prop(table(gss_cat$marital,gss_cat$race))
#>
#> Other Black White Total
#> No answer 0.0 0.0 0.1 0.1
#> Never married 2.9 6.1 16.2 25.2
#> Separated 0.5 0.9 2.0 3.5
#> Divorced 1.0 2.3 12.5 15.7
#> Widowed 0.3 1.2 6.9 8.4
#> Married 4.3 4.0 38.7 47.1
#> Total 9.1 14.6 76.3 100.0
Pour connaître toutes les options de la commande prop
, vous pouvez utilisez la commande ?prop
dans la console.
Nous pouvons également obtenir les totaux des lignes et des colonnes en utilisant la commande addmargins
:
addmargins(table(gss_cat$marital,gss_cat$race))
#>
#> Other Black White Not applicable Sum
#> No answer 2 2 13 0 17
#> Never married 633 1305 3478 0 5416
#> Separated 110 196 437 0 743
#> Divorced 212 495 2676 0 3383
#> Widowed 70 262 1475 0 1807
#> Married 932 869 8316 0 10117
#> Sum 1959 3129 16395 0 21483
Pour pouvoir interpréter ce tableau on doit passer du tableau en effectifs au tableau en pourcentages ligne ou colonne. Pour cela, on peut utiliser les fonctions lprop
et cprop
de l’extension questionr
, qu’on applique au tableau croisé précédent.
Pour calculer des pourcentages lignes.
lprop(table(gss_cat$marital,gss_cat$race))
#>
#> Other Black White Total
#> No answer 11.8 11.8 76.5 100.0
#> Never married 11.7 24.1 64.2 100.0
#> Separated 14.8 26.4 58.8 100.0
#> Divorced 6.3 14.6 79.1 100.0
#> Widowed 3.9 14.5 81.6 100.0
#> Married 9.2 8.6 82.2 100.0
#> All 9.1 14.6 76.3 100.0
Pour calculer des pourcentages colonnes.
cprop(table(gss_cat$marital,gss_cat$race))
#>
#> Other Black White All
#> No answer 0.1 0.1 0.1 0.1
#> Never married 32.3 41.7 21.2 25.2
#> Separated 5.6 6.3 2.7 3.5
#> Divorced 10.8 15.8 16.3 15.7
#> Widowed 3.6 8.4 9.0 8.4
#> Married 47.6 27.8 50.7 47.1
#> Total 100.0 100.0 100.0 100.0
Comme vous pouvez le constater, les commandes lprop
et cprop
enlève les lignes ou colonnes dont la somme des effectifs est zéro. Pour empêcher ce comportement, vous devez utilisez l’option drop = FALSE
. Par exemple:
lprop(table(gss_cat$marital,gss_cat$race), drop = FALSE)
#>
#> Other Black White Not applicable Total
#> No answer 11.8 11.8 76.5 0.0 100.0
#> Never married 11.7 24.1 64.2 0.0 100.0
#> Separated 14.8 26.4 58.8 0.0 100.0
#> Divorced 6.3 14.6 79.1 0.0 100.0
#> Widowed 3.9 14.5 81.6 0.0 100.0
#> Married 9.2 8.6 82.2 0.0 100.0
#> All 9.1 14.6 76.3 0.0 100.0
Pour connaître toutes les options de ces deux commandes, vous pouvez taper ?lprop
ou ?cprop
dans la console.
12.2.2 Représentation graphique - diagramme à bandes chevauchées
Le graphique utilisé pour représenter simultanément deux variables qualitatives est le diagramme à bandes rectangulaires chevauchées.
Ce graphique ressemble au diagramme à bandes rectangulaires verticales, à la différence qu’il y aura au moins deux rectangles pour chacune des modalités ainsi qu’une légende.
Encore une fois, ce graphique peut être construit à partir des fréquences absolues ou relatives.
Nous pouvons comparer les variable race
et marital
avec des diagrammes à bandes chevauchées en utilisant l’option position = "dodge"
.
ggplot(data = gss_cat, aes(x = race, fill = marital))+
geom_bar(position = "dodge")+
labs(x = "Race",
y = "Fréquence")
12.2.3 Représentation graphique - diagramme à bandes superposées
Si nous n’utilisons pas l’option position = "dodge"
, nous obtenons des diagrammes à bandes superposées.
ggplot(data = gss_cat, aes(x = race, fill = marital))+
geom_bar()+
labs(x = "Race",
y = "Fréquence")
Pour obtenir des diagrammes comportant des fréquences relatives, nous utilisons l’option position = "fill"
.
ggplot(data = gss_cat, aes(x = race, fill = marital))+
geom_bar(position = "fill")+
labs(x = "Race",
y = "Fréquence")
12.3 Croisement d’une variable qualitative et d’une variable quantitative
12.3.1 Représentation graphique - boîte à moustaches
Croiser une variable quantitative et une variable qualitative, c’est essayer de voir si les valeurs de la variable quantitative se répartissent différemment selon la catégorie d’appartenance de la variable qualitative.
Pour cela, l’idéal est de commencer par une représentation graphique de type “boîte à moustache”.
L’interprétation d’une boîte à moustaches est la suivante : Les bords inférieurs et supérieurs du carré central représentent le premier et le troisième quartile de la variable représentée sur l’axe vertical. On a donc 50% de nos observations dans cet intervalle. Le trait horizontal dans le carré représente la médiane. Enfin, des “moustaches” s’étendent de chaque côté du carré, jusqu’aux valeurs minimales et maximales, avec une exception : si des valeurs sont éloignées du carré de plus de 1,5 fois l’écart interquartile (la hauteur du carré), alors on les représente sous forme de points (symbolisant des valeurs considérées comme “extrêmes”).
Nous discuterons plus en détail des toutes ces mesures au chapitre 16.
Voici le graphique boîte à moustaches représentant les variables marital
et age
.
ggplot(data = gss_cat, aes(x = marital, y = age))+
geom_boxplot()
#> Warning: Removed 76 rows containing non-finite values (stat_boxplot).
Pour mieux visualiser vos boîtes à moustache, vous pouvez les colorier. Si nous voulons colorier les boîtes en fonction de la variable marital
, nous ajoutons l’option fill = marital
..
ggplot(data = gss_cat, aes(x = marital, y = age, fill = marital))+
geom_boxplot()
#> Warning: Removed 76 rows containing non-finite values (stat_boxplot).
12.3.2 Représentation graphique - diagramme en violon
Nous pouvons également visualiser le lien entre une variable qualitative et une variable quantitative à l’aide d’un diagramme en violon.
L’interprétation du diagramme en violon est la suivante: La largeur du diagramme nous renseigne sur la fréquence d’apparition de la variable. Plus ils sont larges, plus la valeur de la variable est fréquente et inversement.
Nous pouvons représenter les diagrammes en violon de la variable marital
et de la variable age
.
ggplot(data = gss_cat, aes(x = marital, y = age))+
geom_violin()
#> Warning: Removed 76 rows containing non-finite values (stat_ydensity).
Nous pouvons ajouter de la couleur avec l’option fill
.
ggplot(data = gss_cat, aes(x = marital, y = age, fill = marital))+
geom_violin()
#> Warning: Removed 76 rows containing non-finite values (stat_ydensity).
Nous pouvons bien sûr superposer des boîtes à moustaches et des diagrammes en violon.
ggplot(data = gss_cat, aes(x = marital, y = age, fill = marital))+
geom_violin()+
geom_boxplot(width = 0.1)
#> Warning: Removed 76 rows containing non-finite values (stat_ydensity).
#> Warning: Removed 76 rows containing non-finite values (stat_boxplot).
12.4 Croisement de deux variables quantitatives
#ggplot(data = flights, aes(x = dep_delay, y = arr_delay))+
# geom_point(alpha = 0.25)