On observe la hauteur de plantes (variable réponse) selon :
Tester si la croissance (hauteur) est expliquée par :
La base fournie initialement dans Excel n’était pas directement
exploitable pour une analyse ANOVA / mesures répétées, car elle était
organisée sous une forme “tableau de saisie” :
- les colonnes représentaient des mesures de hauteur à différents temps
(répétitions) et par type de terreau,
- avec des séparations (colonnes vides) entre blocs de terreau,
- et sans structure explicite de type Sujet × Terreau ×
Variété.
Or, pour réaliser une analyse statistique, on a besoin d’un format “tidy” où : - chaque plante (Sujet) est identifiée, - les facteurs expérimentaux (Terreau, Variété) sont clairement présents, - et les mesures répétées (Rep1…Rep4) sont stockées proprement.
Nous avons donc restructuré la base initiale pour obtenir une table dite wide (une ligne par sujet) avant l’importation, contenant :
Sujet : identifiant unique de la plante,Terreau : facteur à 3 niveaux (Ma, Ca, An),Variété : facteur à 2 niveaux (Var1, Var2),Rep1, Rep2, Rep3,
Rep4 : mesures répétées de hauteur.# Packages
library(readxl)
library(dplyr)
library(tidyr)
library(ggplot2)
# Import (adapter le chemin si besoin)
df <- readxl::read_excel("dataset.xlsx")
# Vérifications rapides
dim(df)## [1] 92 7
## [1] "Sujet" "Variété" "Terreau" "Rep1" "Rep2" "Rep3" "Rep4"
Les données sont donc initialement importées au format large : chaque ligne correspond à une plante (Sujet), caractérisée par son type de terreau et sa variété, avec quatre mesures répétées de la hauteur (Rep1 à Rep4)
Pour l’ANOVA à mesures répétées (ou modèle mixte), le format attendu
est plutôt le format long :
chaque ligne correspond à une observation unique,
c’est-à-dire :
Sujet × Terreau × Variété × Répétition → Hauteur
Nous avons donc “empilé” les colonnes Rep1…Rep4 dans une
seule colonne Repetition, et placé les valeurs dans une
colonne Hauteur.
dat_long_raw <- df %>%
pivot_longer(
cols = starts_with("Rep"),
names_to = "Repetition",
values_to = "Hauteur"
) %>%
mutate(
Sujet = factor(Sujet),
Terreau = factor(Terreau),
Variete = factor(`Variété`),
Repetition = factor(Repetition, levels = c("Rep1","Rep2","Rep3","Rep4"))
) %>%
select(Sujet, Terreau, Variete, Repetition, Hauteur)
# Checks
dim(dat_long_raw)## [1] 368 5
##
## 4
## 92
## [1] 0.2336957
cell_counts <- dat_long_raw %>%
group_by(Terreau, Variete, Repetition) %>%
summarise(
n_total = n(),
n_obs = sum(!is.na(Hauteur)),
n_na = sum(is.na(Hauteur)),
p_na = mean(is.na(Hauteur)),
.groups = "drop"
)
cell_countsLe tableau des effectifs par cellule met en évidence une proportion non négligeable de valeurs manquantes, avec une forte hétérogénéité selon la répétition. La proportion de données manquantes augmente au fil des répétitions, ce qui introduit un déséquilibre longitudinal dans le plan expérimental. Pour cette raison, l’analyse inférentielle sera réalisée à l’aide d’un modèle mixte, plus adapté aux mesures répétées en présence de données incomplètes, plutôt qu’une ANOVA classique nécessitant souvent des données complètes par sujet.
desc_cell <- dat_long_raw %>%
group_by(Terreau, Variete, Repetition) %>%
summarise(
n = sum(!is.na(Hauteur)),
mean = mean(Hauteur, na.rm = TRUE),
sd = sd(Hauteur, na.rm = TRUE),
median = median(Hauteur, na.rm = TRUE),
IQR = IQR(Hauteur, na.rm = TRUE),
min = min(Hauteur, na.rm = TRUE),
max = max(Hauteur, na.rm = TRUE),
.groups = "drop"
)
desc_cellLes statistiques descriptives par cellule (Terreau × Variété × Répétition) montrent une différence nette entre les variétés : à la première répétition, Var2 présente des hauteurs moyennes proches de 39–40, contre environ 28–29 pour Var1, et ce quel que soit le terreau. Les hauteurs varient également fortement selon la répétition, avec une évolution non monotone (baisse autour de Rep3 puis remontée à Rep4). Les écarts entre Var1 et Var2 ne sont pas constants selon la répétition, ce qui suggère une interaction Variété × Répétition. À l’inverse, les différences entre types de terreau apparaissent relativement modestes. Enfin, certaines cellules présentent de faibles effectifs en raison des valeurs manquantes, justifiant l’utilisation d’un modèle mixte pour l’analyse inférentielle. Essayons de visualiser cela
library(dplyr)
library(ggplot2)
# Résumé
sum_terreau <- dat_long_raw %>%
group_by(Terreau) %>%
summarise(
n = n(),
mean = mean(Hauteur, na.rm = TRUE),
sd = sd(Hauteur, na.rm = TRUE),
se = sd / sqrt(n),
.groups = "drop"
)
# Graphique
ggplot(sum_terreau, aes(x = Terreau, y = mean, fill = Terreau)) +
geom_col(color = "black", width = 0.6) +
geom_errorbar(aes(ymin = mean - se, ymax = mean + se),
width = 0.2) +
labs(title = "Hauteur moyenne selon le terreau",
y = "Hauteur moyenne (cm)") +
theme_minimal() +
theme(legend.position = "none")Le graphique des hauteurs moyennes selon le type de terreau montre qu’en moyenne, le terreau Ca est associé à la hauteur moyenne la plus élevée.
Les terreaux An et Ma présentent des moyennes proches l’une de l’autre.
Les écarts entre les trois types de terreau restent modérés et les barres d’erreur se chevauchent partiellement, suggérant des différences visuellement limitées à ce stade descriptif. ## Effet de la variété sur la hauteur des plantes
sum_variete <- dat_long_raw %>%
group_by(Variete) %>%
summarise(
n = n(),
mean = mean(Hauteur, na.rm = TRUE),
sd = sd(Hauteur, na.rm = TRUE),
se = sd / sqrt(n),
.groups = "drop"
)
ggplot(sum_variete, aes(x = Variete, y = mean, fill = Variete)) +
geom_col(color = "black", width = 0.6) +
geom_errorbar(aes(ymin = mean - se, ymax = mean + se),
width = 0.2) +
labs(title = "Hauteur moyenne selon la variété",
y = "Hauteur moyenne (cm)") +
theme_minimal() +
theme(legend.position = "none")Le graphique des hauteurs moyennes selon la variété montre qu’en moyenne, la variété Var2 présente une hauteur moyenne supérieure à celle de Var1. À ce stade descriptif, il apparaît donc que les plants de la variété Var2 tendent à être plus hauts que ceux de la variété Var1.
sum_TV <- dat_long_raw %>%
group_by(Terreau, Variete) %>%
summarise(
n = n(),
mean = mean(Hauteur, na.rm = TRUE),
sd = sd(Hauteur, na.rm = TRUE),
se = sd / sqrt(n),
.groups = "drop"
)
ggplot(sum_TV, aes(x = Terreau, y = mean, fill = Variete)) +
geom_col(position = position_dodge(0.8),
color = "black", width = 0.7) +
geom_errorbar(aes(ymin = mean - se, ymax = mean + se),
position = position_dodge(0.8),
width = 0.2) +
labs(title = "Hauteur moyenne selon Terreau et Variété",
y = "Hauteur moyenne (cm)",
fill = "Variété") +
theme_minimal()Le graphique des hauteurs moyennes selon le terreau et la variété met en évidence une supériorité systématique de la variété Var2 par rapport à Var1 en moyenne pour les trois types de terreau.
Le terreau Ca semble associé aux hauteurs moyennes les plus élevées, bien que les différences entre terreaux restent modérées.
Les écarts entre les deux variétés apparaissent relativement similaires quel que soit le type de terreau, et les barres d’erreur se chevauchent partiellement.
sum_prof <- dat_long_raw %>%
group_by(Terreau, Variete, Repetition) %>%
summarise(
n = sum(!is.na(Hauteur)),
mean = mean(Hauteur, na.rm = TRUE),
sd = sd(Hauteur, na.rm = TRUE),
se = sd / sqrt(n),
.groups = "drop"
)
p_prof <- ggplot(sum_prof, aes(x = Repetition, y = mean, group = Variete, color = Variete)) +
geom_line(linewidth = 1) +
geom_point(size = 2) +
geom_errorbar(aes(ymin = mean - se, ymax = mean + se), width = 0.12) +
facet_wrap(~ Terreau) +
theme_minimal() +
labs(
title = "Profil de croissance : hauteur moyenne par répétition",
subtitle = "Barres d'erreur : ± 1 erreur standard (SE)",
x = "Répétition",
y = "Hauteur moyenne"
)
p_profLe graphique des profils moyens met en évidence une variation des hauteurs selon la répétition, avec une baisse observable autour de Rep3 suivie d’une remontée à Rep4. Les deux variétés présentent des trajectoires non parallèles : l’écart entre Var2 et Var1 varie selon le moment de mesure, suggérant que la différence entre variétés pourrait dépendre du temps. Les profils apparaissent globalement similaires entre les trois types de terreau, ce qui laisse penser que l’effet du terreau pourrait être plus modéré visuellement.
library(rstatix)
dat_long_raw %>%
group_by(Variete, Terreau, Repetition) %>%
identify_outliers(Hauteur)outliers_bounds <- dat_long_raw %>%
group_by(Terreau, Variete, Repetition) %>%
summarise(
Q1 = quantile(Hauteur, 0.25, na.rm = TRUE),
Q3 = quantile(Hauteur, 0.75, na.rm = TRUE),
IQR = IQR(Hauteur, na.rm = TRUE),
.groups = "drop"
) %>%
mutate(
lower = Q1 - 1.5*IQR,
upper = Q3 + 1.5*IQR
)
out_points <- dat_long_raw %>%
left_join(outliers_bounds, by = c("Terreau","Variete","Repetition")) %>%
filter(!is.na(Hauteur)) %>%
filter(Hauteur < lower | Hauteur > upper) %>%
select(Sujet, Terreau, Variete, Repetition, Hauteur, lower, upper) %>%
arrange(Terreau, Variete, Repetition)
out_pointsLa méthode IQR (1,5 × IQR) aussi utilisé dans la fonction
identify_outliers() a permis d’identifier 22 observations
atypiques. Ces valeurs se situent majoritairement en dessous de la borne
inférieure, correspondant à des hauteurs relativement faibles. Elles
sont réparties sur plusieurs combinaisons de facteurs et ne concernent
strictement pas un groupe spécifique.
ggplot(dat_long_raw, aes(x = interaction(Terreau, Variete), y = Hauteur)) +
geom_boxplot(na.rm = TRUE) +
facet_wrap(~ Repetition, nrow = 2) +
theme_minimal() +
labs(
title = "Boxplots par groupe (Terreau × Variété) — par répétition",
x = "Groupe",
y = "Hauteur"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))dat_wins <- dat_long_raw %>%
left_join(outliers_bounds, by = c("Terreau","Variete","Repetition")) %>%
mutate(
is_outlier = !is.na(Hauteur) & (Hauteur < lower | Hauteur > upper),
Hauteur_corr = case_when(
is.na(Hauteur) ~ NA_real_,
Hauteur < lower ~ lower,
Hauteur > upper ~ upper,
TRUE ~ Hauteur
)
) %>%
select(Sujet, Terreau, Variete, Repetition, Hauteur, Hauteur_corr, is_outlier)
sum(dat_wins$is_outlier, na.rm = TRUE)## [1] 22
Les observations atypiques ont été identifiées par la règle de Tukey
(bornes = Q1 − 1,5×IQR et Q3 + 1,5×IQR) à l’intérieur de chaque cellule
(Terreau × Variété × Répétition).
Plutôt que de supprimer ces valeurs, une winsorisation a été appliquée :
toute valeur inférieure à la borne basse a été remplacée par la borne
basse, et toute valeur supérieure à la borne haute a été remplacée par
la borne haute.
Dans ce qui suit, nous allons faire les tests sur cette base ainsi que
sur la base non winsorisée
shap <- dat_long_raw %>%
group_by(Terreau, Variete, Repetition) %>%
summarise(
n = sum(!is.na(Hauteur)),
p_value = ifelse(
n >= 3,
shapiro.test(Hauteur[!is.na(Hauteur)])$p.value,
NA_real_
),
.groups = "drop"
)
shap_wins <- dat_wins %>%
group_by(Terreau, Variete, Repetition) %>%
summarise(
n = sum(!is.na(Hauteur_corr)),
p_value = ifelse(
n >= 3,
shapiro.test(Hauteur_corr[!is.na(Hauteur_corr)])$p.value,
NA_real_
),
.groups = "drop"
)
print ("Shapiro par cellule pour les données non winsorisées")## [1] "Shapiro par cellule pour les données non winsorisées"
## [1] "Shapiro par cellule pour les données winsorisées"
Le test de Shapiro-Wilk appliqué par cellule (Terreau × Variété × Répétition) met en évidence quelques déviations ponctuelles à la normalité (p < 0,05), principalement pour la variété Var1 à certaines répétitions. Cependant, plusieurs cellules ont des effectifs faibles (parfois n ≤ 10), rendant le test instable et très sensible. Essayons donc la visualisation avec les QQ-plots.
# QQ-plots des observations par cellule
library(ggplot2)
dat_obs_complete_raw <- dat_long_raw %>%
filter(!is.na(Hauteur))
ggplot(dat_obs_complete_raw, aes(sample = Hauteur)) +
stat_qq() +
stat_qq_line(color = "green") +
facet_grid(Terreau + Variete ~ Repetition) +
theme_minimal() +
labs(
title = "QQ-plots des observations par cellule pour les données non winsorisées",
subtitle = "Terreau × Variété × Répétition",
x = "Quantiles théoriques",
y = "Quantiles observés"
)# QQ-plots des observations par cellule
library(ggplot2)
dat_obs_complete <- dat_wins %>%
filter(!is.na(Hauteur_corr))
ggplot(dat_obs_complete, aes(sample = Hauteur_corr)) +
stat_qq() +
stat_qq_line(color = "green") +
facet_grid(Terreau + Variete ~ Repetition) +
theme_minimal() +
labs(
title = "QQ-plots des observations par cellule pour les données winsorisées",
subtitle = "Terreau × Variété × Répétition",
x = "Quantiles théoriques",
y = "Quantiles observés"
)Les diagnostics graphiques suggèrent une normalité globalement acceptable, tant au niveau exploratoire des observations qu’au niveau des résidus du modèle mixte. Les écarts observés dans les queues restent modérés. Bien que la normalité des observations soit vérifiée ici, il est juste un contrôle exploratoire, l’hypothèse déterminante concerne surtout la normalité des résidus qui sera abordée dans une section à venir.
Le test de Levene appliqué à chaque répétition pour comparer les variances entre les groupes (Terreau × Variété) ne met pas en évidence d’hétérogénéité significative au seuil de 5% (toutes les p-values > 0.05). Toutefois, à Rep4, la p-value (0.078) est plus faible et suggère une possible hétérogénéité modérée, sans atteindre le seuil de significativité.
Sur les données winsorisées, le test de Levene par répétition ne détecte pas d’hétérogénéité significative des variances à Rep1 et Rep2 (p > 0.05). En revanche, l’hypothèse d’homogénéité des variances est rejetée à Rep3 (p = 0.022) et Rep4 (p = 0.047), indiquant une hétéroscédasticité entre les groupes Terreau × Variété à ces temps de mesure.
La sphéricité est une hypothèse requise dans l’ANOVA à mesures répétées “classique” (approche GLM), et peut être évaluée par le test de Mauchly, avec corrections (Greenhouse–Geisser / Huynh–Feldt) en cas de violation. Dans notre analyse principale, nous utilisons un modèle mixte (lmer; expliqué plus bas) qui modélise directement la dépendance intra-sujet via un effet aléatoire de sujet ; dans ce cadre, l’inférence ne repose pas strictement sur l’hypothèse de sphéricité, ce qui rend le test de Mauchly non indispensable.
Contexte méthodologique
Dans cette étude, la hauteur des plantes est mesurée à plusieurs reprises (Rep1 à Rep4) sur les mêmes individus.
Il s’agit donc d’un dispositif à mesures répétées, impliquant une dépendance naturelle entre observations d’un même sujet.Les mesures réalisées sur une même plante sont corrélées : elles partagent des caractéristiques propres à cet individu (niveau de croissance initial, vigueur, conditions micro-environnementales).
Cette corrélation viole l’hypothèse d’indépendance requise par une ANOVA classique.L’exploration des données met également en évidence :
- la présence de valeurs manquantes, induisant un plan longitudinal déséquilibré ;
- une homogénéité des variances globalement acceptable mais avec quelques hétérogénéités ponctuelles ;
- la nécessité d’analyser simultanément les effets fixes (Terreau, Variété, Répétition) et leurs interactions.
Dans ce contexte, l’ANOVA à mesures répétées “classique” (approche GLM) apparaît moins adaptée, car :
- elle gère difficilement les données manquantes,
- elle exige souvent des données complètes par sujet,
- elle repose sur l’hypothèse de sphéricité.
Nous privilégions donc un modèle linéaire mixte, plus flexible et robuste.
Principe du modèle linéaire mixte
Un modèle mixte combine :
Des effets fixes
Ils correspondent aux facteurs expérimentaux d’intérêt :
- Terreau (Ma, Ca, An),
- Variété (Var1, Var2),
- Répétition (Rep1 à Rep4),
- et leurs interactions.
Ces effets décrivent les variations moyennes de la hauteur selon les conditions expérimentales.
Des effets aléatoires
Ils capturent la variabilité propre aux individus (plantes).
Même si deux plantes appartiennent au même groupe expérimental, elles peuvent présenter des niveaux initiaux différents.
Le modèle introduit donc un intercept aléatoire par sujet, permettant à chaque plante d’avoir son propre niveau moyen.
Formulation mathématique
On note \(Y_{ijkl}\) la hauteur observée pour :
- le sujet (plante) \(l\),
- le terreau \(i\),
- la variété \(j\),
- la répétition \(k\).
Le modèle mixte s’écrit :
\[ Y_{ijkl} = \mu + T_i + V_j + R_k + (TV)_{ij} + (TR)_{ik} + (VR)_{jk} + (TVR)_{ijk} + b_l + \varepsilon_{ijkl} \]
où :
- \(\mu\) est la moyenne générale,
- \(T_i, V_j, R_k\) sont les effets fixes,
- \(b_l\) est l’effet aléatoire du sujet \(l\),
- \(\varepsilon_{ijkl}\) est l’erreur résiduelle.
On suppose :
\[ b_l \sim \mathcal{N}(0, \sigma_b^2), \qquad \varepsilon_{ijkl} \sim \mathcal{N}(0, \sigma^2), \]
avec indépendance entre \(b_l\) et \(\varepsilon_{ijkl}\).
Forme utilisée dans l’analyse
Dans R, le modèle estimé est :
\[ Hauteur \sim Terreau \times Variete \times Repetition + (1|Sujet) \]
Le terme
(1|Sujet)signifie qu’un intercept aléatoire est associé à chaque plante, ce qui permet :
- de modéliser explicitement la corrélation intra-sujet,
- de conserver les sujets partiellement observés,
- d’obtenir une estimation robuste des effets fixes.
Intuition finale
Le modèle mixte permet ainsi de séparer :
- les différences dues aux facteurs expérimentaux (effets fixes),
- les différences dues à la variabilité naturelle entre plantes (effet aléatoire).
Il constitue donc le cadre le plus approprié pour analyser des données longitudinales à mesures répétées dans un contexte expérimental partiellement déséquilibré.
library(lme4)
library(lmerTest)
mod_raw <- lmer(Hauteur ~ Terreau*Variete*Repetition + (1|Sujet), data = dat_long_raw)
anova(mod_raw, type = 3)Le modèle mixte, incluant un effet aléatoire Sujet, met en évidence un effet significatif de la Variété sur la hauteur des plantes (\(F(1, 258) = 14.14\), \(p < 0.001\)). Cela indique que la hauteur moyenne diffère significativement entre les deux variétés étudiées.
Un effet significatif de la Répétition est également observé (\(F(3, 258) = 9.70\), \(p < 0.001\)), montrant que la hauteur des plantes évolue au cours du temps.
En revanche, le facteur Terreau n’est pas significatif (\(F(2, 258) = 0.06\), \(p = 0.94\)) et n’explique pas la variation de la hauteur.
Les interactions impliquant le terreau — Terreau × Variété, Terreau × Répétition et Terreau × Variété × Répétition — ne sont pas significatives (\(p > 0.05\)). Cela suggère que le type de terreau ne modifie ni l’effet de la variété ni la dynamique temporelle de croissance.
En revanche, l’interaction Variété × Répétition est hautement significative (\(F(3, 258) = 9.88\), \(p < 0.001\)). Cela indique que l’évolution de la hauteur au fil des répétitions dépend de la variété : les trajectoires de croissance des deux variétés ne sont pas parallèles.
En résumé, dans les données non winsorisées, la croissance des plantes dépend principalement de la variété, du temps, et de leur interaction, tandis que le terreau ne présente pas d’effet significatif.
library(lme4)
library(lmerTest)
mod <- lmer(Hauteur_corr ~ Terreau*Variete*Repetition + (1|Sujet), data = dat_wins)
anova(mod, type = 3)Les conclusions sur les effets significatifs (Variété, Répétition et Variété×Répétition) restent qualitativement les mêmes sur les données non winsorisées, suggérant une robustesse globale de l’interprétation vis-à-vis des valeurs atypiques. La winsorisation n’a donc pas modifié les conclusions qualitatives : Terreau reste non significatif, tandis que Variété, Répétition et l’interaction Variété×Répétition demeurent hautement significatifs. En revanche, les statistiques F augmentent et les p-values diminuent après correction, suggérant que la winsorisation a limité l’influence de valeurs extrêmes et renforcé la détection des effets.
# --- Diagnostics globaux du modèle mixte ---
par(mfrow = c(2, 2))
# 1) Résidus vs valeurs ajustées (homoscédasticité / forme)
plot(fitted(mod_raw), resid(mod_raw),
xlab = "Valeurs ajustées", ylab = "Résidus",
main = "Résidus vs ajustées")
abline(h = 0, lty = 2)
# 2) QQ-plot des résidus du modèle global (normalité)
qqnorm(resid(mod_raw), main = "QQ-plot des résidus (modèle global)")
qqline(resid(mod_raw))
# 3) Histogramme des résidus
hist(resid(mod_raw), main = "Histogramme des résidus", xlab = "Résidus")
mod_data <- model.frame(mod_raw)
# 4) Résidus vs répétition (check visuel)
boxplot(resid(mod_raw) ~ mod_data$Repetition,
main = "Résidus par répétition", xlab = "Répétition", ylab = "Résidus")L’examen des diagnostics du modèle global sur les données non winsorisées montre que :
Ainsi, bien que les hypothèses soient globalement acceptables, la présence de valeurs atypiques peut influencer légèrement la normalité des résidus.
# Data réellement utilisée par le modèle (sans NA)
mf <- model.frame(mod)
# Résidus et fitted alignés avec mf
res <- resid(mod)
fit <- fitted(mod)
par(mfrow = c(2, 2))
# 1) Résidus vs ajustées
plot(fit, res,
xlab = "Valeurs ajustées", ylab = "Résidus",
main = "Résidus vs ajustées")
abline(h = 0, lty = 2)
# 2) QQ-plot
qqnorm(res, main = "QQ-plot des résidus (modèle global)")
qqline(res)
# 3) Histogramme
hist(res, main = "Histogramme des résidus", xlab = "Résidus")
# 4) Résidus par répétition (✅ plus d'erreur)
boxplot(res ~ mf$Repetition,
main = "Résidus par répétition",
xlab = "Répétition", ylab = "Résidus")Après winsorisation, les diagnostics du modèle sont globalement améliorés :
Ainsi, la winsorisation a permis d’atténuer l’influence des valeurs extrêmes tout en conservant des conclusions qualitativement similaires.
Les diagnostics seront présentés sur les données winsorisées afin de réduire l’influence des valeurs extrêmes ; les résultats restant cohérents avec ceux obtenus sur les données brutes, cette approche est retenue pour une analyse plus robuste.
L’interaction Variété × Répétition étant significative (p < 0.001), l’interprétation des effets principaux isolés devient insuffisante. En effet, l’effet de la variété dépend du moment de mesure. Il est donc nécessaire de réaliser des comparaisons post-hoc afin d’examiner les effets simples, notamment la comparaison des variétés à chaque répétition, ainsi que l’évolution des répétitions au sein de chaque variété. Ces analyses complémentaires permettent d’identifier précisément à quels moments les différences sont significatives.
library(rstatix)
dat_post <- dat_wins %>%
transmute(Sujet, Terreau, Variete, Repetition, Hauteur = Hauteur_corr)
# 8.1 Variete à chaque répétition (Var1 vs Var2)
pwc_var_by_rep <- dat_post %>%
group_by(Repetition) %>%
t_test(Hauteur ~ Variete, detailed = TRUE) %>%
adjust_pvalue(method = "bonferroni") %>%
add_significance("p.adj")
pwc_var_by_repLes comparaisons post-hoc (tests t par répétition avec
correction de Bonferroni) montrent que la différence entre les variétés
est significative uniquement à la première
répétition.
À Rep1, la hauteur moyenne de Var2
(40.21 cm) est nettement supérieure à celle de Var1
(28.42 cm), avec une différence moyenne de −11.78 cm (Var1 − Var2),
statistiquement significative (t = −8.99, p = 5.58 ×
10⁻¹⁴ ; IC95% [−14.39 ; −9.18]).
En revanche, aucune différence significative n’est
observée aux répétitions suivantes :
- Rep2 (p = 0.787),
- Rep3 (p = 0.0868),
- Rep4 (p = 0.585).
Les moyennes deviennent alors beaucoup plus proches entre les deux
variétés.
Ces résultats suggèrent que l’écart initial marqué entre les variétés
s’atténue au fil du temps, ce qui est cohérent avec
l’interaction significative Variété × Répétition mise en
évidence par le modèle mixte.
# 8.2 Répétition dans chaque variété (paired = TRUE)
pwc_rep_by_var <- dat_post %>%
group_by(Variete) %>%
pairwise_t_test(
Hauteur ~ Repetition,
paired = FALSE,
p.adjust.method = "bonferroni"
)
pwc_rep_by_varLes comparaisons post-hoc du facteur intra-sujet Répétition ont été réalisées séparément pour chaque variété, avec ajustement des p-values (méthode de Bonferroni).
Pour Var1, plusieurs différences significatives sont
observées :
Rep1 diffère de Rep2 et Rep4, Rep2 diffère de Rep3, et Rep3 diffère de
Rep4 (p_adj < 0.05).
En revanche, Rep1 est comparable à Rep3, et Rep2 est comparable à Rep4
(p_adj > 0.05).
Ces résultats suggèrent une évolution temporelle non monotone de la
hauteur pour Var1.
Pour Var2, la répétition Rep1 diffère
significativement de Rep2 et Rep3 (p_adj < 0.05), ce qui
indique une hauteur plus élevée au premier temps, suivie d’une
diminution aux temps suivants.
En revanche, la différence entre Rep1 et Rep4 n’est pas
significative après correction de Bonferroni (p_adj =
0.055).
Par ailleurs, Rep2 diffère de Rep3 (p_adj < 0.05),
Rep2 est comparable à Rep4 (p_adj > 0.05), et
Rep3 diffère de Rep4 (p_adj < 0.05).
Ces résultats confirment que l’effet du temps varie selon la variété, ce qui est cohérent avec l’interaction significative Variété × Répétition mise en évidence par le modèle mixte.
Le facteur Terreau n’étant pas significatif dans le modèle ANOVA (p > 0.05), et aucune interaction impliquant ce facteur n’étant significative, des comparaisons post-hoc n’ont pas été réalisées pour ce facteur. Les tests post-hoc ne sont en effet pertinents que lorsqu’un effet principal ou une interaction associée est significatif.
L’analyse a été réalisée à l’aide d’un modèle linéaire mixte intégrant un effet aléatoire Sujet afin de tenir compte de la structure à mesures répétées.
Cette analyse a mis en évidence :
Aucune interaction impliquant le facteur Terreau n’est statistiquement significative.
L’interaction Variété × Répétition étant significative, l’interprétation des effets principaux isolés n’est pas suffisante.
Des comparaisons post-hoc ont donc été réalisées afin de préciser la nature de cette interaction.
Les résultats montrent que :
L’effet de la variété dépend du moment de mesure.
L’interaction significative indique que les trajectoires de croissance des variétés ne sont pas parallèles.
Ainsi, on ne peut pas conclure à un effet global constant de la
variété :
c’est la combinaison Variété × Temps qui structure la
dynamique observée.
Les résultats indiquent que :
Ces éléments constituent la base de l’interprétation scientifique développée dans la section suivante.
Cette étude avait pour objectif d’évaluer l’influence du terreau, de la variété et du temps sur la hauteur des plantes dans un dispositif à mesures répétées.
L’analyse par modèle linéaire mixte montre que :
Le résultat central réside dans l’interaction Variété × Répétition, indiquant que les trajectoires de croissance diffèrent selon le matériel génétique (variété).
Ainsi, la dynamique de croissance observée est principalement déterminée par l’interaction entre le facteur génétique (variété) et le temps (répétition), tandis que le type de terreau ne joue pas un rôle significatif dans les conditions expérimentales étudiées.