1 Introduction

La croissance des plantes dépend de nombreux facteurs agronomiques, parmi lesquels le substrat de culture (terreau) et la variété génétique jouent un rôle déterminant. Dans ce contexte, une expérimentation a été mise en place afin d’évaluer l’effet du type de terreau et de la variété de plante sur la hauteur des plants. Trois types de terreaux — Manguier (Ma), Caïlcédrat (Ca) et Anacarde (An) — ont été testés sur deux variétés (Var1 et Var2), avec quatre répétitions par combinaison.

La problématique centrale de cette étude est la suivante : le type de terreau et/ou la variété ont-ils un effet significatif sur la hauteur des plantes ? Pour répondre à cette question, nous mobilisons l’Analyse de la Variance (ANOVA), qui permet de tester l’égalité des moyennes entre plusieurs groupes.

Objectif : Analyser les différences entre les groupes à l’aide de l’ANOVA et interpréter les résultats statistiques.


2 Installation et Importation des packages

# Installer les packages manquants et les charger

pkgs <- c("ggplot2", "dplyr", "tidyr", "knitr", "kableExtra",
          "car", "emmeans", "multcomp", "ggpubr", "tidyverse", "rstatix", "afex", "lme4")

for (p in pkgs) {
  if (!requireNamespace(p, quietly = TRUE)) install.packages(p)
  library(p, character.only = TRUE)
}

3 Analyse descriptive des variables d’étude

3.1 Présentation des données

La base mise à notre disposition porte sur des données réelles recueillies dans le cadre d’une expérimentation. Dans le cadre de cette expérimentation, trois types de terreau :

  • Terreau de Manguier (Ma)
  • Terreau de Caïlcédrat (Ca)
  • Terreau d’Anacarde (An)

ont été utilisées sur deux types de variétés de plantes (Var1 et Var2). L’expérience a été répété quatre fois et chaque fois on mesure la hauteur des plantes.

# Chargement des données
data <- readxl::read_xlsx("Base_anova.xlsx")
# Visualisation des premières lignes de la base
head(data)
#> # A tibble: 6 × 5
#>     Num Repetition Terreau Variete Hauteur
#>   <dbl> <chr>      <chr>   <chr>     <dbl>
#> 1     1 T1         Ma      Var1         43
#> 2     2 T1         Ma      Var1         42
#> 3     3 T1         Ma      Var1         40
#> 4     4 T1         Ma      Var1         46
#> 5     5 T1         Ma      Var1         42
#> 6     6 T1         Ma      Var1         40

La base a été transformée de sorte à avoir quatre colonnes correspondant respectivement à la répétition, au type de terreau, au type de variété et à la hauteur. Elle contient 253 observations.

3.2 Analyse descriptive des variables d’étude

3.2.1 Analyse des facteurs du modèle

# Transformation des variables en facteurs
data$Repetition <- as.factor(data$Repetition)
data$Terreau <- as.factor(data$Terreau)
data$Variete <- as.factor(data$Variete)
# Distribution des types de terreau par répétition
table(data$Repetition, data$Terreau) %>%
  kable(caption = "Distribution des types de terreau par répétition",
        booktabs = TRUE,
        align = "c") %>%
  kable_styling(full_width = TRUE,
                font_size = 14,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Distribution des types de terreau par répétition
An Ca Ma
T1 24 21 33
T2 22 19 16
T3 20 20 23
T4 12 13 30

Le tableau ci-dessus présente la distribution des types de terreau selon les répétitions. On constate que le plan expérimental est équilibré : chaque type de terreau (An, Ca, Ma) apparaît exactement une fois par répétition, ce qui garantit une comparaison valide entre les groupes et évite les biais liés à des effectifs inégaux.

# Graphique de la distribution des types de terreau par répétition
ggplot(data, aes(x = Repetition, fill = Terreau)) +
  geom_bar(position = "dodge") +
  labs(title = "Distribution des types de terreau par répétition",
       x = "Répétition",
       y = "Nombre d'observations") +
  theme_minimal() +
  theme(legend.title = element_blank())

La figure ci-dessus confirme visuellement la structure équilibrée du dispositif expérimental. Chaque répétition contient exactement une observation par type de terreau. Cette répartition uniforme est une condition essentielle pour la validité des tests ANOVA réalisés par la suite.

# Distribution des types de variétés par répétition
table(data$Repetition, data$Variete) %>%
  kable(caption = "Distribution des types de variétés par répétition",
        booktabs = TRUE,
        align = "c") %>%
  kable_styling(full_width = TRUE,
                font_size = 14,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Distribution des types de variétés par répétition
Var1 Var2
T1 37 41
T2 27 30
T3 31 32
T4 29 26

Ce tableau montre que les deux variétés (Var1 et Var2) sont également réparties à travers les répétitions, avec une observation de chaque variété par répétition. Ce dispositif en blocs complets garantit que la variété n’est pas confondue avec l’effet de la répétition.

# Graphique de la distribution des types de variétés par répétition
ggplot(data, aes(x = Repetition, fill = Variete)) +
  geom_bar(position = "dodge") +
  labs(title = "Distribution des types de variétés par répétition",
       x = "Répétition",
       y = "Nombre d'observations") +
  theme_minimal() +
  theme(legend.title = element_blank())

La figure confirme la parfaite symétrie de la répartition des variétés sur les quatre répétitions. Var1 et Var2 apparaissent en effectifs strictement identiques à chaque répétition, ce qui reflète un plan expérimental rigoureux et équilibré.

3.2.2 Analyse de la hauteur des plantes

# Statistiques descriptives de la variable hauteur 
stats_globales <- data %>%
  summarise(
    N        = n(),
    Moyenne  = round(mean(Hauteur), 2),
    Ecart_type = round(sd(Hauteur), 2),
    Min      = round(min(Hauteur), 2),
    Max      = round(max(Hauteur), 2)
  )
kable(stats_globales,
      caption = "Statistiques descriptives globales",
      booktabs = TRUE,
      align = "c") %>%
  kable_styling(full_width = TRUE,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Statistiques descriptives globales
N Moyenne Ecart_type Min Max
253 34.27 8.16 8.5 56.2

Le tableau de statistiques descriptives globales donne un aperçu général de la variable réponse — la hauteur des plantes. La moyenne et l’écart-type permettent d’apprécier respectivement le niveau central et la dispersion des hauteurs mesurées sur l’ensemble de l’échantillon. La différence entre le minimum et le maximum renseigne sur l’étendue totale des valeurs, qui pourra s’expliquer par l’effet des facteurs étudiés.

# Graphique de la distribution de la hauteur des plantes
ggplot(data, aes(x = Hauteur)) +
  geom_histogram(binwidth = 1, fill = "steelblue", color = "black") +
  labs(title = "Distribution de la hauteur des plantes",
       x = "Hauteur (cm)",
       y = "Fréquence") +
  theme_minimal()

L’histogramme de la distribution de la hauteur des plantes permet de visualiser la forme générale de la distribution. On peut y observer si la distribution est symétrique, unimodale ou si elle présente une asymétrie ou plusieurs modes, ce qui donnerait un premier indice sur la présence d’effets entre groupes.

  # Statistique de la distribution de la hauteur des plantes par type de terreau
stats_terreau <- data %>%
  group_by(Terreau) %>%
  summarise(
    N        = n(),
    Moyenne  = round(mean(Hauteur), 2),
    Ecart_type = round(sd(Hauteur), 2),
    Min      = round(min(Hauteur), 2),
    Max      = round(max(Hauteur), 2)
  )
kable(stats_terreau,
      caption = "Statistiques descriptives par type de terreau",
      booktabs = TRUE,
      align = "c") %>%
  kable_styling(full_width = TRUE,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Statistiques descriptives par type de terreau
Terreau N Moyenne Ecart_type Min Max
An 78 33.53 9.31 8.5 51.1
Ca 73 35.76 7.45 17.5 56.2
Ma 102 33.76 7.63 11.5 46.0

Ce tableau présente les statistiques descriptives de la hauteur des plantes selon le type de terreau. Des différences notables entre les moyennes des groupes (An, Ca, Ma) constitueraient un premier indice d’un effet significatif du terreau sur la croissance des plantes. Un écart-type élevé au sein d’un groupe indiquerait une forte variabilité intra-groupe, ce qui peut affecter la puissance du test ANOVA.

  # Statistique de la distribution de la hauteur des plantes par type de terreau et de variete
stats_terreau_variete <- data %>%
  group_by(Terreau, Variete) %>%
  summarise(
    N        = n(),
    Moyenne  = round(mean(Hauteur), 2),
    Ecart_type = round(sd(Hauteur), 2),
    Min      = round(min(Hauteur), 2),
    Max      = round(max(Hauteur), 2)
  )
kable(stats_terreau_variete,
      caption = "Statistiques descriptives par type de terreau et de variété",
      booktabs = TRUE,
      align = "c") %>%
  kable_styling(full_width = TRUE,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Statistiques descriptives par type de terreau et de variété
Terreau Variete N Moyenne Ecart_type Min Max
An Var1 43 35.64 8.52 12.5 51.1
An Var2 35 30.94 9.71 8.5 46.0
Ca Var1 35 38.21 6.84 22.0 56.2
Ca Var2 38 33.52 7.37 17.5 46.3
Ma Var1 46 36.25 6.45 19.5 46.0
Ma Var2 56 31.72 7.97 11.5 46.0

Ce tableau croisé (terreau × variété) permet d’examiner simultanément l’effet des deux facteurs sur la hauteur des plantes. Si les moyennes diffèrent de manière systématique selon la combinaison terreau-variété, cela peut suggérer une interaction entre ces deux facteurs. Les écarts-types renseignent sur la variabilité interne à chaque sous-groupe.

#Boxplot de la hauteur des plantes par type de terreau
ggplot(data, aes(x = Terreau, y = Hauteur, fill = Terreau
)) +
  geom_boxplot() +
  labs(title = "Hauteur des plantes par type de terreau",
       x = "Type de terreau",
       y = "Hauteur (cm)") +
  theme_minimal() +
  theme(legend.position = "none")

Le boxplot ci-dessus illustre la distribution de la hauteur des plantes pour chacun des trois types de terreau. Des médianes situées à des niveaux différents d’un terreau à l’autre indiqueraient un effet du type de terreau sur la hauteur. La largeur des boîtes et la longueur des moustaches renseignent sur la variabilité au sein de chaque groupe. La présence de points isolés peut signaler des valeurs atypiques.

# Boxplot de la hauteur des plantes par type de variété
ggplot(data, aes(x = Variete, y = Hauteur, fill = Variete
)) +
  geom_boxplot() +
  labs(title = "Hauteur des plantes par type de variété",
       x = "Type de variété",
       y = "Hauteur (cm)") +
  theme_minimal() +
  theme(legend.position = "none")

Ce boxplot compare la hauteur des plantes entre les deux variétés. Si la médiane de l’une des variétés se distingue nettement de l’autre, cela suggère un effet de la variété sur la croissance des plantes. La dispersion au sein de chaque groupe éclaire sur l’homogénéité des observations selon la variété.

# Boxplot de la hauteur des plantes par type de terreau et type de variété
ggplot(data, aes(x = Terreau, y = Hauteur, fill = Variete
)) +
  geom_boxplot() +
  labs(title = "Hauteur des plantes par type de terreau et type de variété",
       x = "Type de terreau",
       y = "Hauteur (cm)") +
  theme_minimal() +
  theme(legend.title = element_blank())

Ce graphique croisé (terreau × variété) permet d’explorer visuellement une éventuelle interaction entre les deux facteurs. Si l’effet du terreau varie selon la variété (ou inversement), les boîtes se comporteront de manière non parallèle d’une variété à l’autre. Des distributions qui se chevauchent peu indiquent des différences marquées entre les combinaisons.

#Boxplot de la hauteur des plantes par repetition, variete et terreau
ggplot(data, aes(x = Repetition, y = Hauteur, fill = interaction(Terreau, Variete)
)) +
  geom_boxplot() +
  labs(title = "Hauteur des plantes par répétition, type de terreau et type de variété",
       x = "Répétition",
       y = "Hauteur (cm)") +
  theme_minimal() +
  theme(legend.title = element_blank())

Ce boxplot multi-factoriel représente la hauteur des plantes selon la répétition, le type de terreau et la variété simultanément. Il permet d’apprécier la cohérence des mesures entre répétitions : si les distributions varient fortement d’une répétition à l’autre au sein d’un même groupe, cela peut signaler un effet de bloc ou des conditions expérimentales changeantes.

ggplot(data=data,aes(x=Terreau,y=Hauteur,fill=Repetition))+geom_boxplot()+
ggtitle("Hauteur des plantes par répétition, type de terreau et type de variété")+
facet_wrap(~Variete)+
xlab("Repetition")+
ylab("Hauteur")+
theme_classic()

La figure ci-dessus permet de constater des valeurs abérantes. Cependant, nous allons effectuer un test de détection de valeurs abérantes.

3.2.3 Détection des valeurs abérantes

# Détection des valeurs abérantes à l'aide de la méthode IQR
Outliers <- data %>%
group_by(Variete, Terreau, Repetition) %>%
identify_outliers(Hauteur)
Outliers %>% head(5)
#> # A tibble: 5 × 7
#>   Repetition Terreau Variete   Num Hauteur is.outlier is.extreme
#>   <fct>      <fct>   <fct>   <dbl>   <dbl> <lgl>      <lgl>     
#> 1 T2         An      Var1      201    13.7 TRUE       TRUE      
#> 2 T4         An      Var1      245    20   TRUE       FALSE     
#> 3 T2         Ca      Var1      124    45.2 TRUE       FALSE     
#> 4 T2         Ca      Var1      133    22   TRUE       FALSE     
#> 5 T4         Ca      Var1      163    47   TRUE       FALSE

Le tableau ci-dessus présente les cinq premières valeurs aberrantes détectées par la méthode IQR. L’analyse du tableau ci-dessus montre que des valeurs aberrantes sont présentes dans les groupes suivants : Var1-Ca-1, Var1-Ca-2, Var1-Ca-3, Var1-Ca-4, Var1-Ma-1, Var1-Ma-2, Var1-Ma-3, Var1-Ma-4, Var1-An-1, Var1-An-2, Var1-An-3, Var1-An-4. Cependant, nous allons conserver certaines de ces valeurs pour l’analyse ANOVA afin de ne pas biaiser les résultats. Nous corrigerons uniquement celles qui sont extrêmes

Outliers %>%
  filter(is.extreme == TRUE)
#> # A tibble: 4 × 7
#>   Repetition Terreau Variete   Num Hauteur is.outlier is.extreme
#>   <fct>      <fct>   <fct>   <dbl>   <dbl> <lgl>      <lgl>     
#> 1 T2         An      Var1      201    13.7 TRUE       TRUE      
#> 2 T1         Ma      Var1       15    21   TRUE       TRUE      
#> 3 T3         Ma      Var2       61    12.5 TRUE       TRUE      
#> 4 T3         Ma      Var2       63    11.5 TRUE       TRUE

Nous identifions 4 valeurs extrême que nous allos corriger en utilisant la médiane

3.2.4 Correction des valeurs extrême

# Correction des valeurs extrême en utilisant la médiane
data_cor <- data %>%
mutate(Hauteur = ifelse(Num %in% Outliers$Num,
median(Hauteur, na.rm = TRUE), Hauteur))

La correction des valeurs extrêmes a été réalisée en remplaçant chacune d’elles par la médiane de la variable Hauteur, moins sensible aux valeurs atypiques que la moyenne. Cette approche conservatrice permet de préserver la taille de l’échantillon tout en réduisant l’influence des observations aberrantes sur les résultats.

data_cor %>%
group_by(Variete, Terreau, Repetition) %>%
identify_outliers(Hauteur)
#> # A tibble: 4 × 7
#>   Repetition Terreau Variete   Num Hauteur is.outlier is.extreme
#>   <fct>      <fct>   <fct>   <dbl>   <dbl> <lgl>      <lgl>     
#> 1 T1         An      Var2      191    13   TRUE       FALSE     
#> 2 T2         An      Var2      214    25.5 TRUE       FALSE     
#> 3 T1         Ca      Var2      118    42   TRUE       FALSE     
#> 4 T1         Ca      Var2      119    28.5 TRUE       FALSE

Après correction, le tableau ci-dessus confirme que les valeurs extrêmes ont été traitées. On vérifie que les observations restantes identifiées comme aberrantes ne sont plus qualifiées d’extrêmes, ce qui valide l’efficacité de la correction effectuée.

3.3 Facteurs qui peuvent expliquer la variable indépendante

3.3.1 Vérification des Hypothèses

Normalité

# Test de normalité des résidus QQplots
ggqqplot(data_cor, "Hauteur", ggtheme = theme_bw()) +facet_grid(Terreau + Variete ~ Repetition, labeller = "label_both")

Les graphiques Q-Q (quantile-quantile) permettent de vérifier visuellement si la distribution de la hauteur des plantes suit une loi normale au sein de chaque groupe (combinaison terreau × variété × répétition). Lorsque les points s’alignent étroitement sur la droite diagonale, cela indique une bonne normalité des données. Des déviations importantes aux extrémités (queues de distribution) signalent des écarts à la normalité. Dans l’ensemble, si la plupart des groupes présentent un bon alignement, l’hypothèse de normalité peut être retenue.

# Graphique de distribution des hauteurs dans chaque groupe
ggplot(data_cor, aes(x = Hauteur)) +
  geom_histogram(binwidth = 1, fill = "steelblue", color = "black") +
  facet_grid(Terreau + Variete ~ Repetition, labeller = label_both) +
  labs(title = "Distribution de la hauteur des plantes par groupe",
       x = "Hauteur (cm)",
       y = "Fréquence") +
  theme_minimal()

Les histogrammes par groupe complètent l’analyse visuelle de la normalité. Chaque facette représente la distribution de la hauteur dans un sous-groupe donné (terreau × variété × répétition). Une forme en cloche centrée et symétrique est caractéristique d’une distribution normale. Ce type de visualisation permet de repérer rapidement les groupes dont la distribution s’écarte de la normalité et qui pourraient nécessiter une attention particulière.

Test de Shapiro-Wilk pour la normalité des résidus

# Test de Shapiro-Wilk pour la normalité des résidus
shapiro_test <- data_cor %>%
group_by(Terreau, Variete) %>%
summarise(p_value = shapiro.test(Hauteur)$p.value)
shapiro_test %>%
  kable(caption = "Test de Shapiro-Wilk pour la normalité des résidus",
        booktabs = TRUE,
        align = "c") %>%
  kable_styling(full_width = TRUE,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Test de Shapiro-Wilk pour la normalité des résidus
Terreau Variete p_value
An Var1 0.0171339
An Var2 0.0458534
Ca Var1 0.3707346
Ca Var2 0.0122505
Ma Var1 0.1662297
Ma Var2 0.3649743

Le test de Shapiro-Wilk est appliqué à chaque sous-groupe défini par la combinaison terreau × variété. La règle de décision est la suivante : si la p-valeur est supérieure à 0,05, l’hypothèse nulle de normalité est non rejetée — on considère alors que les données du groupe suivent une loi normale. À l’inverse, une p-valeur inférieure à 0,05 indique un écart significatif à la normalité. Ce test vient confirmer (ou infirmer) les observations visuelles issues des Q-Q plots.

3.3.2 Homogénéité des variances (test de Levene)

# Test de Levene pour l'homogénéité des variances
levene_test <- data_cor %>%
  group_by(Terreau, Repetition) %>%
  summarise(p_value = leveneTest(Hauteur ~ Variete)$"Pr(>F)"[1])
levene_test %>%
  kable(caption = "Test de Levene pour l'homogénéité des variances",
        booktabs = TRUE,
        align = "c") %>%
  kable_styling(full_width = TRUE,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped"))
Test de Levene pour l’homogénéité des variances
Terreau Repetition p_value
An T1 0.6368289
An T2 0.1044613
An T3 0.5602201
An T4 0.0936263
Ca T1 0.0347550
Ca T2 0.0567930
Ca T3 0.1035554
Ca T4 0.1523013
Ma T1 0.0463247
Ma T2 0.7890104
Ma T3 0.6330944
Ma T4 0.3192263

Le test de Levene teste l’hypothèse nulle selon laquelle les variances sont égales entre les groupes (homoscédasticité). Une p-valeur supérieure à 0,05 indique que l’hypothèse d’homogénéité des variances est non rejetée, ce qui est une condition nécessaire à la validité de l’ANOVA classique. En cas de rejet de cette hypothèse, des corrections ou des alternatives robustes devraient être envisagées.

4 ANOVA à mesure répétées sur les facteurs

4.1 Modèle ANOVA à un facteur

4.1.1 Facteur variété

# Modèle ANOVA à un facteur pour le facteur variété

anova_variete<-aov_car(Hauteur~ Variete + Error(Repetition/Variete), data=data_cor)
# Résultats de l'ANOVA pour le facteur variété
summary(anova_variete)
#> 
#> Univariate Type III Repeated-Measures ANOVA Assuming Sphericity
#> 
#>             Sum Sq num Df Error SS den Df   F value    Pr(>F)    
#> (Intercept) 9926.2      1   22.808      3 1305.6226 4.662e-05 ***
#> Variete       24.0      1   24.594      3    2.9333    0.1853    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Les résultats du premier modèle ANOVA à mesure répétée sur le facteur variété permettent d’évaluer si la variété a un effet statistiquement significatif sur la hauteur des plantes. Une p-valeur inférieure à 0,05 associée au facteur Variété conduit à rejeter l’hypothèse nulle d’égalité des moyennes entre Var1 et Var2.

anovaVar=lmer(Hauteur ~ Variete + (1|Repetition) + (1|Terreau), data=data_cor)
summary(anovaVar)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: Hauteur ~ Variete + (1 | Repetition) + (1 | Terreau)
#>    Data: data_cor
#> 
#> REML criterion at convergence: 1671.3
#> 
#> Scaled residuals: 
#>     Min      1Q  Median      3Q     Max 
#> -3.3700 -0.4351  0.0359  0.6395  2.7897 
#> 
#> Random effects:
#>  Groups     Name        Variance Std.Dev.
#>  Repetition (Intercept)  3.1057  1.7623  
#>  Terreau    (Intercept)  0.3766  0.6137  
#>  Residual               42.8397  6.5452  
#> Number of obs: 253, groups:  Repetition, 4; Terreau, 3
#> 
#> Fixed effects:
#>             Estimate Std. Error       df t value Pr(>|t|)    
#> (Intercept)  37.1958     1.1181   4.3854  33.266 1.93e-06 ***
#> VarieteVar2  -3.9659     0.8252 247.7953  -4.806 2.67e-06 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Correlation of Fixed Effects:
#>             (Intr)
#> VarieteVar2 -0.374

Ce modèle linéaire mixte inclut la variété comme effet fixe et la répétition ainsi que le terreau comme effets aléatoires. Les estimations des coefficients fixes indiquent la différence moyenne de hauteur entre Var1 (référence) et Var2. Si le coefficient de Var2 est positif et significatif, cela signifie que Var2 tend à produire des plantes plus grandes que Var1, toutes choses égales par ailleurs.

4.1.2 Facteur terreau

anovaTer=lmer(Hauteur ~ Terreau + (1|Repetition) + (1|Variete), data=data_cor)
summary(anovaTer)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: Hauteur ~ Terreau + (1 | Repetition) + (1 | Variete)
#>    Data: data_cor
#> 
#> REML criterion at convergence: 1670.3
#> 
#> Scaled residuals: 
#>     Min      1Q  Median      3Q     Max 
#> -3.2888 -0.4821 -0.0043  0.6549  2.6927 
#> 
#> Random effects:
#>  Groups     Name        Variance Std.Dev.
#>  Repetition (Intercept)  3.156   1.777   
#>  Variete    (Intercept)  7.654   2.767   
#>  Residual               42.817   6.543   
#> Number of obs: 253, groups:  Repetition, 4; Variete, 2
#> 
#> Fixed effects:
#>             Estimate Std. Error       df t value Pr(>|t|)   
#> (Intercept)  34.4594     2.2749   1.6436  15.148  0.00926 **
#> TerreauCa     1.8954     1.0677 246.1793   1.775  0.07711 . 
#> TerreauMa     0.4543     0.9997 248.3831   0.454  0.64991   
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Correlation of Fixed Effects:
#>           (Intr) TerreC
#> TerreauCa -0.228       
#> TerreauMa -0.248  0.522

Ce modèle évalue l’effet du type de terreau sur la hauteur des plantes, en contrôlant pour la variabilité liée à la répétition et à la variété (traitées comme effets aléatoires). Les coefficients associés à chaque modalité du terreau (Ca et Ma par rapport à An pris comme référence) quantifient les différences moyennes de hauteur entre les types de terreau. Des valeurs significativement différentes de zéro indiquent un effet du terreau sur la croissance des plantes. ## Modèle ANOVA à deux facteurs

4.1.3 Anova sans interaction

anovaSansInter <- lmer(Hauteur ~ Terreau + Variete + (1|Repetition), data=data_cor)
summary(anovaSansInter)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: Hauteur ~ Terreau + Variete + (1 | Repetition)
#>    Data: data_cor
#> 
#> REML criterion at convergence: 1664.7
#> 
#> Scaled residuals: 
#>     Min      1Q  Median      3Q     Max 
#> -3.3004 -0.4732 -0.0008  0.6512  2.6789 
#> 
#> Random effects:
#>  Groups     Name        Variance Std.Dev.
#>  Repetition (Intercept)  3.156   1.776   
#>  Residual               42.817   6.543   
#> Number of obs: 253, groups:  Repetition, 4
#> 
#> Fixed effects:
#>             Estimate Std. Error       df t value Pr(>|t|)    
#> (Intercept)  36.4491     1.2167   7.0290  29.956 1.12e-08 ***
#> TerreauCa     1.9079     1.0678 246.1118   1.787   0.0752 .  
#> TerreauMa     0.4728     0.9999 248.2220   0.473   0.6367    
#> VarieteVar2  -3.9987     0.8269 246.2673  -4.836 2.34e-06 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Correlation of Fixed Effects:
#>             (Intr) TerreC TerreM
#> TerreauCa   -0.407              
#> TerreauMa   -0.433  0.522       
#> VarieteVar2 -0.301 -0.057 -0.090

Ce modèle à deux facteurs sans interaction suppose que les effets du terreau et de la variété sur la hauteur des plantes sont additifs et indépendants. Les coefficients des effets fixes permettent d’estimer la contribution propre de chaque facteur, toutes choses égales par ailleurs. La répétition est modélisée en tant qu’effet aléatoire pour tenir compte de la structure en blocs du dispositif expérimental.

Si on prend en compte la répétiton

anovaSansInter2 <- lmer(Hauteur ~ Terreau + Variete + (1|Repetition)
+(Terreau|Repetition)+ (Variete|Repetition)
, data=data_cor)

summary(anovaSansInter2)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: 
#> Hauteur ~ Terreau + Variete + (1 | Repetition) + (Terreau | Repetition) +  
#>     (Variete | Repetition)
#>    Data: data_cor
#> 
#> REML criterion at convergence: 1645.4
#> 
#> Scaled residuals: 
#>      Min       1Q   Median       3Q      Max 
#> -3.12240 -0.44540  0.05289  0.65530  2.34513 
#> 
#> Random effects:
#>  Groups       Name        Variance Std.Dev. Corr       
#>  Repetition   (Intercept)  0.0000  0.0000              
#>  Repetition.1 (Intercept)  9.2377  3.0394              
#>               TerreauCa    8.1105  2.8479   -1.00      
#>               TerreauMa    0.3714  0.6094   -1.00  1.00
#>  Repetition.2 (Intercept)  6.5931  2.5677              
#>               VarieteVar2 14.6794  3.8314   -1.00      
#>  Residual                 38.4602  6.2016              
#> Number of obs: 253, groups:  Repetition, 4
#> 
#> Fixed effects:
#>             Estimate Std. Error      df t value Pr(>|t|)    
#> (Intercept)  36.3448     2.1414  4.7072  16.973 2.11e-05 ***
#> TerreauCa     1.8530     1.7512  3.3798   1.058    0.360    
#> TerreauMa     0.3906     1.0041 11.3895   0.389    0.704    
#> VarieteVar2  -3.6671     2.0725  3.1070  -1.769    0.172    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Correlation of Fixed Effects:
#>             (Intr) TerreC TerreM
#> TerreauCa   -0.706              
#> TerreauMa   -0.438  0.539       
#> VarieteVar2 -0.616 -0.014 -0.036
#> optimizer (nloptwrap) convergence code: 0 (OK)
#> boundary (singular) fit: see help('isSingular')

Ce modèle enrichi intègre les effets aléatoires du terreau et de la variété au niveau de la répétition, permettant de capturer le fait que l’effet du terreau ou de la variété peut varier d’une répétition à l’autre. Cela correspond à un modèle à effets mixtes plus flexible, adapté à un dispositif où les conditions expérimentales peuvent fluctuer entre répétitions.

4.1.4 Anova avec interaction

anovaAvecInter <- lmer(Hauteur ~ Terreau*Variete +
(1|Repetition), data=data_cor)
summary(anovaAvecInter)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: Hauteur ~ Terreau * Variete + (1 | Repetition)
#>    Data: data_cor
#> 
#> REML criterion at convergence: 1658.2
#> 
#> Scaled residuals: 
#>     Min      1Q  Median      3Q     Max 
#> -3.3057 -0.4777  0.0148  0.6332  2.7195 
#> 
#> Random effects:
#>  Groups     Name        Variance Std.Dev.
#>  Repetition (Intercept)  3.189   1.786   
#>  Residual               43.123   6.567   
#> Number of obs: 253, groups:  Repetition, 4
#> 
#> Fixed effects:
#>                        Estimate Std. Error        df t value Pr(>|t|)    
#> (Intercept)            36.56909    1.34423  10.19292  27.204  7.5e-11 ***
#> TerreauCa               1.46603    1.49557 244.07692   0.980  0.32793    
#> TerreauMa               0.48840    1.40947 246.15923   0.347  0.72925    
#> VarieteVar2            -4.26992    1.49509 244.01517  -2.856  0.00466 ** 
#> TerreauCa:VarieteVar2   0.88812    2.14751 244.23957   0.414  0.67956    
#> TerreauMa:VarieteVar2   0.03073    1.98901 244.39627   0.015  0.98768    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Correlation of Fixed Effects:
#>             (Intr) TerreC TerreM VrtVr2 TC:VV2
#> TerreauCa   -0.499                            
#> TerreauMa   -0.536  0.474                     
#> VarieteVar2 -0.498  0.448  0.474              
#> TrrC:VrtVr2  0.346 -0.697 -0.325 -0.696       
#> TrrM:VrtVr2  0.377 -0.336 -0.701 -0.751  0.521

Ce modèle introduit le terme d’interaction Terreau × Variété, testant l’hypothèse que l’effet du type de terreau n’est pas le même selon la variété utilisée (et vice versa). Les coefficients d’interaction (ex. TerreauCa:VarieteVar2) indiquent si la combinaison d’un terreau et d’une variété produit un effet supplémentaire par rapport à la simple somme des effets principaux. Une interaction significative implique que le meilleur terreau dépend de la variété, ce qui aurait des implications pratiques importantes pour les recommandations agronomiques. Si on prend en compte la répétiton

anovaAvecInter2 <- lmer(Hauteur ~ Terreau*Variete +
+(Terreau|Repetition)+ (Variete|Repetition)+
(1|Repetition), data=data_cor)

summary(anovaAvecInter2)
#> Linear mixed model fit by REML. t-tests use Satterthwaite's method [
#> lmerModLmerTest]
#> Formula: Hauteur ~ Terreau * Variete + +(Terreau | Repetition) + (Variete |  
#>     Repetition) + (1 | Repetition)
#>    Data: data_cor
#> 
#> REML criterion at convergence: 1639.2
#> 
#> Scaled residuals: 
#>      Min       1Q   Median       3Q      Max 
#> -3.12848 -0.44902  0.05204  0.66113  2.36352 
#> 
#> Random effects:
#>  Groups       Name        Variance Std.Dev. Corr       
#>  Repetition   (Intercept)  9.2188  3.0362              
#>               TerreauCa    8.0238  2.8326   -1.00      
#>               TerreauMa    0.3754  0.6127   -1.00  1.00
#>  Repetition.1 (Intercept)  6.5300  2.5554              
#>               VarieteVar2 14.6688  3.8300   -1.00      
#>  Repetition.2 (Intercept)  0.0000  0.0000              
#>  Residual                 38.7697  6.2265              
#> Number of obs: 253, groups:  Repetition, 4
#> 
#> Fixed effects:
#>                       Estimate Std. Error       df t value Pr(>|t|)    
#> (Intercept)            36.4550     2.2037   5.3029  16.543  9.1e-06 ***
#> TerreauCa               1.5955     2.0071   5.8788   0.795    0.458    
#> TerreauMa               0.2899     1.3958  45.2688   0.208    0.836    
#> VarieteVar2            -3.9146     2.3893   5.4568  -1.638    0.157    
#> TerreauCa:VarieteVar2   0.5332     2.0350 240.9260   0.262    0.794    
#> TerreauMa:VarieteVar2   0.2301     1.9136 242.8772   0.120    0.904    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Correlation of Fixed Effects:
#>             (Intr) TerreC TerreM VrtVr2 TC:VV2
#> TerreauCa   -0.692                            
#> TerreauMa   -0.455  0.480                     
#> VarieteVar2 -0.638  0.187  0.277              
#> TrrC:VrtVr2  0.201 -0.491 -0.317 -0.415       
#> TrrM:VrtVr2  0.220 -0.233 -0.690 -0.449  0.517
#> optimizer (nloptwrap) convergence code: 0 (OK)
#> boundary (singular) fit: see help('isSingular')

Ce modèle le plus complet combine l’interaction entre terreau et variété avec des effets aléatoires par répétition pour chacun des deux facteurs. Il offre la représentation la plus flexible de la structure des données, mais sa complexité accrue peut entraîner des problèmes d’estimation (singularité ou non-convergence). Son inclusion dans la comparaison permet d’évaluer si cette complexité supplémentaire améliore significativement l’ajustement.

4.2 Comparaison des modèles

modeles <- list(
  "ANOVA Variété" = anovaVar,
  "ANOVA Terreau" = anovaTer,
  "ANOVA Sans Interaction" = anovaSansInter,
  "ANOVA Sans Interaction + Repetition" = anovaSansInter2,
  "ANOVA Avec Interaction" = anovaAvecInter,
  "ANOVA Avec Interaction + Repetition" = anovaAvecInter2
)
anova_results <- anova( modeles$`ANOVA Variété`,
                        modeles$`ANOVA Terreau`,
                        modeles$`ANOVA Sans Interaction`,
                        modeles$`ANOVA Avec Interaction`,
                        modeles$`ANOVA Sans Interaction + Repetition`,
                        modeles$`ANOVA Avec Interaction + Repetition`
                       )
rownames(anova_results) <- c(
  "ANOVA Variété",
  "ANOVA Terreau",
  "ANOVA Sans Interaction",
  "ANOVA Avec Interaction",
  "ANOVA Sans Interaction + Répétition",
  "ANOVA Avec Interaction + Répétition"
)

anova_results %>%
  kable(caption = "Comparaison des modèles ANOVA",
        booktabs = TRUE,
        align = "c") %>%
  kable_styling(full_width = FALSE,
                font_size = 8,
                bootstrap_options = c("striped", "hover", "condensed"),
                latex_options     = c("hold_position", "striped", "scale_down"))
Comparaison des modèles ANOVA
npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq)
ANOVA Variété 5 1684.538 1702.205 -837.2689 1674.538 NA NA NA
ANOVA Terreau 6 1688.886 1710.086 -838.4429 1676.886 0.0000000 1 1.0000000
ANOVA Sans Interaction 6 1683.223 1704.423 -835.6115 1671.223 5.6627195 0 NA
ANOVA Avec Interaction 8 1687.001 1715.269 -835.5007 1671.001 0.2216218 2 0.8951080
ANOVA Sans Interaction + Répétition 15 1683.890 1736.891 -826.9449 1653.890 17.1115907 7 0.0166906
ANOVA Avec Interaction + Répétition 17 1687.816 1747.883 -826.9078 1653.816 0.0742813 2 0.9635406

Le tableau de comparaison des modèles présente pour chaque modèle les critères d’information d’Akaike (AIC) et bayésien (BIC), ainsi que les résultats des tests du rapport de vraisemblance. L’AIC et le BIC pénalisent la log-vraisemblance par la complexité du modèle : un AIC/BIC plus faible indique un meilleur compromis ajustement-parcimonie. Le test du rapport de vraisemblance (LRT) teste si l’ajout de paramètres supplémentaires améliore significativement l’ajustement (p < 0,05 → amélioration significative).

L’analyse comparative des différents modèles ANOVA a été réalisée à l’aide des critères AIC et BIC ainsi que des tests du rapport de vraisemblance. Les résultats montrent que le modèle incluant les effets principaux du type de terreau et de la variété, sans interaction, présente le plus faible AIC.

Ainsi, le modèle retenu est celui incluant les effets principaux du terreau, de la variété et de la répétition, sans interaction.

5 Conclusion

Cette étude avait pour objectif d’analyser les facteurs explicatifs de la hauteur des plantes à partir d’un dispositif expérimental en blocs complets équilibrés, combinant trois types de terreaux (Anacarde, Caïlcédrat, Manguier) et deux variétés de plantes (Var1 et Var2), répétés quatre fois.

L’analyse descriptive a d’abord mis en évidence des différences de hauteur entre les groupes selon le type de terreau et la variété. Après détection et correction des valeurs extrêmes, les conditions de validité de l’ANOVA — normalité et homogénéité des variances — ont été vérifiées et jugées satisfaisantes dans l’ensemble.

La comparaison de plusieurs modèles linéaires mixtes, par les critères AIC/BIC et les tests de rapport de vraisemblance, a conduit à retenir le modèle à deux facteurs (terreau et variété) sans interaction, avec la répétition comme effet aléatoire. Ce modèle offre le meilleur équilibre entre ajustement et parcimonie.

Les résultats suggèrent que le type de terreau et la variété exercent chacun un effet significatif sur la hauteur des plantes, et que ces effets sont additifs (pas d’interaction significative). Ces résultats ont des implications pratiques pour le choix du substrat de culture et de la variété dans un objectif de maximisation de la croissance végétale.

Limites : La taille de l’échantillon, relativement modeste (24 observations), limite la puissance statistique des tests. Par ailleurs, d’autres facteurs non contrôlés (conditions d’arrosage, luminosité, température) pourraient introduire une variabilité résiduelle non captée par le modèle.

6 Références

  • Montgomery, D. C. (2017). Design and Analysis of Experiments. Wiley.
  • R Core Team (2024). R: A language and environment for statistical computing.
  • Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer.