Auteur : Nicolas Stefaniak

Niveau : Licence - master - doctorat - chercheurs confirmés

Prérequis

  • Avoir installé R, RStudio et le package ‘effectsize’ (Ben-Shachar et al., 2020). Pour rappel, on peut installer ce package et le charger de la manière suivante :
 install.packages("effectsize")
 library("effectsize")
 install.packages("datasets")
install.packages("psych")
install.packages("emmeans")
install.packages("metafor")

library("metafor")
library("emmeans")
library("datasets")
library("psych")
  • savoir ce qu’est une corrélation, un t de Student, une anova, les \(\chi^2\)
  • avoir des bases sur les régressions, les régressions logistiques et/ou les analyses de survie

Introduction

Dans les métaanalyses, la taille d’effet est la valeur qui mesure la force d’association entre des variables et une population. Ce critère est bien plus important lorqu’on fait une affirmation statistique que d’indiquer que nous sommes face à un effet significatif ou non significatif.

Les tailles d’effet peuvent s’exprimer de manière relative (ou standardisée) ou absolue (ou non standardisée). Bien que les deux ne sont pas mutuellement incompatibles, on priviligiera les tailles d’effets non standardisées lorsque la mesure fait sens en elle-même. Dans le cas contraire, les tailles d’effets standardisées doivent être privilégiées. Par exemple, si on s’intéresse à l’impact d’un procédure d’abstinence chez des personnes alcooliques, le nombre de jours/semaines/mois d’abstinence fait directement sens. En revanche, lorsqu’on a une échelle d’estime de soi, obtenir un score de 17/20 n’est pas informatif sans avoir une connaissance approfondie de l’outil utilisé.

Dans le cadre des métaanalyse, il est possible de faire l’analyse tant avec des tailles d’effets standardisés et non standardisés, mais, pour faire une métaanalyse sur des mesures non standardisées, il faut que l’ensemble des études dans la métaanalyse ait utilisé la même mesure, de la même manière. Dans le cas contraire, on compare des pommes et des poires, ce qui va à l’encontre de l’idée des statistiques.

En termes d’interprétation, il faut être conscient que déterminer ce qu’est une grande ou une petite taille d’effet dépend essentiellement du contexte théorique dans lequel l’effet a été calculé. Dans certains domaines ou pour certaines questions, il est habituel d’avoir des tailles d’effets importantes alors que dans d’autres, c’est le contraire. Par exemple, quand on s’intéresse à des changements cognitifs survenus suite un trouble/une intervention/un accident, il est fréquent de considérer que que le changement est cliniquement significatif, s’il y a un changement supérieur à 1 écart-type par rapport au niveau antérieur (Bruggemans et al., 1997; Collie et al., 2004) alors que les tailles d’effets des prises en charge non médicamenteuses dans le traitement de la dépression, en particulier l’efficacité des TCC par rapport aux groupes de contrôle est de 0.23 (Cuijpers et al., 2014). Ainsi, si on appliquait le même raisonnement pour tester l’efficacité d’un traitement que celui appliqué par Collie pour identifier un changement cognitif, aucun traitement ne serait conidéré comme significatif, même les médicamenteux dont la taille d’effet est de 0.37 (Leucht et al., 2012). De même, en termes de corrélations, dans de nombreux domaines d’études, une corrélation de 0.30 serait considérée comme faible alors que cela représente deux tiers des articles publiés en psychologie présentent des corrélations inférieures à 0.30 (Hemphill, 2003). En résumé, il faut donc connaître le domaine dans lequel on travaille pour interpréter correctement les tailles d’effets. Cependant, cela requiert une grande expertise qui n’est pas toujours compatible avec les premiers résultats qu’on désire interpréter. Pour cette raison, plusieurs auteurs ont proposé des balises pour interpréter ces tailles d’effet. Nous décrirons ces balises dans chaque section correspondant aux différentes mesures de tailles d’effet.

Il est à noter qu’il existe des mesures de tailles d’effet pour pratiquement toutes les analyses. Ces tailles d’effet sont décrites dans les chapitres consacrés à ces analyses ad hoc. De même, il est théoriquement possible de faire une métaanalyse pour pratiquement toutes les sortes de tailles d’effet. Cependant, ce chapitre se focalisera sur les tailles d’effets utilisées le plus souvent dans le cadre des métaanalyses. Il est à noter qu’il est souvent possible de convertir les tailles d’effet pour les rendre compatibles avec celles présentées dans cette section. Autant que possible, ces conversions sont explicités dans le cadre de ces analyses.

Les tailles d’effets pour les corrélations.

Les corrélations sont en elles-mêmes des tailles d’effet puisque leur valeur ne dépend pas de la taille de l’échantillon.

Pour rappel, la formule de la corrélation de Bravais-Pearson (Pearson, 1895) entre les variables x et y est

\[r_{xy} = \frac{cov_{xy}}{s_x \times s_y}\text{ (1)} \]

\(cov_{xy}\) est la covariance entre x et y et \(s_x\) et \(s_y\) sont les écart-types de x et de y.

On peut également exprimer cette valeur en pourcentage de variance exprimer. Pour cela, on élève la valeur de la corrélation au carré1. On parle aussi parfois de coefficient de détermination.

Obtenir un coefficient de corrélation à partir d’une régression

Dans une régression multiple, il est possible d’estimer la corrélation entre un des prédicteurs avec la variable dépendantes si certaines informations sont disponibles et si certaines conditions sont remplies dont la plus importante est qu’il n’y ait pas une trop forte colinéarité entre les prédicteurs, c’est-à-dire de faibles corrélations entre les prédicteurs. Ainsi, s’il est raisonnable de penser que plusieurs prédicteurs ont de fortes corrélations entre eux, l’estimation sera sensiblement biaisée.

Obtenir le coefficient de corrélation à partir du \(\Delta R^2\)

Certains auteurs précisent dans le tableau de régression le \(\Delta R^2\), c’est-à-dire la différence de pourcentage de variance expliquée spécifiquement par une variable dans le modèle, ou pour le formuler autrement le pourcentage de variance du modèle qui n’est plus expliqué dès lors qu’une variable est supprimée. Ce coefficient de corrélation est le coefficient de corrélation partiel élevé au carré. En faisant la racine carrée de cette valeur, on obtient un coefficient de corrélation.

Obtenir le coefficient de corrélation à partir du t

Pour tester la significativité des coefficients de corrélation, une statistique t est calculée. Cette valeur est obtenue par l’équation (2) :

\[t = \frac{r_{xy} \times \sqrt{(N-2)}}{\sqrt{1-r_{xy}^2} }\text{ (2)} \]

où N est la taille d’échantillon et \(r_{xy}^2\) est le coefficient de corrélation au carré. Sachant que dans les tableaux de régression, la valeur du t est fréquemment fournie pour indiquer la significativité de la variable, il est possible de retrouver le coefficient de corrélation partiel à partir de cette valeur. L’équation devient alors (3) :

\[r = \sqrt{\frac{t^2}{t^2+N-2}} \text{ (3)}\]

Cliquez pour le développement mathématique

Á partir de la formule du t, nous pouvons élever le tout au carré pour éviter les racines carrées, ce qui donne : \[t^2 = \frac{r_{xy}^2 \times (N-2)} { (1-r_{xy}^2)} \]

En multipliant le tout par le dénominateur, on peut simplifier la formule.

\[t^2 \times (1-r_{xy}^2) = r_{xy}^2 \times (N-2) \] On peut développer la partie gauche de l’équation :

\[t^2 - (t^2 \times r_{xy}^2) = r_{xy}^2 \times (N-2) \] En additionnant \((t^2 \times r_{xy}^2)\) des deux côtés de l’équation, nous obtenons :

\[t^2 = (r_{xy}^2 \times (N-2))+ (t^2 \times r_{xy}^2) \] Nous pouvons à présent factoriser le \(r^2_{xy}\)

\[t^2 = r_{xy}^2 \times (t^2 +(N-2)) \] En divisant le tout par \((t^2 +(N-2))\), l’équation peut être simplifiée de la manière suivante :

\[\frac{t^2}{(t^2 +(N-2))} = r_{xy}^2\]

On termine en faisant la racine carré du tout :

\[\sqrt{\frac{t^2}{(t^2 +(N-2))}} = r_{xy}\]

Evidemment, il n’est pas nécessaire de calculer cette valeur manuellement. On peut l’obtenir grâce à la fonction t_to_r où le premier argument est la valeur du t et le second est le nombre de degrés de liberté (N-2)

t_to_r(
  t = c(7.46, 0.01),
  df_error = 27
)
## r        |        95% CI
## ------------------------
## 0.82     | [ 0.67, 0.89]
## 1.92e-03 | [-0.35, 0.35]

Cette méthode peut également être utilisée lorsque des modèles linéaires mixtes ont été utilisés.

Exercice 1

Dans le jeu de données “sex appeal”, les participant·es ont communiqué pendant 30 minutes avec une personne correspondant à leur orientation sexuelle. Suite à cette interactions, elles devaient indiquer le sex appeal de cette personne, ainsi que les évaluer sur plusieurs critères, que sont l’humour, l’élégance, l’intelligence et le charme. Les auteurs se demandent quels sont les prédicteurs les plus importants du sex appeal (les données sont fictives).

Voici les résultats que les auteurs obtiennent pour la régression. Le premier tableau fournit les informations relatives à la tolérance et au facteur d’inflation de la variance. Le second et troisième et quatrième tableau de résultats fournissent les résultats de la régression

model<-lm(sex_appeal~charme+humour+intelligence+élégance ,data=sex.appeal)

ols_vif_tol(model)
##      Variables Tolerance      VIF
## 1       charme 0.1381551 7.238241
## 2       humour 0.1380351 7.244532
## 3 intelligence 0.7255781 1.378211
## 4     élégance 0.9692479 1.031728
ols_regress(model)
##                          Model Summary                          
## ---------------------------------------------------------------
## R                       0.878       RMSE                 8.626 
## R-Squared               0.770       MSE                 78.330 
## Adj. R-Squared          0.761       Coef. Var            8.989 
## Pred R-Squared          0.748       AIC                726.751 
## MAE                     7.146       SBC                742.382 
## ---------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##  AIC: Akaike Information Criteria 
##  SBC: Schwarz Bayesian Criteria 
## 
##                                 ANOVA                                 
## ---------------------------------------------------------------------
##                  Sum of                                              
##                 Squares        DF    Mean Square      F         Sig. 
## ---------------------------------------------------------------------
## Regression    24955.532         4       6238.883    79.649    0.0000 
## Residual       7441.308        95         78.330                     
## Total         32396.840        99                                    
## ---------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##        model      Beta    Std. Error    Std. Beta      t       Sig      lower     upper 
## ----------------------------------------------------------------------------------------
##  (Intercept)    17.038         5.808                 2.933    0.004     5.507    28.570 
##       charme     0.149         0.115        0.172    1.298    0.197    -0.079     0.378 
##       humour     0.567         0.115        0.654    4.944    0.000     0.339     0.794 
## intelligence     0.617         0.311        0.115    1.987    0.050     0.001     1.234 
##     élégance     0.293         0.215        0.068    1.361    0.177    -0.134     0.720 
## ----------------------------------------------------------------------------------------

Á partir de la valeur du t, calculez les coefficients de corrélations semi-partiels.

Cliquez pour la solution
t_to_r(
  t = summary(model)$coefficient[2:5,3],
  df_error = 95
)
## r    |        95% CI
## --------------------
## 0.13 | [-0.07, 0.32]
## 0.45 | [ 0.28, 0.58]
## 0.20 | [ 0.00, 0.38]
## 0.14 | [-0.06, 0.32]

Remarquez que, si on fait le calcul des corrélations partiels, on obtient la même valeur :

p_r<-partial.r(data=sex.appeal[,1:5])
# on arrondit à la seconde décimale 
# on ne prend que les corrélations avec la variable dépendante (première ligne)

round(p_r[1,],2) 
##   sex_appeal       charme       humour intelligence     élégance 
##         1.00         0.13         0.45         0.20         0.14

Remarquez aussi comme les corrélations partielles peuvent être considérablement éloignées des vraies corrélations quand la tolérance est faible. Ce problème est moins marqué quand il y a peu de multicolinéarité.

cor(x=sex.appeal[,1:5])[1,]
##   sex_appeal       charme       humour intelligence     élégance 
##    1.0000000    0.8275873    0.8676102    0.5332901   -0.0103704

Interpréter les coefficients de corrélations

Un certain nombre d’auteurs ont proposé des interprétations pour les coefficients de corrélations (Cohen, 1988; Evans, 1996; Funder & Ozer, 2019; Gignac & Szodorai, 2016; Lovakov & Agadullina, 2021 ), qui sont résumées dans le Tableau 1. Si Cohen (1988) est le plus cité, les règles proposées par Gignac (2016) sont justifiées par des données réelles, c’est-à-dire sur la distribution de la magnitude des tailles d’effet dans la littérature.

Interprétation du coefficient de corrélation

Interprétation

Auteurs

Funder and Ozer (2019)

Gignac and Szodorai (2016)

Cohen (1988)

Evans (1996)

Lovakov and Agadullina (2021)

Minuscule

r < .05

Très faible/négligeable

0.05 <= r <0.1

r < 0.1

r <0.1

r < 0.2

r < 0.12

Faible

0.1 <= r <0.2

0.1 <= r <0.2

0.1 <= r < 0.3

0.2 <= r < 0.4

0.12 <= r < 0.24

Moyenne

0.2 <= r < 0.3

0.2 <= r < 0.3

0.3 <= r < 0.5

0.4 <= r < 0.6

0.24 <= r < 0.4

Forte/Large

0.3 <= r < 0.4

r > 0.3

r > 0.5

0.6 <= r < 0.8

r > 0.41

Très forte/Très large

r >= 0.4

r > 0.8

Dans R, on peut obtenir facilement ces interprétations grâce à la fonction interpret_r. Ainsi, pour une corrélation de 0.30, on obtient :

interpret_r( 0.30, rules = "funder2019")
## [1] "large"
## (Rules: funder2019)
interpret_r( 0.30, rules = "gignac2016")
## [1] "large"
## (Rules: gignac2016)
interpret_r(0.30, rules = "cohen1988")
## [1] "moderate"
## (Rules: cohen1988)
interpret_r(0.30, rules = "evans1996")
## [1] "weak"
## (Rules: evans1996)
interpret_r(0.30, rules = "lovakov2021")
## [1] "medium"
## (Rules: lovakov2021)

Les différences de moyennes standardisées

Les t de Student permettent de comparer les moyennes de deux groupes, les moyennes mesurées à deux moments différents d’un groupe ou la moyenne d’un groupe comparé à une norme. Dans le premier cas, on parle de t de Student pour échantillons indépendants, dans le second d’un t de Student pour échantillons appariés et dans le dernier d’un t de Student comparaison à une norme. Nous reviendrons un peu plus loin sur les formules de ces différents t de Student mais nous pouvons dès à présent préciser que l’idée générale du t de Student est de diviser une différence de moyenne par l’erreur-type \(\frac{s}{n}\). Il s’ensuit que cette valeur dépend de la taille d’échantillon et ne peut dès lors pas être utilisée comme taille d’effet.

Il existe deux moyens d’obtenir une taille d’effet standardisée. La première, la plus fréquente et la plus adaptée dans le cadre des métaanalyses est de calculer une différence de moyennes standardisée. La seconde est de calculer la corrélation bisérielle de point (ou la corrélation bisérielle). Nous focaliserons ici sur la différence de moyennes standardisée, bien qu’il soit nécessaire de connaitre la corrélation bisérielle de point pour comprendre comment on peut harmoniser les tailles d’effets, entre des t de Student par exemple et les coefficients de corrélations.

Les différences de moyennes standardisées pour échantillons indépendants

le d de Cohen

Par les différentes mesures de différences de moyennes standardisées, le d de Cohen (1988) est sans doute l’indice le plus connu et le plus cité. Il est obtenu en divisant la différence entre les moyennes par l’écart-type. Remarquez ici la similitude avec le score centré réduit (score z).

\[d=\frac{m_1-m_2}{s} \text{ (4)}\]

où s est est l’écart-type commun aux deux groupes obtenu par la formule (5) :

\[s=\sqrt{\frac{(n_1-1)\times s^2_1 +(n_2-1)\times s^2_2}{n_1+n_2-2}} \text{ (5)}\]

le g de Hedge

Le problème du d de Cohen est que cette mesure est biaisée parce que cette mesure suit une distribution t plutôt qu’une distribution normale. Pour examiner la différence entre les deux distributions, voir l’illustration présentée par l’Animation 1.

Animation 1. Distribution t vs. distribution normale</

Il est important de comprendre que cette distribution t n’est pas forcément centrée (Lin & Aloe, 2020). C’est ce qu’on appelle un paramètre de non centralité . Ce problème de non centralité s’accentue de manière proportionnelle à la différence entre les moyennes : si la vraie différence est 0, la centralité est respectée mais dès qu’elle s’éloigne de 0, ce n’est plus le cas (Lin & Aloe, 2020).

Si l’approximation de Cohen est tout à fait acceptable pour les grands échantillons, des divergences peuvent s’oberver pour de plus petits échantillons, Hedges et Olkin (1985) ont proposé une correction du d de Cohen qui corrige ce biais. Concrètement, on va multiplier le d de Cohen par facteur de correction.

Il est donc préférable d’utiliser le G de Hedge (L. Hedges & Olkin, 1985). La différence principale entre les deux mesures est que le G de Hedge pondère les écart-types regroupés par un coefficient de correction. Une estimation approximative peut être obtenue grâce à la formule (6)2

\[g \approx\frac{m_1-m_2}{s} \times (1- \frac{3}{4 \times (n_1+n_2)-9}) \text{ (6)}\]

le \(\delta\) de Glass

Le \(\delta\) de Glass (L. V. Hedges, 1981) a proposé une petite variante du d de Cohen où l’écart-type utilisé était celui du second groupe (qui doit être compris comme étant le groupe de contrôle). L’idée sous-jacente à son raisonnement est que les méta-analyses sont souvent utilisés dans le contexte d’essais contrôlés randomisés. Le groupe de contrôle doit donc servir de référence de sorte à ce que, si les moyennes sont égales, la taille d’effet ne puisse pas être différente de 0 en raison de variances différences. Cette odée est décrite dans la formule (7).

\[\delta = \frac{m_1-m_2}{s_2} \text{ (7)}\]

Si cet indicateur a le mérite d’exister, il n’est quasiment pas utiliser car l’estimation des variances combinée est plus peécise. C’est pourquoi le g de Hedge doit être privilégié.

Les différences de moyennes standardisées pour échantillons appariés

Lorsque les données sont appariées, les formules décrites ci-dessus ne valent plus car elles ne prennent pas en compte la corrélation entre les deux moments de mesure. Il est donc nécessaire de la modifier. Si on se rappelle que le t de Student pour échantillons appariés est calculé en faisant la moyenne des différences entre les deux temps de mesure, et que cette moyenne des différences est divisé par l’erreur-type des différences, on arrive aisé à comprendre que la formule du d de Cohen devient dans ce cas la formule (8) :

\[d_z = \frac{m_z}{s_z} \text{ (8)}\]

\(d_z\) est la taille d’effet pour un échantillon apparié, \(m_z\) est la moyenne des différences et \(s_z\) est l’écart-type des différences. L’indice z indique que les données sur lesquelles nous travaillons ne sont plus les mesures brutes mais les différences de mesure entre les deux temps.

Cependant, cette formule ne prend pas en compte la corrélation entre les deux temps de mesures. Lorsque cette information n’est pas disponible, nous n’avons pas d’autre choix que d’utiliser la formule (6). En revanche, lorsque l’information est disponible, il est préférable de le prendre en compte, en utilisant la formule (9)

\[d = \frac{\frac{m_1-m_2}{s}}{\sqrt{1-r}} \text{ (9)}\]

où la différence entre les deux moyennes est divisée par l’écart-type combiné des deux groupes et où r représente la corrélation entre les deux temps de mesure.

Obtenir ces différents indicateurs

Á partir des données brutes

Pour illustrer son utilisation, nous utiliserons le jeu de données ‘mtcars’ inclut directement dans R et présenté dans Jeu de données 1.

Nous nous demandons dans quelle mesure le type de transmission (am) change la consommation de carburant (mpg pour miles per gallon). Pour cela nous désirons obtenir le d de Cohen dans un premier temps.

Dans le package ‘effectsize’, la fonction cohens_d permet d’obtenir facilement cette valeur.

require(effectsize) # charge le package effectsize

data(mtcars) # permet de charger le jeu de données 
mtcars$am <- factor(mtcars$am) # transformation de la variable am en facteur
## note : dans le jeu de données présenté ci-dessus, les 0 ont été transformés en 'automatiques'
## et les 1 en manuel. Dans l'absolu, cela ne change rien

cohens_d(mpg ~ am, # on indique qu'on veut prédire la consommation par la type de transmission
         data = mtcars, # on indique le jeu de données sur lequel on veut travailler 
         pooled_sd = T) # on précise si on calcule un écart-type commun (TRUE) ou séparé (FALSE)
## Cohen's d |         95% CI
## --------------------------
## -1.48     | [-2.27, -0.67]
## 
## - Estimated using pooled SD.
# Á titre de comparaison avec des écart-types séparés

cohens_d(mpg ~ am, 
         data = mtcars, 
         pooled_sd = F) # le TRUE a été changé en FALSE
## Cohen's d |         95% CI
## --------------------------
## -1.41     | [-2.26, -0.53]
## 
## - Estimated using un-pooled SD.

Á présent, nous souhaiterions obtenir le g de Hedge. Sans grande surprise, nous pouvons également l’obtenir aisément avec le package ‘effectsize’, grâce à la fonction hedges_g qui s’utilise exactement comme la fonction cohens_d.

hedges_g(mpg ~ am, # on indique qu'on veut prédire la consommation par la type de transmission
         data = mtcars, # on indique le jeu de données sur lequel on veut travailler 
         pooled_sd = T) # on précise si on calcule un écart-type commun (TRUE) ou séparé (FALSE)
## Hedges' g |         95% CI
## --------------------------
## -1.44     | [-2.21, -0.65]
## 
## - Estimated using pooled SD.
# Á titre de comparaison avec des écart-types séparés

hedges_g(mpg ~ am, 
         data = mtcars, 
         pooled_sd = F) # le TRUE a été changé en FALSE
## Hedges' g |         95% CI
## --------------------------
## -1.35     | [-2.17, -0.51]
## 
## - Estimated using un-pooled SD.

Exercice 2

Nous souhaitons comparer le temps nécessaire pour parcourir 1/4 de miles (qsec) pour les moteurs en V par rapport aux moteurs en ligne (variable vs). Calculez le d de Cohen avec une estimation séparée des écart-types. Comparez la valeur au g de Hedge.

Cliquez pour la solution
mtcars$vs<-ifelse(mtcars$vs==0, "Moteur en V", "Moteur en ligne")
    
mtcars$vs<-as.factor(mtcars$vs)

cohens_d(qsec ~ vs, 
         data = mtcars, 
         pooled_sd = F) 
## Cohen's d |       95% CI
## ------------------------
## 2.15      | [1.21, 3.06]
## 
## - Estimated using un-pooled SD.
hedges_g(qsec ~ vs, 
         data = mtcars, 
         pooled_sd = F) 
## Hedges' g |       95% CI
## ------------------------
## 2.08      | [1.17, 2.96]
## 
## - Estimated using un-pooled SD.

Pour les cas où les données sont appariées, on peut obtenir la valeur de la taille d’effet en indiquant l’argumentpaired = T dans la formule. Il faut noter que nous ne pouvons pas utiliser les données en format longIl faut donc les utiliser en format large, en utilisant les arguments ‘x’ et ‘y’ et en indiquant le nom d’un vecteur pour chacun de ces arguments.

Exercice 3

Dans l’exercice suivant, Stefaniak et al. (2008) se sont intéressé aux capacités d’apprentissage implicite. Ils ont utilisé une tâche de temps de réaction sériel. Dans cette tâche, les participants doivent appuyer le plus rapidement possible sur la touche du clavier correspondant à la localisation du stimulus sur l’écran. Á des participants, les stimulis n’apparaissent pas de manière aléatoire mais suivent un séquence. Quelle est la différence de moyennes standardisées entre les blocs 1 et 2. Calculez le d de Cohen et le g de Hedge. Les données sont présentées dans Jeu de données 2.

{{% attachments style="grey" pattern=".*\.csv$" %}}
AI<-read.csv2("AI.csv", sep =";") # on importe les données. Le séparateur des colomnes est le point-virgule. 
str(AI) 
## 'data.frame':    60 obs. of  16 variables:
##  $ TYPE  : chr  "inc" "inc" "inc" "inc" ...
##  $ BLOC1 : chr  "426.5" "395" "343" "474.5" ...
##  $ BLOC2 : chr  "402.5" "369.5" "329" "435.5" ...
##  $ BLOC3 : chr  "410" "334" "293" "430.5" ...
##  $ BLOC4 : chr  "438.5" "372.5" "298" "465" ...
##  $ BLOC5 : chr  "439" "342" "299" "454.5" ...
##  $ BLOC6 : chr  "399.5" "343" "331" "500.5" ...
##  $ BLOC7 : chr  "412" "341.5" "291.5" "420.5" ...
##  $ BLOC8 : chr  "374" "335" "333" "459" ...
##  $ BLOC9 : chr  "432" "336" "310" "413" ...
##  $ BLOC10: chr  "385.5" "324" "272" "486" ...
##  $ BLOC11: chr  "435.5" "325" "305.5" "452" ...
##  $ BLOC12: chr  "416" "314" "275.5" "476" ...
##  $ BLOC13: chr  "484.5" "386.5" "322" "502" ...
##  $ BLOC14: chr  "429.5" "327" "295.5" "535" ...
##  $ BLOC15: chr  "374" "306.5" "276.5" "564.5" ...
  # on remarque que les valeurs dans les blocs sont considérées comme du caractère. On va les transformer en numérique

AI$BLOC1<-as.numeric(AI$BLOC1)
AI$BLOC2<-as.numeric(AI$BLOC2)
Cliquez pour la solution
cohens_d(x=AI$BLOC1, y=AI$BLOC2,
         paired =T) 
## Cohen's d |       95% CI
## ------------------------
## 0.89      | [0.58, 1.18]
hedges_g(x=AI$BLOC1, y=AI$BLOC2, 
         paired =T) 
## Hedges' g |       95% CI
## ------------------------
## 0.87      | [0.58, 1.17]

Á partir des statistiques descriptives

Idéalement, lorsqu’on veut mener une méta-analyse, à défaut d’avoir l’indice directement fourni dans l’article, on souhaite disposer des moyennes et des écart-types pour pouvoir calculer facilement les tailles d’effets. Lorsque cet indice est calculé pour une seule étude, on peut utiliser la fonction escalc du package ‘metafor’ (Viechtbauer, 2010).

Si nous reprenons l’exemple sur le type de transmission que nous avons évoqué plus haut, nous pouvons calculer les moyennes et écart-types de chacun des groupes.

Nous nous demandons dans quelle mesure le type de transmission (am) change la consommation de carburant (mpg pour miles per gallon). Pour cela nous désirons obtenir le d de Cohen dans un premier temps.

Dans le package ‘effectsize’, la fonction cohens_d permet d’obtenir facilement cette valeur.

require("metafor")
tapply(mtcars$mpg, mtcars$am, mean) # permet d'obtenir la moyenne de chaque groupe
##        0        1 
## 17.14737 24.39231
tapply(mtcars$mpg, mtcars$am, sd) # permet d'obtenir l'écart-type de chaque groupe
##        0        1 
## 3.833966 6.166504
table( mtcars$am) # permet d'obtenir le nombre d'observations pour chaque groupe
## 
##  0  1 
## 19 13
escalc(measure = "SMD", # fournit la différence de moyennes standardisées,
       m1i = 17.14737, # moyenne du groupe 1
       m2i= 24.39231, # moyenne du groupe 2
       sd1i = 3.833966, # écart-type du groupe 1
       sd2i =6.166504 ,# écart-type du groupe 
       n1i = 19, # effectif du groupe 1  
       n2i = 13, #effectif du groupe 1  2
       var.name = c("SMD", "erreur-type SMD")
       )
## 
##       SMD erreur.type.SMD 
## 1 -1.4406          0.1620

Remarquez que la valeur obtenue est directement le g de Hedge non biaisé, et que la valeur est identique à celle que nous avions obtenue plus haut.

Exercice 4

Sachant que, dans les données apprentissage implicite, trois groupes ont participé à l’expérimentation : les participants qui n’avaient pas connaissance de la séquence (INC), les participants qui connaissaient la séquence mais pas leurs irrégularités (REG) et les participants qui connaissaient la séquence et la manière dont les irrégularités étaient construites.

Obtenez les indices pertinents et calculer la différence de moyennes standardisée entre le groupe incident et connaissance des régularités de la séquence (mais pas des irrégularités) pour le bloc 12.

Note : n’oubliez pas de transformer la variable bloc 12 en une variable numérique au préalable.

Cliquez pour la solution
AI$BLOC12<-as.numeric(AI$BLOC12)
M<-tapply(AI$BLOC12, AI$TYPE, mean) 
M
##     inc   irreg     reg 
## 368.650 341.825 377.325
S<-tapply( AI$BLOC12, AI$TYPE, sd) 
S
##      inc    irreg      reg 
## 60.06490 48.58695 51.59872
T1<-table( AI$TYPE) 
T1
## 
##   inc irreg   reg 
##    20    20    20
escalc(measure = "SMD", # fournit la différence de moyennes standardisées,
       m1i = M[1], # moyenne du groupe 1
       m2i= M[3], # moyenne du groupe 2
       sd1i = S[1], # écart-type du groupe 1
       sd2i =S[3] ,# écart-type du groupe 
       n1i = T1[1], # effectif du groupe 1  
       n2i = T1[3], #effectif du groupe 1  2
       var.name = c("SMD", "erreur-type SMD")
       )
## 
##       SMD erreur.type.SMD 
## 1 -0.1519          0.1003

Dans les exemples que nous venons d’utiliser, on a utiliser la fonction lorsqu’une seule valeur était présente. Cependant, on peut sans souci le faire pour plusieurs études de manière simultanées. C’est le cas dans l’exemple ci-dessous pour des données permettant de faire une méta-analyse. L’objectif de l’étude était de déterminer la durée à l’hôpital en comparant des personnes ayant été hospitalisées en soins intensifs ou en unité non spécialisée. Les données de Normand (1999) sont présentées dans Jeu de données 3.

On utilise le nom des variables dans la base de données pour indiquer où se trouve l’information (voir Jeu de données 4).

dat1 <- escalc(measure="SMD", m1i=m1i, sd1i=sd1i, n1i=n1i,
                              m2i=m2i, sd2i=sd2i, n2i=n2i, data=dat.normand1999,
               var.name = c("SMD", "erreur-type SMD")

       )

titre<-"Jeu de données Normand 1999 avec les tailles d'effets intégrées."
  caption<-paste0("Jeu de données", donnees, ". ", titre)
datatable(dat1, caption=caption, rownames =F)

Á partir de la valeur du t

Bien que l’APA recommande de fournir les tailles d’effet et les statistiques descriptives, il est très fréquent que ces informations soient manquantes dans les articles. Fort heureusement, il est possible d’obtenir les tailles d’effet à partir de la valeur de la statistique à la condition de connaitre les degrés de liberté et/ou la taille de l’échantillon.

En effet, si on se rappelle que le t de Student est obtenu par la formule (10)

\[t=\frac{m_1-m_2}{s_p \times \sqrt{\frac{1}{n_1}+\frac{1}{n_2}}} \text{ (10)}\]

où est l’écart-type combiné dont la formule est présentée dans la section intitulée le d de Cohen. On comprend donc qu’en multipliant la valeur du t par (11) \[\sqrt{\frac{1}{n_1}+\frac{1}{n_2}} \text(11)\]

On obtient une bonne approximation de la valeur à partir des degrés de liberté (pour rappel, ils valent \(n_1+n_2-2\)) grâce à la formule suivante :

\[\sqrt{\frac{1}{n_1}+\frac{1}{n_2}} \approx 2 \times \sqrt{\frac{1}{ddl}} \text(12)\]

Il est à noter que cette formule vaut pour les t de Student pour échantillons indépendants. En revanche, comme on travaille sur les différences entre les deux temps pour le t de Student pour échantillons appariés, la formule devient :

\[\sqrt{\frac{1}{n_z}} \approx \sqrt{\frac{1}{ddl}} \text(13)\]\(n_z\) est le nombre de participants qui ont pris part à l’étude (ou de manière plus générale le nombre d’observations indépendantes)

Il n’est évidemment pas nécessaire de calculer cette valeur manuellement. On l’obtient grâce à la fonction t_to_d.

Reprenons l’exemple sur la consommation de carburant en fonction du type de transmission. Dans un article, nous aurions pu avoir uniquement la valeur du t avec les degrés de liberté.

Nous allons commencer par calculer ces indicateurs.

t.out<-t.test(mpg~am, data=mtcars, var.equal=T)
t.out
## 
##  Two Sample t-test
## 
## data:  mpg by am
## t = -4.1061, df = 30, p-value = 0.000285
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  -10.84837  -3.64151
## sample estimates:
## mean in group 0 mean in group 1 
##        17.14737        24.39231

Ma valeur du t est de -4.106127 et les degrés de liberté valent 30

t_to_d(t=4.1061, df_error=30, paired = FALSE, ci = 0.95, alternative = "two.sided")
## d    |       95% CI
## -------------------
## 1.50 | [0.68, 2.30]

On remarque que la taille d’effet est légèrement surestimée par rapport au 1.48 calculé initialement mais l’approximation est acceptable. En revanche, si on a les tailles d’échantillon de chacun des groupes, on obtient la même valeur que précédemment

table(mtcars$am) # obtient le nombre d'observations dans chaque groupe
## 
##  0  1 
## 19 13

En appliquant la formule vue précédemment, on obtient :

4.1061*sqrt(1/19+1/13)
## [1] 1.477937

Pour conclure cette méthode est particulièrement utile dans le cadre des modèles linéaires (ou régressions), des analyses de variances et des modèles linéaires mixtes.

Á partir d’une analyse de variance

Lorsque l’analyse réalisée était uen analyse de variance, il est également possible d’obtenir des tailles d’effets équivalentes au d de Cohen (1988) et au g de Hedge [-Hedges1985].

Il existe néanmoins différentes alternatives qui dépendent de l’objectif et des informations qui sont disponibles.

Obtenir une taille d’effet global

La première alternative consite à avoir une taille d’effet global. Pour le formuler autrement, la question qui se pose est de savoir que la différence standardisée moyenne entre les différentes conditions. Cette valeur est obtenue par la formule (14)

\[\psi = \sqrt{\frac{1}{k-1} \sum_{j=1}^{k}(\frac{\mu_j-\mu}{\sigma})^2} \text(14)\] où k est le nombre de groupes dans la comparaison, \(\sigma\) est l’écart-type global, \(\mu_j\) est la moyenne des groupes et \(\mu\) est la grande moyenne.

Il est important de noter que l’écart-type n’est pas toujours fourni mais comme le carré moyen de l’erreur (CMe en français et MSE en anglais) est une bonne estimation de la variance, on peut en faire la racine carrée pour obtenir la valeur souhaitée.

Obtenir une taille d’effet à partir du F

Dans un certain nombre de cas, il n’y a que deux modalités qui sont impliquées.

Par exemple, dans la célèbre expérience de Baddeley (Godden & Baddeley, 1975) où des plongeurs doivent apprendre une liste de mots au bord d’une piscine ou au fond de la piscine et rappeler cette liste de mots, soit au bord, soit au fond, il y a deux variables ayant chacune deux modalités. L’utilisation de l’analyse de variance se justifie par le faire que cela permet d’explorer l’effet d’interaction.

Une autre situation classique est la situation où on a réalisé des contrastes. Les contrastes comparents deux situations.La statistique du contraste peut être une valeur t ou un F. Nous avons déjà vu comment obtenir un d à partir du t. Nous focaliserons à présent sur la manière de l’obtenir à partir du F.

Pour obtenir le d de Cohen (1988), il faut savoir que la valeur du F est le carré de la valeur du t, il devient alors très facile d’obtenir le t, et donc la valeur du d de Cohen grâce à la formule (15).

\[d = \sqrt{F} \times 2 \times \sqrt{\frac{1}{ddl_{erreur}}} \text{(15)} \]

Reprenons l’exemple sur la consommation de carburant en fonction du type de transmission. Nous allons commencer par faire une analyse de variance à la place du t de Student pour échantillons indépendants.

aov.out<-aov(mpg~am, data=mtcars, var.equal=T)
anova.table<-anova(aov.out)
anova.table  
## Analysis of Variance Table
## 
## Response: mpg
##           Df Sum Sq Mean Sq F value   Pr(>F)    
## am         1 405.15  405.15   16.86 0.000285 ***
## Residuals 30 720.90   24.03                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Si nous reprenons la valeur du F et que nous en faisons la racine carrée, on obtient exactement la même valeur que la valeur du t.

sqrt(anova.table$`F value`  )
## [1] 4.106127       NA
t.test(mpg~am, data=mtcars, var.equal=T)
## 
##  Two Sample t-test
## 
## data:  mpg by am
## t = -4.1061, df = 30, p-value = 0.000285
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  -10.84837  -3.64151
## sample estimates:
## mean in group 0 mean in group 1 
##        17.14737        24.39231

On peut donc à présent obtenir la valeur du d :

sqrt(anova.table$`F value`[1]  )*2*sqrt(1/anova.table$Df[2])
## [1] 1.499346

ce qui nous permet d’obtenir exactement la même valeur que précédemment.

Il est à noter qu’il n’existe pas, à ma connaisance, de fonction qui permet d’obtenir directement la d de Cohen (1988) à partir du F.

Exercice 5

Dans la base de données Apprentissage implicite, voici la table de l’ANOVA pour une analyse comparant les différents groupes sur le bloc 1.

## Analysis of Variance Table
## 
## Response: BLOC1
##           Df     Sum Sq   Mean Sq F value  Pr(>F)
## TYPE       2   2087.575 1043.7875 0.38796 0.68022
## Residuals 57 153357.137 2690.4761

Par ailleurs, voici les comparaisons 2 à 2 entre les groupes.

##     contraste             t
## 1 inc - irreg  0.2210005945
## 2   inc - reg -0.6279465168
## 3 irreg - reg -0.8489471113

Ainsi que les moyennes de chacun des groupes

##     inc   irreg     reg 
## 398.500 394.875 408.800

Pour rappel, il y a 20 participants par groupe.

Calculez la taille d’effet global, ainsi que les tailles d’effet pour les différents contrastes à partir de la valeur du t. Comparez ces valeurs avec celles que vous obtenez à partir des moyennes et écart-types.

\[\psi = \sqrt{\frac{1}{k-1} \sum_{j=1}^{k}(\frac{\mu_j-\mu}{\sigma})^2} \text(16)\]

Cliquez pour la solution
# on calcule la grande moyenne
GM<-(398.500*20+ 394.875*20 +408.800*20)/60
psi<-sqrt(1/(3-1) * (((398.500-GM)/sqrt(2690.5))^2+((394.875-GM)/sqrt(2690.5))^2 +((408.800 - GM)/sqrt(2690.5))^2 ))
psi
## [1] 0.1392754434
t_to_d(t=c(.221, .628, .849), df_error=57, paired = FALSE, ci = 0.95, alternative = "two.sided")
## d    |        95% CI
## --------------------
## 0.06 | [-0.46, 0.58]
## 0.17 | [-0.35, 0.69]
## 0.22 | [-0.30, 0.74]
M<-tapply(AI$BLOC1, AI$TYPE, mean) 
S<-tapply(AI$BLOC1, AI$TYPE, sd) 

escalc(measure = "SMD", # fournit la différence de moyennes standardisées,
       m1i = M[1], # moyenne du groupe inc
       m2i= M[2], # moyenne du groupe reg
       sd1i = S[1], # écart-type du groupe 1
       sd2i =S[2] ,# écart-type du groupe 
       n1i = 20, # effectif du groupe 1  
       n2i = 20, #effectif du groupe 1  2
       var.name = c("SMD", "erreur-type SMD")
       )
## 
##      SMD erreur.type.SMD 
## 1 0.0755          0.1001
escalc(measure = "SMD", # fournit la différence de moyennes standardisées,
       m1i = M[1], # moyenne du groupe inc
       m2i= M[3], # moyenne du groupe reg
       sd1i = S[1], # écart-type du groupe 1
       sd2i =S[3] ,# écart-type du groupe 
       n1i = 20, # effectif du groupe 1  
       n2i = 20, #effectif du groupe 1  2
       var.name = c("SMD", "erreur-type SMD")
       )
## 
##       SMD erreur.type.SMD 
## 1 -0.1879          0.1004
escalc(measure = "SMD", # fournit la différence de moyennes standardisées,
       m1i = M[2], # moyenne du groupe inc
       m2i= M[3], # moyenne du groupe reg
       sd1i = S[2], # écart-type du groupe 1
       sd2i =S[3] ,# écart-type du groupe 
       n1i = 20, # effectif du groupe 1  
       n2i = 20, #effectif du groupe 1  2
       var.name = c("SMD", "erreur-type SMD")
       )    
## 
##       SMD erreur.type.SMD 
## 1 -0.2504          0.1008

Notez que ces valeurs sont des approximations et qu’il est possible d’obtenir les valeurs précises quand vous faites les analyses de la manière suivante :

aov.out<-aov(BLOC1~TYPE, data=AI, var.equal=T)
anova.table<-anova(aov.out)
anova.table  
## Analysis of Variance Table
## 
## Response: BLOC1
##           Df     Sum Sq   Mean Sq F value  Pr(>F)
## TYPE       2   2087.575 1043.7875 0.38796 0.68022
## Residuals 57 153357.137 2690.4761
require(emmeans)
em.out<-emmeans(aov.out,~TYPE)
p.out<-pairs(em.out)
p.out
##  contrast    estimate   SE df t.ratio p.value
##  inc - irreg     3.62 16.4 57   0.221  0.9734
##  inc - reg     -10.30 16.4 57  -0.628  0.8054
##  irreg - reg   -13.93 16.4 57  -0.849  0.6744
## 
## P value adjustment: tukey method for comparing a family of 3 estimates
eff_size(em.out, sigma = sigma(aov.out), edf = df.residual(aov.out))
##  contrast    effect.size    SE df lower.CL upper.CL
##  inc - irreg      0.0699 0.316 57   -0.563    0.703
##  inc - reg       -0.1986 0.317 57   -0.833    0.436
##  irreg - reg     -0.2685 0.317 57   -0.904    0.367
## 
## sigma used for effect sizes: 51.87 
## Confidence level used: 0.95

Obtenir une taille d’effet à partir d’une probabilité

Bien qu’il faille être très prudent lorsqu’on essaie d’estimer une taille d’effet à partir d’une probabilité car, pour environ la moitié des articles publiés en psychologie, il y a au moins une valeur de la probabilité reportée qui ne correspond pas à la valeur de la statistique (Nuijten et al., 2015), il est néanmoins possible de retrouver la taille d’effet à partir d’une probabilité si nous avons les degrés de liberté ou, à défaut, la taille d’échantillon.

L’idée est que la probabilité d’une valeur t dépend à la fois de la valeur du t et des degrés de liberté. Il est possible de récupérer la valeur du t si on a la probabilité et les degrés de liberté grâce à la fonction qt si et seulement nous avons à notre disposition la probabilité exacte.

Si nous reprenons l’exemple de la consommation de carburant en fonction du type de transmission, la valeur du t était -4.1061269831, la valeur de la probabilité était 0.0002850207 et les degrés de liberté étaient 30

Il faut se rappeler que, dans la plupart des situations, nous travaillons de manière bilatérale. Cela signifie que la probabilité de dépassement (les zones en bleu dans la Figure 1). Cela signifie que la probabilité qu’on obtient est la somme des deux zones bleues. Pour obtenir la valeur de la statistique, il faut donc diviser cette probabiité par 2.

Représentation graphique de la probabilité de dépassement à un seul alpha de 0,05. On rejete l'hypothèse nulle dans la zone bleue.

Représentation graphique de la probabilité de dépassement à un seul alpha de 0,05. On rejete l’hypothèse nulle dans la zone bleue.

Ainsi, on obtient la valeur du t de la manière suivante.

qt(0.000285/2, 30)
## [1] -4.106153327

Á partir d’ici, la procédure est la même que celle décrite précédemment.

Interpréter les coefficients de corrélations

De même qu’Un certain nombre d’auteurs ont proposé des interprétations pour les coefficients de corrélations (Cohen, 1988; Evans, 1996; Funder & Ozer, 2019; Gignac & Szodorai, 2016; Lovakov & Agadullina, 2021 ), plusieurs auteurs ont proposé des balises pour interpréter les différences de moyennes standardisées (Cohen, 1988; Gignac & Szodorai, 2016; Lovakov & Agadullina, 2021; Sawilowsky, 2009). Ces interprétations sont résumées dans le Tableau 2.

Nous pouvons réitérer la même remarque que celle que nous avons faite précédemment : si Cohen (1988) est le plus cité, les règles proposées par Gignac (2016) sont justifiées par des données réelles, c’est-à-dire sur la distribution de la magnitude des tailles d’effet dans la littérature.

Interprétation des différences de moyennes standardisées

Interprétation

Auteurs

Cohen (1988)

Gignac and Szodorai (2016)

Sawilowski (2009)

Lovakov and Agadullina (2021)

Minuscule

d <0.1

Très petite

d < .2

d < 0.2

0.1 <= d < 0.2

d < 0.15

Petite

0.2 <= d <0.5

0.2 <= d <0.41

0.2 <= d < 0.5

0.15 <= d < 0.36

Moyenne

0.5 <= d <0.8

0.41 <= d < 0.63

0.5 <= d < 0.8

0.36 <= d < 0.65

Grande

d > 0.8

d > 0.63

0.8 <= d < 1.2

d > 0.65

Très grande

1.2 <= d < 2

Énorme

d>= 2

Dans R, on peut obtenir facilement ces interprétations grâce à les fonctions interpret_cohens_d, interpret_hedges_g, et interpret_glass_delta. Ainsi, pour une corrélation de 0.30, on obtient :

interpret_cohens_d( 0.30, rules = "cohen1988")
## [1] "small"
## (Rules: cohen1988)
interpret_hedges_g( 0.30, rules = "gignac2016")
## [1] "small"
## (Rules: gignac2016)
interpret_glass_delta(0.30, rules = "sawilowsky2009")
## [1] "small"
## (Rules: sawilowsky2009)
interpret_cohens_d(0.30, rules = "lovakov2021")
## [1] "small"
## (Rules: lovakov2021)

Les tailles d’effets pour les variables qualitatives.

Pour les données qualitatives, il existe également deux types de tailles d’effet :

  1. Le \(\phi\) de Cramér (ou le V pour les tables plus grandes) est sorte de corrélation entre deux variables qualitatives ;
  2. Le rapport de cote, plus connu sous son appelation anglophone l’Odd Ratio.

La valeur du V de Cramer (qui n’est qu’une extension du \(\phi\)) peut être obtenue à partir de la formule (17)

\[V_{Cramér} = \sqrt{\frac{\frac{\chi^2}{n}}{min(k-1, r-1)}} \text{ (17)}\]

où le \(\chi^2\) est la valeur du \(\chi2\), n est la taille d’échantillon, k est le nombre de colonnes dans le tableau de contingence et r est le nombre de lignes dans le tableau de contingence. On divise donc par la plus petite valeur entre le nombre de ligne moins 1 et le nombre de colonne moins 1.

Nous reviendrons sur cet indice quand nous reviendrons sur l’harmonisation des tailles d’effet. Dans le cas des méta-analyses, il est plus fréquent d’utiliser le rapport de cotes.

Pour illustrer son calcul,, imaginons une situation où on s’intéresse au fait de savoir si fumer est associé à un plus grand risque de cancer. Nous allons dénoter le fait d’avoir un cancer par la valeur 1 et ne pas l’avoir par la valeur 0. De même, nous allons noter le fait de fumer par la valeur 1 et le fait dd’être on fumeur par la valeur 0. De manière plus générale, le facteur de risque et la présence de la mesure d’intérêt ont une valeur 1 et leur absence a une valeur 0. Ces données peuvent prendre la forme de la Table 3.

Risque de cancer en fonction du statut de fumeur

Développement d'un cancer

Facteur de risque

Cancer (1)

Pas de Cancer (0)

Fumeur (1)

11

01

Non fumeur (0)

01

00

On obtient le rapport de cotes, que nous désignons pas son acronyme anglais ‘OR’ pour odd ratio, par la formule (18)3.

\[OR = \frac{11 \times 00}{10 \times 01} \text{ (18)}\]

Concrètement, si notre table avait comme valeurs celles présentées en Table 4 (les données sont factices).

Données fictives du risque de cancer en fonction du statut de fumeur

Développement d'un cancer

Facteur de risque

Cancer (1)

Pas de Cancer (0)

Fumeur (1)

110

975

Non fumeur (0)

25

1,825

On obtient l’OR de la manière suivante :

\[OR = \frac{110 \times 1825}{25 \times 975}= 8.24 \]

Ceci signifie que fumer augmente de 8.24 le risque de développer un cancer.

Un autre intérêt des OR est qu’il s’agit d’indicateurs qui sont fournit dans toute une série d’analyses, comme les régressions logistiques ou les analyses de survie.

On peut obtenir aisément l’OR dans ratio dans R avec la fonction oddsratio du package “effectsize” (Ben-Shachar et al., 2020)

T1<-array(c(110, 25,975, 1825), c(2,2))
T1
##      [,1] [,2]
## [1,]  110  975
## [2,]   25 1825
effectsize::oddsratio(x= T1)
## Odds ratio |        95% CI
## --------------------------
## 8.24       | [5.30, 12.80]

Le rapport de cotes pour des tables plus grandes

Dans le cas que nous venons de présenter, le tableau était assez simple puisqu’il s’agissait d’un tableau \(2 \times 2\). Cependant, il arrive fréquemment que les tableaux soient plus grands. La logique pour obtenir le rapport de cotes est assez similaire. Le point critique est d’établir la ligne de base.

Par exemple, si on veut le rapport de cotes dans une étude où les auteurs se sont demandés si le risque de développer une cirrhose dépend du fait de consommer de l’alcool ou d’en consommer au minimum 4 verres par jour. On pourrait obtenir le Tableau 5 (les données sont factices).

Risque de développer une cirrhose en fonction de la consommation d'alcool

Développement d'une cirrhose

Facteur de risque

Cirrhose (1)

Pas de cirrhose (0)

Pas d'alcool

250

4,500

<4 verres par jour

350

25,750

>4 verres par jour

918

6,322

Dans notre exemple, la première question qu’il faut se poser est de savoir quel est le niveau qui représente la ligne de base. Est-ce qu’il s’agit d’une absence de consommation d’alcool ou est-ce que c’est une consommation modérée d’alcool ? Naturellement, on pourrait penser que la ligne de base serait l’absence de consommation d’alcool, mais dans cet exemple (fictif), on se rend compte que les personnes qui n’en consomme jamais sont moins nombreuses que celles qui en consomment modérément. Il pourrait donc être légitime de considérer ce niveau de la variable comme étant notre ligne de base et d’essayer de savoir si ne pas consommer représente un facteur de protection contre le fait de développer une cirrhose. Dans ce cas, nous aurions deux comparaisons :

  1. l’effet dun consommation excessive par rapport à une consommation modérée ;
  2. l’effet d’un absence de consommation par rapport à une consommation modérée.

Calculons l’effet d’un consommation excessive :

\[OR = \frac{918 \times 25750}{350 \times 6322} = 10.683 \]

Nous avons donc 10.6831020925 plus de chances de développer une cirrhose si nous avons consommé de l’alcool de manière excessive.

Nous pouvons à présent calculer l’OR pour l’effet protecteur que pourrait avoir l’absence totale de consommation d’alcool. \[OR = \frac{250\times 25750}{918 \times 4500} = 4.087 \]

D’après ces données (fictives), les personnes qui ne consomment absolument pas d’alcool aurait donc 4.0873015873 de développer une cirrhose

Il n’est à nouveau pas nécessaire de calculer à la main ces valeurs. Plusieurs packages ont des fonctions qui calculent les OR, notamment le package ‘epitools’ (Aragon, 2020) avec la fonction oddsratio. Notez que la fonction s’appelle de manière identique à celle de ‘effectsize’. Pour être sûr d’utiliser la bonne fonction, on peut faire précéder le nom de la fonction par le nom du package suivi de deux fois deux points (voir l’exemple).

Nous allons commencer par créer le jeu de données :

T1<- array(c(250, 350, 918, 4500, 25750,6322), c(3,2)) 
dimnames(T1)<-list(c("1. pas d'alcool", "0. Consommation modérée", "2. Consommation excessive"),
                   c("Cirrhose","Pas de cirrhose" ))

T1
##                           Cirrhose Pas de cirrhose
## 1. pas d'alcool                250            4500
## 0. Consommation modérée        350           25750
## 2. Consommation excessive      918            6322

Le problème auquel on est confronté est que la fonction oddsratio requiert que le niveau de base soit sur la première ligne et la première colonne. On va donc réarranger les lignes et les colonnes.

T1<-T1[ order(c(2,1,3)), order(c(2,1))]
T1
##                           Pas de cirrhose Cirrhose
## 0. Consommation modérée             25750      350
## 1. pas d'alcool                      4500      250
## 2. Consommation excessive            6322      918

Nous pouvons à présent calculer l’OR.

require(epitools)
epitools::oddsratio(T1)$measure
##                            NA
## odds ratio with 95% C.I.        estimate       lower        upper
##   0. Consommation modérée    1.000000000          NA           NA
##   1. pas d'alcool            4.087770576 3.461790198  4.820036484
##   2. Consommation excessive 10.679041290 9.422845316 12.131936089

Rapport de cotes et risques relatifs

D’un point de vue statistique, un risque renvoie à la probabilité de survenue d’un événement, ce qui signifie que le risque est la chance que ce qui nous intéresse survienne sur l’ensemble des cas de figures. La cote renvoie à la probabilité qu’un événement survienne sur la probabilité qu’il ne survienne pas. Dans de nombreuses situations, il y a une confusion entre une cote et un risque. Le rapport renvoie quant à lui de la probabilité qu’un événement survienne divisé par le probabilité que cet événement ne survienne pas (Ranganathan et al., 2015).

Si nous reprenons les données du tableau 5:

T1<-array(c(1825,975,25,110  ), c(2,2))
dimnames(T1)<-list(c("Non Fumeur", "Fumeur"), c("Pas de cancer", "Cancer"))
addmargins(T1)
##            Pas de cancer Cancer  Sum
## Non Fumeur          1825     25 1850
## Fumeur               975    110 1085
## Sum                 2800    135 2935

Le risque de développer un cancer est de 135/2935= 0.046 tandis que la cote entre les personnes qui ont un cancer par rapport à celles qui n’en ont pas est de 135/2800 = 0.048. On peut calculer ces risques et rapports par ligne.

Ces deux probabilités sont relativement proches lorsque le risque que l’événement survienne est faible. Généralement, on considère que le risque est fiable s’il est inférieur à 10% (Sedgwick, 2014).

Le risque relatif est le ratio entre le risque qu’un événement survienne dans un groupe comparativement à l’autre groupe tandis que l’OR est le rapport de la cote d’un événement d’un groupe par rapport à la cote de cet événement dans l’autre groupe.

Le risque relatif est donc calculé de la manière suivante : \[RR =\frac{p_{(cancer/fumeur)}}{p_{(cancer/non fumeur)}} =\frac{\frac{110}{(110+975)}}{\frac{25}{(25+1825)}} = 7.502\]

Si les valeurs sont relativement proches quand l’association est faible et quand le phénomène est peu fréquent, l’écart entre les deux peut considérablement augmenter dès lors que l’association entre les deux variables augmente Dans notre exemple, la probabilité du phénomène est faible et l’association est forte, ce qui explique que l’OR vaut 8.236et le RR vaut 7.502.

Le risque relatif doit être utilisé lorsque nous avons le nombre total de personnes à risques. Ainsi, dans les études rétrospectives, où cette information est manquante, on ne peut pas le calculer. Á l’inverse, l’OR peut toujours être calculé.

Si nous disposons du risque à la ligne de base, il est possible de convertir le risque relatif en OR grâce à la formule 19(Grant, 2014)

\[OR = \frac{RR \times(1-p_0)}{(1-(RR \times p_0))} \text{ (19)}\] où p_0 est la ligne de base, c’est-à-dire la probabilité de survenue du phénomène d’intérêt en l’absence total de traitement/facteur de risque/intervention. Dans notre exemple, 25 non fumeurs parmi les 1850 ont développé un cancer, ce qui signifie que la probabilité de développer un cancer chez les non fumeurs est de 0.014

On obtient facilement cette valeur grâce à la fonction riskratio_to_oddsratio.

riskratio_to_oddsratio(RR=7.5, p0=0.01369863)
## [1] 8.244274801

Obtenir le rapport de cotes à partir des coefficients de régression logistiques

Il peut parfois arriver que les chercheurs fournissent les coefficients de la régression logistique mais ne fournissent pas l’OR. Sachant que le coefficient de régression est le logarithme de l’OR4, il suffit de faire l’exponentiel du coefficient de régression pour obtenir l’OR. Si nous reprenons notre exemple initial, nous aurions pu faire une régression logistique à la place d’un \(\chi^2\) d’indéepndance. Cela aurait donné les résultats suivants :

df<-data.frame(Cancer = c(rep(1,135), rep(0, 975+1825)), # crée la variable a (1) ou non (0) un cancer
              Fumeur = c(rep(1, 110), rep(0,25), rep(1,975), rep(0,1825)))# crée la variable est (1) ou non (0) fumeur

out<-glm(Cancer~Fumeur, data=df, family="binomial") # réalise la régression logistique
summary(out) # permet d'obtenir les résultats de la régression logistique, en particulier les coefficients de régression
## 
## Call:
## glm(formula = Cancer ~ Fumeur, family = "binomial", data = df)
## 
## Coefficients:
##               Estimate Std. Error   z value               Pr(>|z|)    
## (Intercept) -4.2904594  0.2013651 -21.30687 < 0.000000000000000222 ***
## Fumeur       2.1085023  0.2250877   9.36747 < 0.000000000000000222 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1095.07375  on 2934  degrees of freedom
## Residual deviance:  976.86266  on 2933  degrees of freedom
## AIC: 980.86266
## 
## Number of Fisher Scoring iterations: 7
 exp( 2.1085) # on obtient sensiblement la même valeur d'OR que précédemment
## [1] 8.235878197

Interpréter les rapports de cotes

Pour les rapport de cotes, on peut s’appuyer sur deux logiques pour interpréter leur valeur. La première, la plus simple, est de s’appuyer sur les heuristiques proposées par les auteurs (Chen et al., 2010). Une autre manière est de s’appuyer sur les règles qui valent pour les autres mesures, en particulier les différences de moyennes standardisées. En effet, il est possible de transformer aisément un OR en d grâce à la formule (20) (Borenstein et al., 2009) :

\[d = log(OR) \times \frac{\sqrt{3}}{\pi} \]

Ces deux types d’interprétations sont résumées dans le Tableau 6.

Interprétation des rapports de cotes

Interprétation

Auteurs

Cohen (1988)

Chen (2010)

Très petite

1 <= OR < 1.44

1 <= OR < 1.68

Petite

1.44 <= OR < 2.48

1.68 <= OR < 3.47

Moyenne

2.48 <= OR < 4.27

3.47 <= OR < 6.71

Grande

OR > 4.27

OR > 6.71

Dans R, on peut obtenir facilement ces interprétations grâce à la fonction interpret_oddsratio. Ainsi, pour une corrélation de 0.30, on obtient :

interpret_oddsratio( 3, rules = "cohen1988")
## [1] "medium"
## (Rules: cohen1988)
interpret_oddsratio( 3, rules = "chen2010")
## [1] "small"
## (Rules: chen2010)

Il faut noter que, lorsque l’OR a une valeur inférieur à 1, l’interprétation est réversible. Si nous reprenons l’exemple sur le risque de développer un cancer quand on fume. Nous avions 8.24 plus de chances de développer un cancer lorsqu’on fume. Cependant, si le codage avait été inversé, nous aurions obtenu un OR de 0.1214. Cela signifie donc que nous avons 8.24 moins de chance de développer un cancer quand on est non fumeur.

\[OR = \frac{25 \times 975}{110 \times 1825}= 0.1214 \] Ceci souligne deux points :

  1. il faut être attentif quand on utilise un logiciel de statistiques à la manière dont les OR ont été calculés. En cas de doute, le plus simple est de faire un tableau \(2 \times 2\), de calculer l’OR à la main et de vérifier ce que le logiciel a fait.

  2. Les interprétations dans le Tableau 6 ont une réciproque qui est présentée dans le Tableau7

Interprétation de la réciproque des rapports de cotes

Interprétation

Auteurs

Cohen (1988)

Chen (2010)

Très petite

1 >= OR > 0.6944

1 >= OR > 0.5952

Petite

0.6944 >= OR > 0.4032

0.5952 >= OR > 0.2882

Moyenne

0.4032 >= OR > 0.2342

0.2882 >= OR > 0.149

Grande

OR < 0.2342

OR < 0.149

Homogénéiser les tailles d’effet

Transformer les tailles d’effet en coefficient de corrélation

Obtenir le coefficient de corrélation à partir d’un d de Cohen

Nous pouvons obtenir un coefficient de corrélation à partir d’un de Cohen grâce l’équation (21) (Borenstein et al., 2009, pp. 48–49) :

\[r =\frac{d}{\sqrt{d^2+a}}\text{ (21)}\]

où a est un facteur de correction qui vaut (22) :

\[a =\frac{(n_1+n_2)^2}{n_1 \times n_2} \text{ (22)}\]

Si les tailles d’échantillons sont égales, alors a = 4. Le package ‘effectsize’ (Ben-Shachar et al., 2020) applique cette logique. L’estimation sera relativement correcte tant que les deux échantillons sont approximativement de même taille mais, en cas d’échantillons de tailles différentes, il est préférable de faire le calcul à la main avec la formule précédente.

\[r \approx \frac {d}{\sqrt{d^2+4}}\text{ (23)}\]

Encore une fois, R fournit la fonction qui fait la conversion pour vous grâce à la fonction d_to_r du package ‘effectsize’ (Ben-Shachar et al., 2020).Dans l’exemple sur la consommation de carburant en fonction du type de transmission, la taille d’effet était de 1.48. Dans ce cas, la corrélation vaut :

Obtenir le coefficient de corrélation à partir du coefficient de régression

S’il est possible d’obtenir le coefficient de corrélation à partir de la valeur du t (voir la section sur Obtenir le coefficient de corrélation à partir du t), nous allons aborder une autre méthode ici : évaluer le coefficient de corrélation à partir du coefficient de régression.

Il est très fréquent que les régressions soient présentées sous la forme d’un tableau dans lequel on a les coefficients de la droite de régression, avec la probabilité mais sans la valeur du t. Dans cette situation, il est encore possible d’obtenir le coefficient de corrélation.

La valeur du t correspond au rapport entre les coefficient de régression et son erreur-type (voir équation 24)

\[t=\frac{b}{se} \text{ (24)}\]

Il faut donc pouvoir retrouver l’erreur-type. En l’absence de suspicion de multicolinéarité (c’est-à-dire de fortes corrélations entre les variables indépendantes), on peut avoir une approximation relativement précise des valeurs grâce à la formule (25):

\[se\approx\sqrt{\frac{1-R^2}{ddl_{résiduels}}} \times \frac{s_y}{s_x} \text{ (25)}\]

En revanche, s’il y a de multicolinéarité, il est nécessaire d’avoir la valeur de la tolérance. Dans ce cas, la formule devient (26):

\[se=\sqrt{\frac{1-R^2}{Tolérance \times ddl_{résiduels}}} \times \frac{s_y}{s_x} \text{ (26)}\]

Á partir de là, on peut obtenir le t est donc le coefficient de corrélation partiel, comme évoqué précédemment.

Il est à noter que dans le cas particulier de prédicteurs catégoriels (et uniquement des prédicteurs catégoriels), on peut plus facilement la valeur du r en pasant par l’obtention d’un \(d_{partiel}\) de Cohen.

Pour obtenir le d partiel, il faut connaître l’erreur résiduelle, c’est-à-dire le carré moyen de l’erreur du modèle global. Dans ce cas, la formule (27) permet d’obtenir le \(d_{partiel}\) :

\[d_{partiel} = \frac{\text{coefficient de régression}}{\sqrt{\text{Variance résiduelle}}} \text{ (27)}\]

La variance résiduelle est parfois appelée carré moyen de l’erreur, et sa racine carrée l’erreur-standard résiduelle (\(ES_{résiduelle}\)).

Il peut arriver que cette dernière information ne soit pas disponible. Il est néanmoins possible de l’estimer de manière relativement fiable si le \(R^2\) du modèle global et l’écart-type (ou la variance) de la variable dépendante sont fournis. En effet, la variance résiduelle correspond au pourcentage de variance de la variable dépendante qui n’est pas expliqué. Puisque le \(R^2\) est le pourcentage de variance expliqué par le modèle, \(1-R^2\) est le pourcentage de variance résiduelle. On peut donc obtenir l’erreur standard résiduelle grâce à la formule (28) :

\[ES_{résiduelle}= \sqrt{s^2_{vd}\times(1-R^2)}\text{ (28)}\]

\(ES_{résiduelle}\) est l’erreur standard résiduelle, \(s_{vd}\) est l’écart-type de la variable dépendante et R² est le pourcentage de variance expliquée par le modèle global.

Néanmoins, quand on réalise des régressions, il est plus naturel d’utiliser des coefficients de corrélations que des d partiels. Il est intéressant de savoir que, dès lors que nous disposons de ce \(d_{partiel}\), on peut obtenir la valeur du coefficient de corrélation partiel grâce à la formule (28) présentée dans la section précédente.

On peut à nouveau utiliser la fonction d_to_r du package effectsize (Ben-Shachar et al., 2020) pour faire la conversion. Par exemple, si la taille d’effet vaut 0.72, la corrélation vaut :

d_to_r(0.72)
## [1] 0.3387194683

Exercice 6*

Dans les résultats présentés ci-dessous, nous reprenons les résultats de la régression du jeu de données “sex appeal” présenté précédemment,

ols_vif_tol(model)
##      Variables    Tolerance         VIF
## 1       charme 0.1381551133 7.238240961
## 2       humour 0.1380351452 7.244531810
## 3 intelligence 0.7255780858 1.378211415
## 4     élégance 0.9692479381 1.031727756
ols_regress(model)
##                          Model Summary                          
## ---------------------------------------------------------------
## R                       0.878       RMSE                 8.626 
## R-Squared               0.770       MSE                 78.330 
## Adj. R-Squared          0.761       Coef. Var            8.989 
## Pred R-Squared          0.748       AIC                726.751 
## MAE                     7.146       SBC                742.382 
## ---------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##  AIC: Akaike Information Criteria 
##  SBC: Schwarz Bayesian Criteria 
## 
##                                 ANOVA                                 
## ---------------------------------------------------------------------
##                  Sum of                                              
##                 Squares        DF    Mean Square      F         Sig. 
## ---------------------------------------------------------------------
## Regression    24955.532         4       6238.883    79.649    0.0000 
## Residual       7441.308        95         78.330                     
## Total         32396.840        99                                    
## ---------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##        model      Beta    Std. Error    Std. Beta      t       Sig      lower     upper 
## ----------------------------------------------------------------------------------------
##  (Intercept)    17.038         5.808                 2.933    0.004     5.507    28.570 
##       charme     0.149         0.115        0.172    1.298    0.197    -0.079     0.378 
##       humour     0.567         0.115        0.654    4.944    0.000     0.339     0.794 
## intelligence     0.617         0.311        0.115    1.987    0.050     0.001     1.234 
##     élégance     0.293         0.215        0.068    1.361    0.177    -0.134     0.720 
## ----------------------------------------------------------------------------------------

Calculez le se à partir des écart-types (présentés ci-dessous) des différents prédicteurs. Considérez dans un premier temps qu’il n’y a pas de colinéarité entre les prédicteurs et dans un second temps, prenez en compte cette multicolinéarité. Comparez les valeurs avec celles obtenues dans le tableau ci-dessus. Dans un second temps, à partir de la meilleure estimation des erreurs-types calculez les coefficients de corrélation partiels.

sd<-diag(var(sex.appeal[,1:5])^0.5)#écart-type des prédicteurs
sd
##   sex_appeal       charme       humour intelligence     élégance 
## 18.089798453 20.787389340 20.884589070  3.361261788  4.198737184
Cliquez pour la solution
se_Q1<-sqrt((1-.77)/ 95) *(sd[1] / sd[2:5])
se_Q1
##        charme        humour  intelligence      élégance 
## 0.04281893816 0.04261965297 0.26480946583 0.21199086764
se_Q2<-sqrt((1-.77)/ (ols_vif_tol(model)$Tolerance* 95)) *(sd[1] / sd[2:5])
se_Q2
##       charme       humour intelligence     élégance 
## 0.1151999821 0.1147136427 0.3108790288 0.2153276048
t<-ols_regress(model)$betas[2:5]/se_Q2
t 
##       charme       humour intelligence     élégance 
##  1.297171711  4.940912888  1.985844369  1.359915824
t_to_r(t, 95)
## r    |        95% CI
## --------------------
## 0.13 | [-0.07, 0.32]
## 0.45 | [ 0.28, 0.58]
## 0.20 | [ 0.00, 0.38]
## 0.14 | [-0.06, 0.32]

Remarquez comme ces valeurs sont proches des coefficients de corrélations partiels que nous avions calculés précédemment

p_r<-partial.r(data=sex.appeal[,1:5])
# on arrondit à la seconde décimale 
# on ne prend que les corrélations avec la variable dépendante (première ligne)

round(p_r[1,],2) 
##   sex_appeal       charme       humour intelligence     élégance 
##         1.00         0.13         0.45         0.20         0.14

Obtenir un coefficient de corrélation à partir d’un rapport de cotes.

Nous venons de voir que nous pouvions calculer un coefficient de corrélation à partir d’un d de Cohen, nous pouvons également l’obtenir à partir d’un rapport de cote. Nous avons vu dans la section intitulée Interpréter les rapports de cotes qu’il était possible de transformer un rapport de cotes en d de Cohen, il apparaît donc qu’il est possible de transformer un rapport de cotes en coefficient de corrélation. On obtient cette valeur grâce à la fonction oddsratio_to_r

oddsratio_to_r(8.24, n1 =110+975 , n2 = 25+1825 )
## [1] 0.4895801235

Cette valeur est relativement proche du coefficient de corrélation tétrachorique.

psych::tetrachoric(df)
## Call: psych::tetrachoric(x = df)
## tetrachoric correlation 
##        Cancr Fumer
## Cancer 1.00       
## Fumeur 0.53  1.00 
## 
##  with tau of 
## Cancer Fumeur 
##   1.68   0.33

Transformer les tailles d’effet en d de Cohen/g de Hedges

Nous avons déjà évoqué la relation qui existe entre le d de Cohen et le g de Hedges. Nous focaliserons ici dans l’obtention du d de Cohen à partir des autres tailles d’effet.

Á partir des coefficients de corrélation

Nous avons évoqué dans la section précédente qu’il était possible de transformer un d de Cohen en coefficient de corrélation. L’inverse est évidemment vrai aussi.

Nous n’adapterons pas la formule mais nous contenterons de présenter la fonction r_to_d. Pour l’illustrer nous reprenons les corrélations partielles calculées dans la section précédentes et nous allons retrouver les coefficients de d partiels que nous avions obtenus.

r_to_d(c(p_r[1,]))
##   sex_appeal       charme       humour intelligence     élégance 
##          Inf 0.2663521922 1.0145325929 0.4077594328 0.2792356309

Á partir d’un rapport de cote.

Dans la section intitulée Interpréter les rapports de cotes, nous avions évoqué la formule proposée par Borenstein (2009) qui permettait d’associer le d de Cohen et le rapport de cote. Dans R, on peut obtenir la transformation entre un rapport de cote et le d de Cohen en utilisant la fonction oddsratio_to_d

Si nous reprenons l’OR que nous avions obtenu dans l’exemple sur le fait d’être fumeur et le risque d’attraper un cancer, nous pouvons utiliser la fonction de la manière suivante :

oddsratio_to_d(8.24)
## [1] 1.16275283

Transformer les tailles d’effet en rapport de cotes

Sans grande surprise on peut également obtenir les rapport de cotes à partir des autres tailles d’effet. Les fonctions qui permettent de le faire sont d_to_oddsratior_to_oddsratio

Nous ne reviendrons pas sur les formules qui ont déjà été présentées précédemment.

Obtenir le rapport de cotes à partir du coefficient de corrélation

oddsratio_to_r(8.24) # donne le coefficient de corrélation (n1 et N2 sont censés être de même taille dans une corrélation)
## [1] 0.5026082239
r_to_oddsratio(0.5026082) # on obtient 8.24 
## [1] 8.239998893

Obtenir le rapport de cote à partir d’une différence de moyennes standardisées

De la même manière, on peut obtenir le rapport de cote à partir du d. 

oddsratio_to_d(8.24) # donne le d de Cohen
## [1] 1.16275283
d_to_oddsratio(1.162753) # on obtient 8.24 
## [1] 8.24000254

En résumé

Il est très fréquent que les tailles d’effets ne soient pas homogènes d’un article à l’autre et/ou que les auteurs ne fournissent pas directement une mesure de la taille d’effet, malgré les recommandations de l’APA. Néanmoins, dans de nombreuses situations, les informations fournies suffisent à retrouver les tailles d’effet d’intérêt.

Références

Aragon, T. J. (2020). Epitools: Epidemiology tools. https://CRAN.R-project.org/package=epitools
Ben-Shachar, M. S., Lüdecke, D., & Makowski, D. (2020). effectsize: Estimation of effect size indices and standardized parameters. Journal of Open Source Software, 5(56), 2815. https://doi.org/10.21105/joss.02815
Borenstein, M., Hedges, L. V., Higgins, J. P. T., & Rothstein, H. R. (2009). Introduction to meta‐analysis. Wiley. https://doi.org/10.1002/9780470743386
Bruggemans, E. F., Vande Vijver, F. J. R., & Huysmans, H. A. (1997). Assessment of cognitive deterioration in individual patients following cardiac surgery: Correcting for measurement error and practice effects. Journal of Clinical and Experimental Neuropsychology, 19(4), 543–559. https://doi.org/10.1080/01688639708403743
Chen, H., Cohen, P., & Chen, S. (2010). How big is a big odds ratio? Interpreting the magnitudes of odds ratios in epidemiological studies. Communications in Statistics - Simulation and Computation, 39(4), 860–864. https://doi.org/10.1080/03610911003650383
Cohen, J. (1988). Statistical power analysis for the behavioral sciences. Routledge. https://doi.org/10.4324/9780203771587
Collie, A., Maruff, P., Makdissi, M., McStephen, M., Darby, D. G., & McCrory, P. (2004). Statistical procedures for determining the extent of cognitive change following concussion. British Journal of Sports Medicine, 38(3), 273–278. https://doi.org/10.1136/bjsm.2003.000293
Cuijpers, P., Karyotaki, E., Weitz, E., Andersson, G., Hollon, S. D., & Straten, A. van. (2014). The effects of psychotherapies for major depression in adults on remission, recovery and improvement: A meta-analysis. Journal of Affective Disorders, 159, 118–126. https://doi.org/10.1016/j.jad.2014.02.026
Evans, J. D. (1996). Straightforward statistics for the behavioral sciences. Brooks/Cole Publishing Company. https://books.google.fr/books?id=8Ca2AAAAIAAJ
Funder, D. C., & Ozer, D. J. (2019). Evaluating effect size in psychological research: Sense and nonsense. Advances in Methods and Practices in Psychological Science, 2(2), 156–168. https://doi.org/10.1177/2515245919847202
Gignac, G. E., & Szodorai, E. T. (2016). Effect size guidelines for individual differences researchers. Personality and Individual Differences, 102, 74–78. https://doi.org/10.1016/j.paid.2016.06.069
Godden, D. R., & Baddeley, A. D. (1975). Context-dependent memory in two natural environments: On land and underwater. British Journal of Psychology, 66(3), 325–331. https://doi.org/10.1111/j.2044-8295.1975.tb01468.x
Grant, R. L. (2014). Converting an odds ratio to a range of plausible relative risks for better communication of research findings. BMJ, 348(jan24 1), f7450–f7450. https://doi.org/10.1136/bmj.f7450
Hedges, L. V. (1981). Distribution theory for glass’s estimator of effect size and related estimators. Journal of Educational Statistics, 6(2), 107. https://doi.org/10.2307/1164588
Hedges, L., & Olkin, I. (1985). Statistical methods for meta-analysis. Elsevier. https://doi.org/10.1016/c2009-0-03396-0
Hemphill, J. F. (2003). Interpreting the magnitudes of correlation coefficients. American Psychologist, 58(1), 78–79. https://doi.org/10.1037/0003-066x.58.1.78
Leucht, S., Hierl, S., Kissling, W., Dold, M., & Davis, J. M. (2012). Putting the efficacy of psychiatric and general medicine medication into perspective: Review of meta-analyses. British Journal of Psychiatry, 200(2), 97–106. https://doi.org/10.1192/bjp.bp.111.096594
Lin, L., & Aloe, A. M. (2020). Evaluation of various estimators for standardized mean difference in meta‐analysis. Statistics in Medicine, 40(2), 403–426. https://doi.org/10.1002/sim.8781
Lovakov, A., & Agadullina, E. R. (2021). Empirically derived guidelines for effect size interpretation in social psychology. European Journal of Social Psychology, 51(3), 485–504. https://doi.org/10.1002/ejsp.2752
Nuijten, M. B., Hartgerink, C. H. J., Assen, M. A. L. M. van, Epskamp, S., & Wicherts, J. M. (2015). The prevalence of statistical reporting errors in psychology (1985–2013). Behavior Research Methods, 48(4), 1205–1226. https://doi.org/10.3758/s13428-015-0664-2
Pearson, K. (1895). Proceedings of the Royal Society of London, 58(347–352), 240–242. https://doi.org/10.1098/rspl.1895.0041
R Core Team. (2023). R: A language and environment for statistical computing. R Foundation for Statistical Computing. https://www.R-project.org/
Ranganathan, P., Aggarwal, R., & Pramesh, C. (2015). Common pitfalls in statistical analysis: Odds versus risk. Perspectives in Clinical Research, 6(4), 222. https://doi.org/10.4103/2229-3485.167092
Revelle, W. (2022). Psych: Procedures for psychological, psychometric, and personality research. Northwestern University. https://CRAN.R-project.org/package=psych
Sawilowsky, S. S. (2009). New effect size rules of thumb. Journal of Modern Applied Statistical Methods, 8(2), 597–599. https://doi.org/10.22237/jmasm/1257035100
Sedgwick, P. (2014). Relative risks versus odds ratios. BMJ, 348(feb07 2), g1407–g1407. https://doi.org/10.1136/bmj.g1407
Stefaniak, N., Willems, S., Adam, S., & Meulemans, T. (2008). What is the impact of the explicit knowledge of sequence regularities on both deterministic and probabilistic serial reaction time task performance? Memory &Amp; Cognition, 36(7), 1283–1298. https://doi.org/10.3758/mc.36.7.1283
Viechtbauer, W. (2010). Conducting meta-analyses in R with the metafor package. Journal of Statistical Software, 36(3), 1–48. https://doi.org/10.18637/jss.v036.i03

  1. Pour une démonstration mathématique, voir le chapitre consacré aux corrélations↩︎

  2. La formule exacte n’est pas indispensable. Il faut essentiellement comprendre que le G de Hedges est une mesure moins biaisée que le d de Cohen.↩︎

  3. il est à noter qu’il existe plusieurs variantes pour calculer cette mesure mais nous nous contentons de présenter ici la mesure la plus fréquente et la plus simple↩︎

  4. la question du calcul exact, c’est-à-dire comprendre ce qu’est une transformation logit, est développé dans le chapitre consacré aux régressions logistiques mais pas dans ce chapitre↩︎