Dans un précédent article , nous avons vu comment analyser un critère quantitatif mesuré à baseline, avant l’intervention, puis à nouveau post-intervention dans un essai comportant deux groupes parallèles.
Nous avons comparé trois approches : analyser uniquement le score post-intervention, comparer les scores de changement entre les groupes et, enfin, utiliser une ANCOVA afin de comparer les scores post-intervention en tenant compte de la valeur à baseline.
L’ANCOVA apparaissait alors comme l’approche à privilégier.
Mais une autre question se pose naturellement : puisque chaque sujet est mesuré deux fois, pourquoi ne pas considérer baseline et post-intervention comme des mesures répétées et utiliser un modèle linéaire mixte ?
C’est d’ailleurs une question qui m’a été posée par un lecteur à la suite de la publication de l’article précédent.
Dans cet article, nous allons donc comparer ces deux approches afin de comprendre comment elles considèrent les données, à quelle question elles permettent de répondre et dans quelles situations les utiliser.
Reprenons notre exemple
Nous allons reprendre les données simulées utilisées dans l’article précédent, elles-mêmes inspirées de l’exemple présenté par Vickers et Altman
L’étude comporte deux groupes parallèles :
- un groupe placebo ;
- un groupe acupuncture.
Pour chaque sujet, un score combinant douleur et capacité fonctionnelle est mesuré à baseline puis post-intervention. Les valeurs les plus élevées correspondent à un meilleur état clinique.
Les données individuelles originales n’étant pas disponibles publiquement, nous générons un jeu de données synthétique reproduisant les principales caractéristiques descriptives rapportées dans l’article. Les scores sont ensuite arrondis à l’unité. Le score de changement est recalculé après cet arrondi, afin qu’il corresponde exactement à la différence entre les valeurs de baseline et post-intervention utilisées dans les analyses.
library(dplyr)
library(tidyr)
library(ggplot2)
library(moderndive)
library(lme4)
library(parameters)
library(performance)
theme_set(theme_bw())
simuler_groupe <- function(
n,
groupe,
moyenne_baseline,
ecart_type_baseline,
moyenne_post,
ecart_type_post,
ecart_type_delta
) {
covariance_baseline_post <- (
ecart_type_baseline^2 +
ecart_type_post^2 -
ecart_type_delta^2
) / 2
matrice_covariance <- matrix(
c(
ecart_type_baseline^2,
covariance_baseline_post,
covariance_baseline_post,
ecart_type_post^2
),
nrow = 2,
byrow = TRUE
)
donnees <- MASS::mvrnorm(
n = n,
mu = c(moyenne_baseline, moyenne_post),
Sigma = matrice_covariance,
empirical = TRUE
)
tibble(
groupe = groupe,
baseline = donnees[, 1],
post = donnees[, 2]
)
}
set.seed(2026)
donnees_simulees <- bind_rows(
simuler_groupe(
n = 27,
groupe = "Placebo",
moyenne_baseline = 53.9,
ecart_type_baseline = 14.0,
moyenne_post = 62.3,
ecart_type_post = 17.9,
ecart_type_delta = 14.6
),
simuler_groupe(
n = 25,
groupe = "Acupuncture",
moyenne_baseline = 60.4,
ecart_type_baseline = 12.3,
moyenne_post = 79.6,
ecart_type_post = 17.1,
ecart_type_delta = 16.1
)
) |>
mutate(
groupe = factor(
groupe,
levels = c("Placebo", "Acupuncture")
),
across(c(baseline, post), ~ round(.x, 0)),
delta = post - baseline
)
head(donnees_simulees)# A tibble: 6 × 4
groupe baseline post delta
<fct> <dbl> <dbl> <dbl>
1 Placebo 50 51 1
2 Placebo 66 77 11
3 Placebo 76 56 -20
4 Placebo 45 61 16
5 Placebo 58 70 12
6 Placebo 61 101 40Les données sont pour l’instant sous une forme large (wide) : une ligne correspond à un sujet et les mesures à baseline et post-intervention occupent deux colonnes différentes.
donnees_moyennes <- donnees_simulees |>
group_by(groupe) |>
summarise(
baseline = mean(baseline),
post = mean(post)
)
donnees_moyennes# A tibble: 2 × 3
groupe baseline post
<fct> <dbl> <dbl>
1 Placebo 54 62.2
2 Acupuncture 60.4 79.7Les résultats diffèrent légèrement de ceux présentés dans le premier article, car les scores ont ici été arrondis.
Visualisation :
ggplot(donnees_moyennes) +
geom_segment(
aes(
x = 1,
xend = 2,
y = baseline,
yend = post,
color = groupe
),
linewidth = 1
) +
geom_point(
aes(
x = 1,
y = baseline,
color = groupe
),
size = 3
) +
geom_point(
aes(
x = 2,
y = post,
color = groupe
),
size = 3
) +
scale_x_continuous(
breaks = c(1, 2),
labels = c("Baseline", "Post-intervention")
) +
labs(
x = NULL,
y = "Score moyen",
color = "Groupe"
) +
theme_bw()
Première possibilité : utiliser une ANCOVA
Avec l’ANCOVA, le score post-intervention constitue la variable réponse.
Le score à baseline est introduit dans le modèle comme covariable :
En R :
mod_ancova <- lm(
post ~ groupe + baseline,
data = donnees_simulees
)
parameters::parameters(mod_ancova)Parameter | Coefficient | SE | 95% CI | t(49) | p
--------------------------------------------------------------------------
(Intercept) | 23.92 | 9.08 | [5.67, 42.18] | 2.63 | 0.011
groupe [Acupuncture] | 12.93 | 4.27 | [4.36, 21.51] | 3.03 | 0.004
baseline | 0.71 | 0.16 | [0.39, 1.03] | 4.44 | < .001Le coefficient associé au groupe permet alors de répondre à une question très précise :
Pour deux sujets ayant la même valeur à baseline, quelle différence moyenne de score post-intervention observe-t-on entre les deux groupes ?
Dans notre exemple, l’ANCOVA conduit à une différence ajustée d’environ 12,9 points en faveur du groupe acupuncture.
Le modèle utilisé ici suppose que la relation entre le score à baseline et le score post-intervention est la même dans les deux groupes : les deux droites de régression ont donc une pente identique.
ggplot(
donnees_simulees,
aes(
x = baseline,
y = post,
color = groupe
)
) +
geom_point(
alpha = 0.6,
size = 2
) +
geom_parallel_slopes(
se = FALSE
) +
labs(
x = "Score à baseline",
y = "Score post-intervention",
color = "Groupe"
) +
theme_bw()
Pour une même valeur à baseline, la distance verticale entre les deux droites est constante et correspond à l’effet ajusté du traitement, soit environ 12,9 points dans notre exemple.
La baseline n’est donc pas considérée comme une réponse : elle sert à ajuster la comparaison des groupes post-intervention sur leur niveau initial.
Mais on pourrait regarder ces données autrement.
Baseline et post sont aussi des mesures répétées
Chaque sujet possède deux observations.
Ces deux observations ne sont évidemment pas indépendantes : le score d’un sujet post-intervention est lié à son propre score à baseline.
On peut donc réorganiser les données au format long. Cette fois, baseline et post-intervention deviennent deux modalités d’une variable temps, tandis que le score devient la variable réponse aux deux temps.
donnees_longues <- donnees_simulees |>
mutate(id = row_number()) |>
pivot_longer(
cols = c(baseline, post),
names_to = "temps",
values_to = "score"
) |>
mutate(
temps = factor(
temps,
levels = c("baseline", "post")
)
)
head(donnees_longues)# A tibble: 6 × 5
groupe delta id temps score
<fct> <dbl> <int> <fct> <dbl>
1 Placebo 1 1 baseline 50
2 Placebo 1 1 post 51
3 Placebo 11 2 baseline 66
4 Placebo 11 2 post 77
5 Placebo -20 3 baseline 76
6 Placebo -20 3 post 56Cette fois, baseline et post-intervention sont deux observations de la même variable réponse : le score.
C’est une différence conceptuelle importante avec l’ANCOVA.
Utiliser un modèle linéaire mixte
En considérant baseline et post-intervention comme deux mesures répétées d’un même score, on peut s’intéresser à l’évolution de ce score au cours du temps, autrement dit à la trajectoire des sujets entre baseline et post-intervention.
Le modèle linéaire mixte permet alors d’estimer une trajectoire moyenne dans chacun des groupes et de déterminer si ces trajectoires diffèrent.
Pour cela, le score est modélisé en fonction du groupe, du temps et de leur interaction groupe × temps. Cette interaction est essentielle : elle permet d’évaluer si l’évolution moyenne du score au cours du temps est différente entre les groupes. Autrement dit, elle permet de déterminer si les deux groupes présentent des trajectoires différentes entre baseline et post-intervention.
Enfin, puisque les deux mesures réalisées chez un même sujet ne sont pas indépendantes, un effet aléatoire associé au sujet est introduit. Il permet de tenir compte du fait que les observations réalisées chez un même individu sont liées entre elles.
Le modèle s’écrit :
où bi représente l’effet aléatoire propre au sujet .
En R :
mod_mixte <- lmer(
score ~ groupe * temps + (1 | id),
data = donnees_longues
)
parameters::parameters(mod_mixte)# Fixed Effects
Parameter | Coefficient | SE | 95% CI
-------------------------------------------------------------------------
(Intercept) | 54.00 | 2.98 | [48.08, 59.92]
groupe [Acupuncture] | 6.44 | 4.30 | [-2.10, 14.98]
temps [post] | 8.19 | 2.94 | [ 2.35, 14.02]
groupe [Acupuncture] × temps [post] | 11.05 | 4.24 | [ 2.64, 19.46]
Parameter | t(98) | p
----------------------------------------------------
(Intercept) | 18.09 | < .001
groupe [Acupuncture] | 1.50 | 0.138
temps [post] | 2.79 | 0.006
groupe [Acupuncture] × temps [post] | 2.61 | 0.011
# Random Effects
Parameter | Coefficient
--------------------------------
SD (Intercept: id) | 11.13
SD (Residual) | 10.80Le modèle présenté ici est volontairement simple : l’effet aléatoire porte uniquement sur l’intercept du sujet. Cette formulation permet d’introduire le principe de l’analyse longitudinale, mais elle implique également une structure relativement simple de la corrélation entre les mesures répétées. D’autres structures peuvent être envisagées lorsque les données longitudinales sont plus complexes.
Interpréter les paramètres du modèle
Avant de nous intéresser plus particulièrement à l’interaction entre le groupe et le temps, regardons ce que représentent les différents paramètres estimés par le modèle.
Le groupe placebo et la mesure à baseline constituent ici les catégories de référence.
- L’intercept, égal à 54,0, correspond au score moyen estimé à baseline dans le groupe placebo.
- L’effet du groupe acupuncture, égal à 6,44, correspond à la différence entre les groupes acupuncture et placebo à baseline. Le score moyen à baseline est ainsi estimé 6,44 points plus élevé dans le groupe acupuncture. Cette différence n’est pas statistiquement significative au seuil de 5 % ().
- L’effet du temps, égal à 8,19, correspond à l’évolution entre baseline et post-intervention dans le groupe placebo. Le score augmente en moyenne de 8,19 points dans ce groupe ().
- Enfin, l’interaction groupe × temps, égale à 11,05, indique que l’évolution observée dans le groupe acupuncture est supérieure de 11,05 points à celle observée dans le groupe placebo ().
L’évolution estimée dans le groupe acupuncture est donc de : 8,19 + 11,05 = 19,24
soit une augmentation moyenne d’environ 19,2 points entre baseline et post-intervention.
L’interaction groupe × temps : comparer les trajectoires
Le coefficient associé à l’interaction groupe × temps est celui qui nous intéresse principalement.
Cette interaction permet de déterminer si l’évolution moyenne du score au cours du temps diffère entre les deux groupes. Graphiquement, cela revient à comparer les pentes des trajectoires moyennes des deux groupes.
Si les deux groupes évoluent de la même manière entre baseline et post-intervention, leurs trajectoires ont la même pente : il n’y a pas d’interaction entre le groupe et le temps.
À l’inverse, si le score évolue davantage dans un groupe que dans l’autre, les deux trajectoires présentent des pentes différentes. Cette différence de pente est captée par l’interaction groupe × temps.
Dans notre exemple, l’évolution entre baseline et post-intervention est estimée 11,05 points plus importante dans le groupe acupuncture que dans le groupe placebo.
Le rôle de l’interaction peut être visualisé en représentant les observations aux deux temps et les trajectoires moyennes des deux groupes.
donnees_longues <- donnees_longues |>
mutate(
temps_num = if_else(temps == "baseline", 0, 1)
)
ggplot(
donnees_longues,
aes(
x = temps_num,
y = score,
color = groupe
)
) +
geom_point(
alpha = 0.5,
position = position_jitter(width = 0.03)
) +
geom_smooth(
method = "lm",
se = FALSE
) +
scale_x_continuous(
breaks = c(0, 1),
labels = c("Baseline", "Post-intervention")
) +
labs(
x = NULL,
y = "Score",
color = "Groupe"
) +
theme_bw()
Les droites affichées sur ce graphique sont utilisées ici comme une représentation descriptive des trajectoires. L’inférence statistique — estimation de l’interaction, erreur standard, intervalle de confiance et p-value — repose bien sur le modèle mixte présenté précédemment, qui tient compte de la dépendance entre les mesures d’un même sujet.
Et les effets aléatoires ?
Jusqu’ici, nous avons interprété les effets fixes du modèle : groupe, temps et interaction groupe × temps. Mais le modèle comporte également un effet aléatoire associé au sujet.
Dans notre exemple, l’écart-type des (b_i) vaut 11,13. Cela signifie que les niveaux individuels des sujets placebo se dispersent autour de 54 avec un écart-type de 11,13 points, pour la composante interindividuelle. Dans le groupe acupuncture, ils se dispersent de la même manière autour du niveau moyen à baseline de 60,44 points
L’écart-type résiduel est quant à lui estimé à 10,80 points. Il correspond à la variabilité des observations qui reste inexpliquée par les effets fixes et par les différences de niveau entre les sujets.
L’effet aléatoire sujet permet surtout de représenter la dépendance entre les mesures répétées d’un même individu : les observations appartenant à un même sujet partagent une composante commune.
À partir des deux composantes de variance, on peut également calculer la corrélation intra-sujet induite par ce modèle :
En R :
performance::icc(mod_mixte)# Intraclass Correlation Coefficient
Adjusted ICC: 0.515
Unadjusted ICC: 0.375Avec les valeurs obtenues ici, cette corrélation est d’environ 0,52. Les deux observations d’un même sujet présentent donc une dépendance non négligeable, que le modèle doit prendre en compte.
Il faut toutefois garder à l’esprit que cette corrélation découle de la structure choisie pour notre modèle à intercept aléatoire. D’autres formulations du modèle permettent de représenter autrement la covariance entre les mesures répétées.
ANCOVA et modèle mixte ne considèrent pas les données de la même manière
Nous pouvons maintenant mieux comprendre la différence entre les deux approches.
Dans l’ANCOVA, baseline et post-intervention n’ont pas le même statut. Le score post-intervention constitue la variable réponse, tandis que la valeur à baseline est utilisée comme covariable d’ajustement.
La question posée est alors :
À valeur de baseline identique, quelle différence moyenne observe-t-on post-intervention entre les groupes ?
Dans notre exemple, cette différence ajustée est estimée à 12,9 points.
Dans le modèle mixte présenté ici, baseline et post-intervention sont au contraire considérées comme deux mesures répétées de la même variable réponse. On s’intéresse alors à la trajectoire du score au cours du temps et, grâce à l’interaction groupe × temps, on cherche à déterminer si cette trajectoire diffère entre les groupes.
La question devient :
L’évolution du score entre baseline et post-intervention est-elle différente selon le groupe ?
Dans notre exemple, cette différence d’évolution est estimée à 11,05 points.
Les deux modèles ne paramètrent donc pas les données de la même façon et leurs coefficients ne s’interprètent pas de la même manière. Choisir entre ces approches revient avant tout à déterminer quelle question nous souhaitons poser aux données.
Quel est alors l’intérêt du modèle mixte ?
Le modèle mixte offre une autre manière de considérer les données : plutôt que de distinguer une mesure initiale utilisée pour l’ajustement et une mesure post-intervention constituant la réponse, il permet de modéliser l’évolution du score au cours du temps.
Il présente également un avantage essentiel dans le contexte de mesures répétées : il tient explicitement compte du fait que plusieurs observations réalisées chez un même sujet sont corrélées.
Et le déséquilibre à baseline ?
Le modèle mixte présenté ici tient compte de la corrélation entre les mesures d’un même sujet, mais il ne corrige pas pour autant un éventuel déséquilibre entre les groupes à baseline. Les trajectoires sont comparées à partir des niveaux effectivement observés dans chaque groupe.
Cela peut notamment poser la question de la régression à la moyenne. Si, par hasard, un groupe présente des valeurs plus élevées à baseline, ces valeurs peuvent avoir tendance à se rapprocher de la moyenne lors de la mesure suivante, indépendamment de l’effet du traitement. Une partie de l’évolution observée peut alors être liée à ce phénomène plutôt qu’au traitement lui-même.
Il existe toutefois d’autres formulations des modèles longitudinaux. La cLDA (constrained longitudinal data analysis) impose notamment une moyenne identique à baseline dans les groupes randomisés, tout en permettant d’analyser conjointement les différentes mesures au cours du temps.
L’intérêt du modèle mixte devient encore plus évident lorsque le protocole prévoit plusieurs mesures successives, par exemple :
- baseline ;
- 1 mois ;
- 3 mois ;
- 6 mois ;
- 12 mois.
Dans ce cas, l’évolution d’un sujet ne se résume plus à deux valeurs. Le modèle mixte permet d’exploiter l’ensemble des mesures disponibles et d’étudier la trajectoire des groupes au cours du temps, tout en prenant en compte la corrélation entre les observations appartenant à un même sujet.
Il offre également davantage de souplesse lorsque le nombre ou le calendrier des observations diffère entre les sujets, situation fréquemment rencontrée dans les données longitudinales.
Avec plusieurs temps de mesure, la manière de représenter la covariance entre les observations devient elle-même un élément du modèle. Le modèle utilisé ici repose sur une structure relativement simple. Selon le nombre de mesures répétées et la manière dont elles sont corrélées au cours du temps, d’autres structures de covariance peuvent être plus adaptées.
Le choix entre l’ANCOVA et le modèle mixte dépend donc de la question à laquelle on souhaite répondre, mais également du nombre de temps de mesure disponibles et de la façon dont on souhaite prendre en compte la structure des données.
Ce qu’on peut retenir
L’ANCOVA et modèle linéaire mixte permettent sont deux approches qui permettent d’analyser des données comportant une mesure à baseline et une mesure post-intervention, mais ils ne considèrent pas ces données de la même manière.
Avec l’ANCOVA, le score post-intervention constitue la variable réponse et la baseline est utilisée comme covariable. L’objectif est de comparer les groupes post-intervention à niveau initial comparable.
Avec le modèle mixte présenté dans cet article, baseline et post-intervention sont considérées comme deux mesures répétées d’un même score. L’interaction entre le groupe et le temps permet alors de déterminer si les trajectoires moyennes diffèrent entre les groupes, tandis que l’effet aléatoire associé au sujet permet de tenir compte de la dépendance entre les observations d’un même individu.
Lorsque l’étude ne comporte qu’une baseline et un seul temps post-intervention, l’ANCOVA constitue une approche simple et particulièrement adaptée lorsque l’objectif porte sur la comparaison ajustée des groupes post-intervention.
Lorsque plusieurs mesures sont recueillies au cours du temps, le modèle mixte prend tout son intérêt : il permet d’exploiter l’ensemble de la trajectoire longitudinale et de modéliser explicitement la dépendance entre les mesures répétées.
Le choix de la méthode dépend donc de la question que l’on cherche à étudier, mais aussi du nombre de mesures réalisées au cours du temps
Et vous, quelle approche utilisez-vous pour analyser ce type de données ? ANCOVA, modèle mixte, autre approche ? N’hésitez pas à partager votre pratique ou vos questions en commentaire.



