• 10 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 10/9/24

Analysez une variable quantitative et une qualitative par ANOVA

Dans les 2 chapitres précédents, nous avons étudié les corrélations entre 2 variables quantitatives. Maintenant, passons à l'étude de deux variables dont l'une est qualitative, l'autre quantitative.

Définissez quelles questions se poser

En fonction des couples de variables que nous utiliserons, la méthode d'analyse sera la même, mais nous pourrons répondre à différentes questions intéressantes :

  • Les dépenses que vous faites le week-end sont-elles plus grosses qu'en semaine ? (Variables montant et weekend).

  • Les dépenses que vous faites en début de mois sont-elles plus grosses qu'en fin de mois ? (montant et quart_mois).

  • Le montant d'une opération est-il différent d'une catégorie de dépense à l'autre ? (montant et categ).

  • Vos paiements en carte bancaire sont-ils toujours petits, et vos virements importants ? (type et montant).

  • Le solde de votre compte est-il plus petit en fin de mois qu'en début de mois ? (solde_avt_operation et quart_mois).

Créez des graphiques

Voici le code qui permet de représenter une variable quantitative et une variable qualitative. Tout d'abord, créez le sous-échantillon sur lequel vous souhaitez travailler en adaptant ce code, notamment les variables X et Y selon la question que vous aurez choisie parmi celles ci-dessus.

X = "categ" # qualitative
Y = "montant" # quantitative

# On ne garde que les dépenses
sous_echantillon = data[data["montant"] < 0].copy()
# On remet les dépenses en positif
sous_echantillon["montant"] = -sous_echantillon["montant"]
# On n'étudie pas les loyers car trop gros:
sous_echantillon = sous_echantillon[sous_echantillon["categ"] != "LOYER"] 

Ensuite, ces quelques lignes de code affichent votre graphique !

modalites = sous_echantillon[X].unique()
groupes = []
for m in modalites:
    groupes.append(sous_echantillon[sous_echantillon[X]==m][Y])

# Propriétés graphiques (pas très importantes)    
medianprops = {'color':"black"}
meanprops = {'marker':'o', 'markeredgecolor':'black',
            'markerfacecolor':'firebrick'}
    
plt.boxplot(groupes, labels=modalites, showfliers=False, medianprops=medianprops, 
            vert=False, patch_artist=True, showmeans=True, meanprops=meanprops)
plt.show()

 

On voit ici que les montants sont très différents d'une catégorie à l'autre. Par exemple, les montants des dépenses de transport sont plus élevés et plus dispersés que ceux des factures téléphoniques. Mais vérifions maintenant cette affirmation par les chiffres, grâce à une modélisation.

Modélisons

Revenons sur la démarche que nous avons eue au chapitre précédent. Pour voir s'il existait une corrélation (linéaire) entre 2 variables, nous avons supposé que cette corrélation existait, puis nous avons appliqué un modèle sur cette supposition. Nous avons ensuite estimé les paramètres $\(a\)$ et $\(b\)$ . Enfin, nous avons vérifié la supposition de départ en évaluant la qualité du modèle. Si ce modèle est de bonne qualité, alors c'est qu'il y a une forte corrélation entre X et Y. En bonus, nous avons profité de la formule de la régression linéaire $\(Y = aX + b + \epsilon\)$ pour interpréter $\(a\)$ comme la somme d'argent consommée en 1 jour, et $\(b\)$ comme la somme d'argent de vos stocks et produits non consommables.

Ici, nous utiliserons la même démarche.

On pourrait reprendre la formule de la régression linéaire ci-dessus, sauf qu'elle implique de multiplier $\(X\)$ par $\(a\)$ . Or cette fois-ci, X est qualitative, comme notre variable categ. Multiplier une variable qualitative par un nombre n'a aucun sens (ex. : "TRANSPORT" * 3 n'a aucun sens !).

Nous allons faire autrement. Nous allons donc faire la supposition que vos opérations bancaires ont un montant de référence en commun appelé $\(\mu\)$ . Ensuite, on considère que le montant de l'opération s'ajuste en fonction de la catégorie $\(i\)$ de dépense (loyer, transport, courses, etc.). Si une catégorie a des montants qui sont en général inférieurs à $\(\mu\)$ , alors cet ajustement $\(\alpha_i\)$ sera négatif. Dans le cas contraire, il sera positif. On ajoute la contrainte que la somme de tous les $\(\alpha_i\)$ soit égale à 0.

Comme au chapitre précédent, tu commettras toujours une erreur de prédiction, car au sein d'une même catégorie, les montants ne sont pas tous les mêmes !

C'est bien vrai. Comme pour le modèle de la régression linéaire, on aura ici aussi un terme d'erreur $\(\epsilon\)$ :

$\(Y = \alpha_{i} + \mu + \epsilon\)$

Comme dans le chapitre précédent, on peut laisser l'ordinateur estimer tous les $\(\alpha_i\)$ et $\(\mu\)$ , sauf qu'ici, les calculs mathématiques qui nous disent quels sont les $\(\alpha_i \)$ et $\(\mu\)$ qui minimisent l'erreur $\(\epsilon \)$ donnent des résultats très intuitifs :

  • Le montant de référence $\( \mu\)$ est estimé par la moyenne de tous les montants. On appelle cette estimation $\(\hat{\mu}\)$

  • Pour une catégorie $\(i\)$ , $\( \alpha_i\)$ est estimé en calculant l'écart entre $\(\hat{\mu}\)$ et la moyenne $\(\overline{y_i}\)$ des montants de la catégorie $\(i\)$ , c'est-à-dire : $\(\hat{\alpha_i} = \overline{y_i} - \hat{\mu}\)$

Évaluez notre modèle : les variables sont-elles corrélées ?

Notre modèle est-il de qualité ? Prévoit-on correctement les montants des opérations uniquement à partir de leur catégorie ?

Comme au chapitre précédent, on espère que notre modèle parvienne à expliquer un gros pourcentage des variations des données. Si c'est le cas, cela signifie que les variables  categ  et  montant  sont fortement corrélées.

Pour évaluer cela, la formule utilisée est exactement la même que celle du chapitre précédent : $\(SCT = SCE + SCR\)$ . Mais ici, comme la variable X est qualitative, on peut donner à SCT, SCE et SCR des expressions équivalentes à celles du chapitre précédent. Elles sont données dans la section juste en dessous. De plus, cela permet une meilleure interprétation de ces 3 sigles, qui peuvent être renommés respectivement en variation totalevariation interclasse et variation intraclasse (les classes sont les modalités de X).

De la même manière qu'on avait au chapitre précédent $\(R^2 = \frac{SCE}{SCT}\)$ , l'équivalent ici s'appelle le rapport de corrélation, compris entre 0 et 1, donné par :

$\(\eta^2_{Y/X} = \frac{V_{interclasses}}{V_{totale}}\)$

Si  $\(\eta^2_{Y/X} = 0\)$  , cela signifie que les moyennes par classes sont toutes égales. Il n’y a donc pas à priori de relation entre les variables Y et X. Au contraire, si $\(\eta^2_{Y/X} = 1\)$ , cela signifie que les moyennes par classes sont très différentes, chacune des classes étant constituée de valeurs identiques : il existe donc à priori une relation entre les variables Y et X.

Voici le code permettant de calculer $\(\eta^2\)$ (eta carré ou eta squared, en anglais). Je vous propose ici de faire le calcul à la main ;) :

X = "categ" # qualitative
Y = "montant" # quantitative

sous_echantillon = data[data["montant"] < 0] # On ne garde que les dépenses

def eta_squared(x,y):
    moyenne_y = y.mean()
    classes = []
    for classe in x.unique():
        yi_classe = y[x==classe]
        classes.append({'ni': len(yi_classe),
                        'moyenne_classe': yi_classe.mean()})
    SCT = sum([(yj-moyenne_y)**2 for yj in y])
    SCE = sum([c['ni']*(c['moyenne_classe']-moyenne_y)**2 for c in classes])
    return SCE/SCT
    
eta_squared(sous_echantillon[X],sous_echantillon[Y])

On obtient un résultat proche de 0.4, ce qui laisse penser qu'il y a effectivement une corrélation entre le montant des dépenses et leur catégorie. C'est ce que nous avions observé sur le graphique en haut du chapitre !

Appréhendez les expressions de SCT, SCE et SCR

Les expressions de SCT, SCE et SCR introduisent les effectifs $\(n_i\)$ de chacune des classes $\(i\)$ , qui sont au nombre de $\(k\)$ . Ainsi,

$\(SCT = \sum_{j=1}^{n}(y_j-\overline{y})^2\ \text{ devient }\ \sum_{i=1}^k\sum_{j=1}^{n_i}(y_{ij}-\overline{y})^2\)$

$\(SCE = \sum_{j=1}^n(\hat{y_j}-\overline{y})^2\ \text{ devient }\ \sum_{i=1}^kn_i(\overline{y_i}-\overline{y})^2\)$

$\(SCR = \sum_{j=1}^n(y_j-\hat{y_j})^2\ \text{ devient }\ \sum_{i=1}^k\sum_{j=1}^{n_i}(y_{ij}-\hat{y_i})^2 = \sum_{i=1}^kn_is_i^2\)$

À vous de jouer

On va aller plus loin en analysant la corrélation entre la variable quart_mois créée précédemment et le montant des achats. En effet, il serait intéressant de déterminer si certains jours sont plus "propices" à la dépense que d'autres et pourquoi pas, essayer de dégager les raisons !

En résumé

  • Le graphique le plus adapté pour représenter la relation entre une variable quantitative et une variable qualitative est une boite à moustaches, ou boxplot, en anglais.

  • L'ANOVA est une modélisation qui essaie d'expliquer les variations de la variable quantitative en fonction des modalités de la variable qualitative.

  • Elle permet de calculer le rapport de corrélation, noté  $\(\eta^2\)$ utile pour évaluer numériquement la corrélation

 Enfin, terminons avec l'analyse de deux variables qualitatives avec le Chi-2. Vous êtes prêt ?

Example of certificate of achievement
Example of certificate of achievement