Vous allez mener une ANOVA sur notre cas d'étude, en regardant précisément :
Dans tous les cas, nous cherchons à comprendre si les facteurs ont une influence sur le rendement de blé.
On charge tout d'abord les librairies nécessaires :
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import statsmodels.formula.api as smf
import statsmodels.api as sm
Le fichier data_anova.csv contient les rendements de blé pour 80 parcelles en fonction de la variété de blé (V1, V2, V3 ou V4).
ble = pd.read_csv('https://www.labri.fr/~zemmari/datasets/data_anova.csv', sep=";", decimal='.')
ble.head()
On veut étudier ici l'influence de la variété de blé sur le rendement.
On peut visualiser l'influence de la variété en affichant ces boîtes à moustaches :
sns.set()
ax = sns.boxplot(x="variete", y="rdt", data=ble, color='blue')
plt.xlabel('Variété de blé')
plt.ylabel('Rendement')
plt.title('Boîtes à moustaches')
plt.show()
Les 4 variétés semblent assez différentes, même si l'ordre de grandeur de ces écarts n'est pas très grand. La question sera de savoir si ces écarts sont significatifs ou pas.
C'est l'ANOVA qui nous permettra de répondre à cette question.
Étudions maintenant l'influence de la présence ou non de pesticide sur le rendement :
ax = sns.boxplot(x="phyto", y="rdt", data=ble, color='green')
plt.xlabel('Traitement phytosanitaire')
plt.ylabel('Rendement')
plt.title('Boîtes à moustaches')
plt.show()
Ici, les boîtes à moustaches ne sont pas très distinctes, même s'il y a un peu plus de variance dans le cas "SANS pesticide".
La présence de pesticide a-t-elle un impact sur le rendement ? L'ANOVA nous permet de confirmer ou d'infirmer cette intuition.
Lançons l'ANOVA pour tester l'influence de la variété de blé :
anova_variete = smf.ols('rdt~variete', data=ble).fit()
print(anova_variete.summary())
On y voit les paramètres estimés (dans la colonne "Estimate"), mais ici, ce ne sont pas les paramètres qui nous intéressent le plus.
Ce qui nous intéresse réellement, c'est le test de Fisher. La p-valeur de ce test ($7.67∗10^{-7}$) est très petite et largement inférieure à 5 %. On rejette donc l'hypothèse H0 selon laquelle $\mu_{1}=\mu_{2}=\mu_{3}=\mu_{4}=0$.
La variété de blé a donc bien un effet sur le rendement, comme nous en avions l'intuition en regardant les boîtes à moustaches.
Pour obtenir le tableau de l'analyse de la variance, on utilise la commande anova_lm :
sm.stats.anova_lm(anova_variete, typ=2)
Réalisons maintenant l'Analyse de la Variance sur le pesticide utilisé :
anova_phyto = smf.ols('rdt~phyto', data=ble).fit()
print(anova_phyto.summary())
sm.stats.anova_lm(anova_phyto, typ=2)
On trouve ici une p-valeur de 0.8, ce qui est très au-dessus de 5 %. On ne rejette donc pas l'hypothèse H0 selon laquelle $\mu_{1}=\mu_{2}=0$.
Il n'y a pas ici d'effet du pesticide sur le rendement de blé, tout au moins pas d'effet significatif.
Jusqu'ici, nous avons étudié les 2 facteurs (variété et pesticide) séparément. Cependant, la variété et le pesticide peuvent avoir des interactions qui influent sur le rendement.
En effet, même si l'on a montré que, globalement, le pesticide n'a pas d'effet sur le rendement, il se peut que, pour une variété précise, il y ait quand même un effet du pesticide sur le rendement. L'ANOVA à 2 facteurs va nous permettre d'étudier ces éventuelles interactions :
anova_variete_phyto = smf.ols('rdt~variete*phyto', data=ble).fit()
print(anova_variete_phyto.summary())
sm.stats.anova_lm(anova_variete_phyto)
On voit sur le tableau 3 lignes :
La p-valeur des interactions (93,75 %) est très largement supérieure à 5 % ; on en déduit donc que les interactions n'ont pas d'impact sur le rendement.
En pratique, on part toujours du tableau de l'ANOVA à 2 facteurs pour tester les interactions. Si elles sont significatives, on les conserve. Sinon, on teste séparément les 2 facteurs séparément par des ANOVA à 1 facteur.