Le tri à plat et le tri croisé - des statistiques descriptives simples
La question peut paraître simple mais il s'agit d'une question récurrente lors de formations orientées statistiques pour des non statisticiens.
Tri à plat
Utilisons un exemple : lors d'une enquête vous avez obtenu la catégorie socio-professionnelle de vos répondants. Celle-ci est une variable qualitative. Le tri à plat est représenté sous forme d'un tableau dans lequel la répartition des répondants dans les différentes catégories socio-professionnelles est affichée.
Il s'agit tout simplement de statistiques descriptives pour une variable qualitative. La représentation classique d'un tri à plat est un graphique en bâtons.
Tri croisé
Utilisons un exemple : lors d'une enquête vous avez obtenu la catégorie socio-professionnelle et la ville de résidence de vos répondants. Il s'agit de variables qualitatives. Le tri croisé consiste en la construction d'un tableau croisant ces deux variables : une ligne correspond à une modalité de la première variable et une colonne correspond à une modalité de la seconde variables. Les valeurs dans le tableau correspondent au comptage du nombre d'individus ayant ces deux caractéristiques. Ainsi on pourra voir le nombre de CSP- vivant à Paris.
Il s'agit tout simplement de statistiques bivariées pour deux variables qualitatives. Le tableau obtenu est aussi appelé tableau croisé ou tableau de contingence.
Faire un tri à plat avec Python ou R
Avec Python, nous utiliserons directement le package pandas
pour effectuer des tris à plat sur des colonnes d'un DataFrame.
Supposons que nous avons récupéré des données au format csv, nous utilisons :
import pandas as pd
data = pd.read_csv("data.csv")
Les données qui nous intéressent sont dans la colonne csp
, nous allons donc faire un tri à plat sur cette colonne :
data["csp"].value_counts()
On peut aussi prendre en compte les données manquantes et obtenir des probabilités (entre 0 et 1) plutôt que des valeurs. On utilisera alors :
En R, il existe une fonction simple qui permet d'obtenir un tri à plat, il s'agit de table()
(elle nous servira aussi pour le tri croisé). Vous pouvez aussi utiliser summary()
qui pour une variable du type factor
vous donnera la répartition des modalités avec les données manquantes. Finalement, le package questionr
vous permet d'obtenir un tri à plat plus détaillé (avec les fréquences en pourcentage). Voici les codes utilisés :
Faire un tri croisé avec R ou Python
Avec Python, nous utiliserons directement le package pandas pour effectuer des tris croisés sur des colonnes d'un DataFrame.
Les données qui nous intéressent sont dans la colonne csp
et dans la colonne ville
, nous allons donc faire un tri croisé sur ces colonnes afin d'obtenir un tableau de contingence. Nous pourrons utiliser deux approches :
pd.crosstab()
.pivot_table()
Avec R, nous utiliserons aussi la fonction <code>table()</code> sur plusieurs colonnes
Le package <code>gmodels</code> possède une fonction permettant d'aller plus loin pour l'analyse des tableaux croisés. Cette fonction est <code>Crosstable</code> et permet d'obtenir des résultats ressemblant à ceux de la <code>proc freq</code> de SAS.
library(gmodels)
CrossTable(data$csp, data$ville)
Les données et le code
Les données utilisés ainsi que le code sont disponibles ci-dessous.
Découvrez nos formations Python et R
Partager cet article
Comments 3
J’ai aimé, en fait je suis doctorant en cote d’ivoire. je suis biochimiste je voudrais plus de formation si possible.
Bonjour,
Nous aimerions réaliser une représentation graphique de notre tableau de contingence. Pouvez-vous nous expliquer comment réaliser la représentation graphique située au début de votre article svp ?
Pouvons-nous également savoir comment elle se nomme ?
En vous remerciant
Bien cordialement
Chloé Party
Bonjour,
Il s’agit d’un ballon plot, vous trouverez une fonction pour l’exécuter ici : https://rpkgs.datanovia.com/ggpubr/reference/ggballoonplot.html
Bien cordialement,
Emmanuel Jakobowicz
Stat4decision