Régression à la moyenne

LA régression à la moyenne

Contexte du phénomène de régression à la moyenne

La régression à la moyenne est un phénomène statistique que je trouve assez méconnu, et que personnellement, j’ai eu un peu de mal à cerner, parce que je ne comprenais pas dans quelles conditions ce mécanisme pouvait intervenir.

En réalité, c’est assez simple : le phénomène de régression à la moyenne intervient lorsque :

  • on compare des mesures faites à deux temps différents, chez des mêmes sujets (ou des unités expérimentales)
  • et que ces sujets ont préalablement été sélectionnées en raison de valeurs particulièrement élevées, ou particulièrement faibles du critère du jugement lors du premier temps de mesure.

Si ça vous semble abstrait,  imaginez que vous souhaitez évaluer l’effet de séances de coaching sur la consommation de cigarettes avec un design quasi-expérimental de type avant / après. Pour cela vous interrogez  à J0 (baseline) 50 sujets à propos de leur consommation tabagique de la semaine précédente (en nombre de cigarettes), puis vous sélectionnez les 25 plus gros fumeurs (en vous disant qu’ils seront plus représentatifs des sujets qui pourraient, au final, bénéficier de séances de coaching dans la vraie vie ).  Et vous les interrogez, à nouveau à propos de leur consommation de cigarettes, une semaine après les séances de coaching. Eh bien dans cette situation, lorsque vous allez comparer le comportement tabagique de vos 25 sujets sélectionnés,  avant et après les séances de coaching,  vous allez avoir affaire au phénomène de régression à la moyenne !

Je vous explique tout cela en détail, en l’illustrant avec des données simulées.

Table des matières

Définition de la régression à la moyenne

La régression à la moyenne est une normalisation des données lors de la seconde mesure, pour se rapprocher de la moyenne observée sur l’ensemble de la population. D’où le terme régression à la moyenne.

Dit autrement, dans cette situation de mesures répétées sur des sujets sélectionnés pour avoir des valeurs élevées ou basses du critère de jugement à baseline,  une partie de l’évolution du critère d’intérêt entre les deux mesures (la réduction du nombre de cigarettes fumées dans notre exemple) est en réalité due au phénomène de régression à la moyenne : un rapprochement des données, lors de la seconde mesure, vers la moyenne des mesures de la population générale (avant la sélection). .

A quoi est dû la régression à la moyenne ?

Ce phénomène intervient parce que certains des sujets sélectionnés pour avoir une valeur “extrême” à baseline, l’ont par hasard. Et qu’ensuite (à la seconde mesure), cette valeur se normaliser.

Dans notre exemple, pour certains sujets, la consommation tabagique élevée mesurée à baseline est bien représentative de leur consommation habituelle. Pour d’autres, au contraire, cette consommation tabagique élevée à baseline est complètement inhabituelle, et tient du hasard (certains avaient probablement rencontré une situation particulièrement stressante, qui les avait conduit à consommer davantage de cigarettes, c’était la semaine des examens, par exemple). Et donc, lorsque ces sujets sont observés une seconde fois, leur mesure se normalise (leur consommation de cigarettes retourne à leur vrai niveau, qui est plus faible). Et cela est simplement un phénomène statistique.

Conséquences de la régression à la moyenne

Si on met en évidence une diminution du critère de jugement entre les deux temps de mesure (avec un test statistique pour données apparié ), et bien une partie de cette diminution est probablement due au phénomène de régression à la moyenne.

Et puisque dans les essais cliniques,  les critères d’inclusion peuvent concerner le critère de jugement (pour atteindre une certaine gravité d’une maladie, par exemple) ce phénomène n’est pas rare.

Illustration de la régression à la moyenne

Pour essayer d’illustrer le phénomène de régression à la moyenne, avec des données,  je me suis servi de l’exemple présenté par Stephen Seen ici.

Il s’agit de mettre en évidence le phénomène de régression à la moyenne, entre deux temps de mesure,  en dehors de toute intervention. Autrement dit,  de montrer que même sans intervention susceptible de diminuer les mesures, lorsque les sujets sont sélectionnés, la moyenne des mesures au deuxième temps est inférieure à celle des mesures initiales.

Pour cela, nous allons ; 

  • commencer par simuler des données de pression sanguine diastolique à deux temps d’observation : T0 et T1, chez 100 sujets.
  • puis  comparer, dans un premier temps, les moyennes de la pression sanguine diastolique de ces 100 sujets à T0 et T1 pour nous assurer qu’elles sont similaires
  • puis, dans un second temps,  sélectionner les sujets ayant une  pression sanguine diastolique forte (> 95 mmHg)
  • et  comparer les moyennes de ce paramètre au temps T0 et T1 pour mettre en évidence la diminution de la moyenne à T1 par rapport à T0, autrement dit, mettre en évidence en le phénomène de régression à la moyenne.

 

Les données sont simulées avec les paramètres suivants :

  • m0 = m1 = 90 mmHg
  • s0 = s1 = 8 mmHg
  • r(T0, T1) )= 0.7 (coefficient de corrélation entre les deux séries de mesures) 
set.seed(1)
# matrice de variance covariance
#cov(x,y) =r(x,y)*sd(x)*sd(y) = 0.7*8*8 =44.8
sigma<-rbind(c(64,44.8), c(44.8,64))

mu<-c(90, 90) 

n=100

library(MASS)
df<-as.data.frame(mvrnorm(n=n, mu=mu, Sigma=sigma))

library(tidyverse)
names(df) <- c("T0", "T1")
df <- df %>% 
    mutate(id=1:n())


head(df)
##          T0        T1 id
## 1  87.30164  83.45737  1
## 2  91.22399  91.48498  2
## 3  86.65910  81.01432  3
## 4 101.27658 102.25584  4
## 5  94.45849  90.40217  5
## 6  78.47278  89.42426  6 

Comparaison des valeurs à T0 et T1 sur l'ensemble des sujets

Les estimations des moyennes à T0 et T1 sont très similaires, autour de 90 mmHg : 

mean(df$T0)
## [1] 90.92026
mean(df$T1)
## [1] 90.68597 

Si nous utilisons un test de Student apparié pour les comparer, nous obtenons une pvalue >0.05. Ainsi, rien ne nous permet d’affirmer que la moyenne des pressions sanguines diastoliques à T1 est différente de la moyenne à T0.

t.test(df$T0,df$T1, paired=TRUE)
## 
##  Paired t-test
## 
## data:  df$T0 and df$T1
## t = 0.39471, df = 99, p-value = 0.6939
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.9434954  1.4120715
## sample estimates:
## mean of the differences 
##               0.2342881 

Nous pouvons également visualiser les trajectoires de chaque sujet entre T0 et T1, comme ceci : 

df_long <- df %>% 
    mutate(id=1:n()) %>% 
    pivot_longer(-id,
                  names_to="Time",
                 values_to="Value")
# boxplot
ggplot(df_long , aes(x=Time, y=Value, fill=Time, colour=Time))+
    geom_boxplot(alpha=0.5, notch = TRUE, outlier.alpha=0)+
    geom_jitter(width=0.05)+
    geom_line(aes(group=id), colour="gray50")+
    theme_classic()+
    theme(legend.position = "none") 
Evolution de tous les sujets

Nous pouvons voir que, globalement 50% des données en T1 sont supérieures à celles de T0 et 50% sont inférieures. 

 

Comparaison des valeurs à T0 et T1 des sujets ayant une pression >95 mmHg

Sélectionnons à présent les sujets ayant une pression sanguine diastolique forte (>95mmH) à T0 :

T0_sup95 <- df %>% 
    filter(T0>=95) 

Si nous estimons les moyennes à T0 et T1 de ces sujets, nous pouvons voir que la moyenne à T1 est numériquement inférieure d’environ 3.5 mmHg par rapport à T1. 

mean(T0_sup95$T0)
## [1] 100.706
mean(T0_sup95$T1)
## [1] 97.21009 

Et si nous comparons ces moyennes à l’aide d’un test de Student apparié, nous mettons en évidence une différence significative, dans le sens d’une moyenne inférieure à T1.

t.test(T0_sup95$T0,T0_sup95$T1, paired=TRUE)
## 
##  Paired t-test
## 
## data:  T0_sup95$T0 and T0_sup95$T1
## t = 3.9279, df = 22, p-value = 0.000719
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  1.650126 5.341729
## sample estimates:
## mean of the differences 
##                3.495928 

 Cette diminution est due à l’effet de la régression à la moyenne (qui est estimé à  3.5 mmHg).

Et si entre les deux temps de mesures, nous avions introduit une intervention (un médicament par exemple) nous aurions pu nous tromper en concluant que cette différence était due à l’intervention, alors qu’elle est seulement la conséquence de l’effet de la régression à la moyenne.

Nous pouvons également suivre les trajectoires des ces sujets , comme ceci ; 

T0_sup95_long <- T0_sup95 %>% 
    pivot_longer(-id,
                 names_to="Time",
                 values_to="Value")

ggplot(T0_sup95_long , aes(x=Time, y=Value, fill=Time, colour=Time))+
    geom_boxplot(alpha=0.5, notch = TRUE, outlier.alpha=0)+
    geom_jitter(width=0.05)+
    geom_line(aes(group=id), colour="gray50")+
    theme_classic()+
    theme(legend.position = "none") 

L’évolution des valeurs n’est plus du tout équilibrée, comme précédemment. Ici, la majorité  des sujets (sélectionnés du fait d’une valeur élevée de la pression artérielle diastolique à baseline) ont une seconde valeur plus faible.

Nous pouvons encore visualiser le mécanisme de régression à la moyenne sur cet autre graph ;

df <- df %>%
    mutate(grp = ifelse(T0<95 & T1<95,"normotensive",
                    ifelse(T0>=95 & T1 >=95, "hypertensive",
                           ifelse(T0<95 & T1>=95, "Changing1", "Changing2"))))

ggplot(df, aes(x=T0, y=T1,colour=grp))+
    geom_point()+
    scale_x_continuous(limits=c(70,110), breaks=c(70, 80, 90, 95, 100, 110))+   
    scale_y_continuous(limits=c(70,110), breaks=c(70, 80, 90, 95, 100, 110))+   
    geom_vline(xintercept=95, colour="black")+
    geom_hline(yintercept = 95, colour="black")+
    scale_colour_manual(values=c("blue", "orange", "magenta", "green3"))+
    theme_classic()+
    theme(legend.position = "none") 
Visualisation de la régression à la moyenne

 23 sujets ont une mesure supérieure à 95 mmH à T0 (au-delà du trait vertical). Parmi ces 23 sujets, 16 (soit 70%)  ont une valeur à T1 inférieure à celle de T0 (groupe 2 et 3) dont 5 avec une valeur de T1 inférieure à 95 mmHg (groupe 3).

Comment limiter l’effet de régression à la moyenne ?

  • se baser sur une moyenne de plusieurs mesures, et pas une seule, pour sélectionner des sujets
  • employer un design de type “essai randomisé contrôlé” avec deux bras (un “intervention” et l’autre “placebo”). Les sujets étant aléatoirement affectés à l’un des deux groupes, ceux-ci sont comparables, et l’effet de la régression à la moyenne sera identique. De plus la différence d’effet observé dans le placebo permettra de quantifier l’effet de régression à la moyenne [1]
  • employer une modèle de régression ANCOVA [1] pour comparer les moyennes de type : 

\[ y1 = cste + a \times type (y_0 – \bar{y_0}) + b \times group + error \]

[1] : Barnett, A. G., Van Der Pols, J. C., & Dobson, A. J. (2005). Regression to the mean: what it is and how to deal with it. International journal of epidemiology, 34(1), 215-220.)

Pour aller plus loin

Voici quelques liens pour en apprendre davantage sur ce phénomène de régression à la moyenne

Conclusion

J’espère que ce court article d’introduction à la régression à la moyenne vous permettra d’appréhender un peu ce phénomène, et vous rendra vigilants lors de l’interprétation de résultats de comparaisons de type avant / après.

Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee. Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee  

Poursuivez votre lecture

6 réponses

  1. Merci beaucoup Claire cet article était vraiment très intéressant. Je vais continuer d’approfondir mes lectures sur le sujet.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.