Nous allons maintenant mettre en pratique les tests statistiques que nous avons précédemment identifiés pour nos données qualitatives. Nous allons utiliser, en particulier, le test de Fisher pour explorer l'association entre le genre et le type de voyage et le test du Chi-2 pour examiner la relation entre la saison et le type de voyage.
Testez les associations avec Fisher
Pour exécuter le test de Fisher, il faut suivre les étapes suivantes.
Chargez les données de “Données clients VertiGo nettoyées” qui liste le genre des clients et les types de voyages. Dans le cadre de cet exemple, vous devez isoler uniquement les genres “homme” et “femme” et les types de voyage “aventure” et “culturel” pour remplir les conditions du test exact de Fisher.
Créez le tableau de contingence.
Calculez le test de Fisher en incluant l’odds ratio.
Calculez la valeur p associée.
Voici le code à exécuter pour obtenir les résultats.
import pandas as pd
from scipy.stats import fisher_exact
# Charger les données
file_path = '/mnt/data/Données+clients+VertiGo+nettoyées.csv'
data = pd.read_csv(file_path)
# Sélectionner les hommes et les femmes uniquement.
data = data[data['genre'] != "Autre"]
# Notre colonne contient des majuscules et des minuscules.
# Nous allons donc tout mettre en minuscule.
data["type de voyage"] = data["type de voyage"].str.lower()
# Créer le tableau de contingence
contingency_table_fm = pd.crosstab(data['genre'], data['type de voyage'])
# Exécuter le test exact de Fisher pour un tableau 2x2 (exemple : Aventure vs Culturel)
contingency_table_2x2_fm = contingency_table_fm[['aventure', 'culturel']]
odds_ratio, p_value = fisher_exact(contingency_table_2x2_fm)
print(f"Tableau de contingence 2x2:\n{contingency_table_2x2_fm}")
print(f"Odds Ratio: {odds_ratio}")
print(f"Valeur p: {p_value}")
Nous obtenons les résultats suivants :
Tableau de contingence :
| Aventure | Culturel |
Femme | 61 | 89 |
Homme | 60 | 97 |
Odds ratio : 1,119
p-valeur : 0,642
Comment interpréter ces résultats ?
L'odds ratio de 1,19 indique que les femmes ont pratiquement les mêmes chances de préférer les voyages d'aventure par rapport aux voyages culturels que les hommes. Cet odds ratio est très proche de 1, indiquant une quasi-égalité. Même si mathématiquement, il semble y avoir une légère probabilité supérieure pour les femmes, la valeur p va nous renseigner sur la significativité de cette différence.
La valeur p de 0,642 est bien supérieure au seuil de 0,05, ce qui signifie que nous n'avons pas suffisamment de preuves pour rejeter l'hypothèse nulle. Par conséquent, il n'y a pas d'association statistiquement significative entre le genre et le type de voyage préféré pour les catégories "Aventure" et "Culturel".
Voici une vidéo qui récapitule les étapes à suivre pour réaliser un test avec Fisher et visualiser les données avec une heat map.
Testez les relations avec Chi-2
Pour exécuter le test de Chi-2, il faut suivre les mêmes étapes que pour le test de Fisher.
À partir de “Données clients VertiGo nettoyées”, concentrez-vous sur les saisons de voyage et les types de voyages choisis par les clients de l’agence VertiGo.
Créez le tableau de contingence. Dans notre cas, nous l’avons déjà généré dans le chapitre “Identifiez les tests qualitatifs pertinents”. Le voici :
| Aventure | Culturel | Détente |
Printemps | 31 | 52 | 37 |
Été | 82 | 132 | 64 |
Automne | 39 | 61 | 42 |
Hiver | 80 | 120 | 58 |
Calculez le test du Chi-2 en prenant en compte les fréquences attendues et les degrés de liberté.
Calculez la valeur p associée.
Voici le code à exécuter pour obtenir les résultats.
import pandas as pd
from scipy.stats import chi2_contingency
# Charger les données
file_path = '/mnt/data/Données+clients+VertiGo+nettoyées.csv'
data = pd.read_csv(file_path)
# Créer le tableau de contingence
contingency_table = pd.crosstab(data['saison de voyage'], data['type de voyage'])
# Calculer le test du Chi-2
chi2_stat, p_value, dof, expected = chi2_contingency(contingency_table)
print(f"Statistique Chi-2: {chi2_stat}")
print(f"Valeur p: {p_value}")
print(f"Degrés de liberté: {dof}")
print("Fréquences attendues:")
print(expected)
Nous obtenons les résultats suivants :
Statistique Chi-2 : 5,392
Valeur p : 0,494
Degré de liberté : 6
Fréquences attendues :
| Aventure | Culturel | Détente |
Printemps | 34,88 | 54,89 | 30,23 |
Été | 80,82 | 127,16 | 70,02 |
Automne | 41,28 | 64,95 | 35,77 |
Hiver | 75,00 | 118,00 | 64,98 |
Comment interpréter ces résultats ?
Eh bien pour ça, reprenons les choses dans l’ordre.
Statistique Chi-2 : La statistique Chi-2 de 5,392 indique la somme des écarts au carré entre les fréquences observées et attendues.
Valeur p : La valeur p de 0,494 est supérieure au seuil de 0,05, indiquant que nous n'avons pas suffisamment de preuves pour rejeter l'hypothèse nulle H0.
Nous pouvons conclure que, selon les données disponibles, la saison de voyage est indépendante du type de voyage préféré.
Voici une vidéo qui récapitule les étapes à suivre pour réaliser un test avec Chi-2 et visualiser les données avec une heat map.
À vous de jouer
Contexte
Vous avez analysé “Données clients VertiGo nettoyées” dans la partie précédente et vous avez normalement sélectionné le test de Chi-2 pour comparer les destinations des clients de VertiGo avec la saison. Il n’y a plus qu’à réaliser ce test !
Consignes
Formulez les hypothèses H0 et H1.
Sélectionnez les colonnes pertinentes.
Créez le tableau de contingence.
Visualisez les données avec le graphique adapté.
Calculez le test du Chi-2 en prenant en compte les fréquences attendues et les degrés de liberté.
Calculez la valeur p associée.
Livrable
Vous devez réaliser le test en Python.
En résumé
Le test de Fisher examine l’association entre deux variables qualitatives lorsque les échantillons sont de petite taille.
Le test de Chi-2 est pertinent pour analyser les relations entre les variables qualitatives lorsque les échantillons sont suffisamment grands.
Un odds ratio proche de 1 indique une absence de différence significative entre les groupes comparés dans le test de Fisher.
Une valeur p supérieure à 0,05 dans les tests de Fisher et de Chi-2 indique que la corrélation n'est pas statistiquement significative.
Nous avons testé d’un côté les données quantitatives et de l’autre les données qualitatives. Mais que se passe-t-il quand on veut comparer des variables de types différents ? Et bien voyons cela ensemble dans la prochaine partie de ce cours !