Nous chargeons la base de données dans la variable cpes :

# Charger des données dans la variable cpes
cpes <- read.csv("./cpes_quanti/bdd_alimentation.csv")

Introduction : utilité de la statistique descriptive bivariée

On considère conjointement deux variables X et Y pour

Lien entre deux variables quantitatives

Nous allons étudier deux outils qui peuvent être employés pour décrire le lien entre deux variables quantitatives.

Le nuage de points

Premier exemple : lien entre le nombre de repas pris seuls et le nombre de repas pris dans son logement personnel.

repas.seul <- cpes$repas.qui.seul.midi + cpes$repas.qui.seul.soir
repas.logt <- cpes$repas.ou.logement.midi + cpes$repas.ou.logement.soir

plot(repas.seul, repas.logt,
     xlab = "Nombre de repas pris seuls",
     ylab = "Nombre de repas pris chez soi",
     main = "Lien entre le nombre de repas pris seuls et chez soi")

Questions :

  • Remarquez-vous un lien entre ces deux variables ?
  • Pourquoi certains points sont-ils plus “foncés” que d’autres ? En quoi pourrait-on améliorer ce graphique ?
  • Comment obtient-on les légendes de ce graphique ?

Deuxième exemple : lien entre montant des courses par personne et des ressources financières totales.

# On commence par sélectionner un sous-ensemble de notre échantillon,
# ceux qui ont fait des courses pour au moins une personne.
cpes.courses <- cpes[cpes$courses.pers >= 1, ]

# On peut ensuite ajouter une nouvelle variable à notre base de données : le montant des courses pour une personne
cpes.courses$courses.prixprop <- cpes.courses$courses.prix/cpes.courses$courses.pers

# On trace le nuage de points
plot(cpes.courses$ressources.total, cpes.courses$courses.prixprop,
     pch = 19, col = rgb(1, 0, 0, 0.3), # Faire des points transparents à 30%
     frame.plot = F, # Supprimer la boîte en haut et à droite
     xlab = "Montant des ressources totales (€)",
     ylab = "Montant des courses par personne (€)",
     main = "Lien entre ressources financières et montant des courses")

Questions :

  • Remarquez-vous un lien entre ces deux variables ?
  • Ce lien vous paraît-il plus fort ou plus évident que le précédent ?

Le \(r\) de Pearson

Le coefficient \(r\) de Pearson permet de mesurer le degré de corrélation linéaire entre deux variables quantitatives \(X\) et \(Y\). Il est compris entre \([-1 ; 1]\) :

  • Le signe indique une corrélation positive ou négative
  • 0 signifie une absence de corrélation
  • Plus la valeur absolue est proche de 1, plus le degré de corrélation linéaire est élevé

Prudence ! Le \(r\) de Pearson mesure seulement la force de la corrélation linéaire entre deux variables. D’autres relations, non-linéaires, peuvent exister.

Calcul du \(r\) pour l’exemple 1 :

# L'argument "use" permet de ne pas se préoccuper des NA
cor(repas.seul, repas.logt, use = "complete.obs")
## [1] 0.4300067

Interprétez ce coefficient.

Calcul du \(r\) pour l’exemple 2 :

# L'argument "use" permet de ne pas se préoccuper des NA
cor(cpes.courses$ressources.total, cpes.courses$courses.prixprop, use = "complete.obs")
## [1] 0.1249346

Interprétez ce coefficient et comparez-le au précédent. Que pouvez-vous en déduire ?

Lien entre deux variables qualitatives

La table de contingence

Aussi appelé “tableau croisé”.

Si les statisticiens préfèrent, en toute rigueur, parler de « table de contingence », les sociologues utilisent plus facilement l’expression de « tableau croisé », plus imagée, pour désigner cet outil qui à lui seul incarne, en même temps qu’il la symbolise, toute une façon de faire de la sociologie.

Pierre Mercklé - Les 100 mots de la sociologie

Table de contingence en effectifs

Exemple : étudier le lien entre genre et filière du CPES.

t <- table(cpes$genre, cpes$cpes.filiere)
t
##        
##         humanites sciences sesj
##   femme        35       17   42
##   homme        17        9    8

Avec les marges :

t.margins <- addmargins(t)
t.margins
##        
##         humanites sciences sesj Sum
##   femme        35       17   42  94
##   homme        17        9    8  34
##   Sum          52       26   50 128

En changeant le nom des marges :

t.margins <- addmargins(t, FUN = list(list(Ensemble = sum)), quiet = T)
t.margins
##           
##            humanites sciences sesj Ensemble
##   femme           35       17   42       94
##   homme           17        9    8       34
##   Ensemble        52       26   50      128

Interprétez. Quelles sont les limites d’un tableau contenant uniquement des effectifs ?

Pourcentages totaux

Solution “manuelle” ?

t/nrow(cpes)
##        
##         humanites  sciences      sesj
##   femme 0.2734375 0.1328125 0.3281250
##   homme 0.1328125 0.0703125 0.0625000

Évidemment, il existe une fonction plus élégante, fournie par le package questionr :

library("questionr")
prop(t)
##        
##         humanites sciences sesj  Total
##   femme  27.3      13.3     32.8  73.4
##   homme  13.3       7.0      6.2  26.6
##   Total  40.6      20.3     39.1 100.0

Interprétez ce tableau. Quelles sont ses limites ?

Pourcentages en ligne

Fonction rprop, fournie par questionr, rend la tâche très simple :

rprop(t)
##           
##            humanites sciences sesj  Total
##   femme     37.2      18.1     44.7 100.0
##   homme     50.0      26.5     23.5 100.0
##   Ensemble  40.6      20.3     39.1 100.0

Comment interpréter ce tableau ? Comment utiliser l’ensemble ? Ce tableau nous informe-t-il sur le lien entre ces deux variables ? Si oui, de quelle manière ?

Pourcentages en colonne

Encore une fois, une fonction très simple :

cprop(t)
##        
##         humanites sciences sesj  Ensemble
##   femme  67.3      65.4     84.0  73.4   
##   homme  32.7      34.6     16.0  26.6   
##   Total 100.0     100.0    100.0 100.0

Comment interpréter ce tableau ? Comment utiliser l’ensemble ? Ce tableau nous informe-t-il sur le lien entre ces deux variables ? Si oui, de quelle manière ?

Créer une table de contigence pour une question à choix multiples

Difficulté pour les questions à choix multiples,

# Étape 1 : regrouper les variables dichotomiques
courses <- cpes[, c("courses.bio", "courses.discount", "courses.epicerie", "courses.marche", "courses.supermarche", "courses.traiteur")]

# Étape 2 : créer le tableau des effectifs
t <- cross.multi.table(courses, cpes$cpes.filiere)

addmargins(t)
##                     humanites sciences sesj Sum
## courses.bio                 9        5    4  18
## courses.discount           18        5   15  38
## courses.epicerie            6        2    5  13
## courses.marche              2        1    1   4
## courses.supermarche        19       10   23  52
## courses.traiteur            4        2    8  14
## Sum                        58       25   56 139

On peut aussi calculer des pourcentages en colonne si l’on souhaite :

# Étape 3 : afficher le tableau avec des % en colonne
cprop(t)
##                     humanites sciences sesj  Ensemble
## courses.bio          15.5      20.0      7.1  12.9   
## courses.discount     31.0      20.0     26.8  27.3   
## courses.epicerie     10.3       8.0      8.9   9.4   
## courses.marche        3.4       4.0      1.8   2.9   
## courses.supermarche  32.8      40.0     41.1  37.4   
## courses.traiteur      6.9       8.0     14.3  10.1   
## Total               100.0     100.0    100.0 100.0

Attention : est-ce normal d’obtenir 100% en total ? Déduisez l’individu statistique dans ce tableau.

Alternative graphique

Graphique en mosaïque :

mosaicplot(genre ~ cpes.filiere, data = cpes,
           main = "Relation entre genre et filière du CPES")

Lien entre une variable quantitative et une variable qualitative

Graphique : boîte à moustaches multiples

Premier exemple : lien entre temps passé à cuisiner et le genre.

boxplot(cuisine.temps ~ genre, data = cpes)

Interprétez.

Exemple 2 : temps de cuisine et baccalauréat de la mère.

boxplot(cuisine.temps ~ mere.bac, data = cpes)

Interprétez.

Tableau

Tableau qui croise la variable catégorielle avec la moyenne de la variable quantitative dans chacun des groupes.

Exemple 1 :

aggregate(cpes$cuisine.temps, list(Genre=cpes$genre), mean, na.rm = TRUE)

Exemple 2 :

aggregate(cpes$cuisine.temps, list(MereBac=cpes$mere.bac), mean, na.rm = TRUE)

Comment interpréter ces deux tableaux ?