Contenu du cours
Théorie Avancée des Probabilités
Théorie Avancée des Probabilités
Test de l'Hypothèse d'Indépendance de Deux Variables Aléatoires
Dans les tâches de la vie réelle, il est souvent nécessaire d'analyser la dépendance entre différentes caractéristiques. Par exemple:
-
Genre et affiliation à un parti politique: Nous pouvons tester s'il existe une relation entre le genre et l'affiliation à un parti politique;
-
Niveau d'éducation et satisfaction au travail: Nous pouvons tester s'il existe une relation entre le niveau d'éducation et la satisfaction au travail;
-
Âge et comportement de vote: Nous pouvons tester s'il existe une relation entre l'âge et le comportement de vote;
-
Niveau de revenu et mode de transport préféré: Nous pouvons tester s'il existe une relation entre le niveau de revenu et le mode de transport préféré.
Mais comment pouvons-nous prouver que les variables sont indépendantes si nous ne traitons pas l'ensemble de la population mais seulement de petits échantillons des variables correspondantes? Pour cela, nous pouvons utiliser le critère d'indépendance du chi-carré.
Formulation de l'hypothèse
Nous pouvons utiliser ce critère pour tester l'hypothèse suivante:
Hypothèse principale: les variables aléatoires correspondantes sont indépendantes les unes des autres.
Hypothèse alternative: il existe certaines relations entre les variables aléatoires considérées
Tableau de contingence
Pour utiliser le test d'indépendance du chi-carré, nous devons effectuer un certain prétraitement des données - créer un tableau de contingence. Un tableau de contingence, également connu sous le nom de tableau de croisement, est un tableau utilisé pour résumer les données catégorielles de deux variables ou plus. Le tableau présente la distribution conjointe des variables, y compris la fréquence ou le nombre de chaque combinaison de catégories pour les variables. Regardons l'exemple:
import pandas as pd # Example data data = {'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'F', 'M'], 'Smoker': ['No', 'No', 'No', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes']} df = pd.DataFrame(data) # Create contingency table using pandas crosstab cont_table = pd.crosstab(df['Gender'], df['Smoker']) print(cont_table)
La matrice de contingence pour les variables aléatoires continues est construite un peu différemment. Nous divisons d'abord nos valeurs en plusieurs sous-ensembles discrets et seulement ensuite nous construisons la matrice de contingence, par exemple :
import pandas as pd # Create a sample dataset data = pd.DataFrame({'age': [22, 45, 32, 19, 28, 57, 39, 41, 36, 24], 'income': [50000, 60000, 70000, 80000, 90000, 100000, 110000, 120000, 130000, 140000]}) # Define the bins for age bins = [18, 25, 35, 45, 55, 65, 75] # Create a new column with the age bins data['age_group'] = pd.cut(data['age'], bins) # Create a new column with the income bins splitted on 3 equal parts data['income_group'] = pd.cut(data['income'], 3) # Create a contingency table contingency_table = pd.crosstab(data['age_group'], data['income_group']) print(contingency_table)
Critère d'indépendance du chi-carré en Python
Enfin, utilisons le critère d'indépendance du chi-carré pour vérifier l'indépendance sur un jeu de données réel.
import pandas as pd from scipy.stats import chi2_contingency data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/Advanced+Probability+course+media/heart.csv') # Calculate correlation between target and other features for i in data.columns: print('Covariance between ', i, ' and target is:', data.corr()['target'].loc[i]) # If the correlation is not close to zero than features have some linear relationships # fbs and target have very small correlation so there are no linear dependencies between them # Let's check hypothesis that fbs and hear disease occurrence are independent # Choose significance level alpha = 0.05 # Contingency table for discrete target and fbs cont_table = pd.crosstab(data['fbs'], data['target']) # Provide chi2 independence test chi2_stat, p_val, dof, expected = chi2_contingency(cont_table, correction=True) if p_val < alpha: print('\n Fbs and heart disease occurrence are dependant') else: print('\n Fbs and heart disease occurrence are independant')
Merci pour vos commentaires !