étant donné deux vecteurs:
x <- rnorm(10, 10, 1)
y <- rnorm(10, 5, 5)
Comment calculer Cohen's d pour la taille de l'effet?
Par exemple, je veux utiliser le paquet pwr pour estimer la puissance d’un test t avec des variances inégales et nécessite le d de Cohen.
En suivant ce lien et wikipedia , le d de Cohen pour un test t semble être:
Où sigma
(dénominateur) est:
Donc, avec vos données:
set.seed(45) ## be reproducible
x <- rnorm(10, 10, 1)
y <- rnorm(10, 5, 5)
cohens_d <- function(x, y) {
lx <- length(x)- 1
ly <- length(y)- 1
md <- abs(mean(x) - mean(y)) ## mean difference (numerator)
csd <- lx * var(x) + ly * var(y)
csd <- csd/(lx + ly)
csd <- sqrt(csd) ## common sd computation
cd <- md/csd ## cohen's d
}
> res <- cohens_d(x, y)
> res
# [1] 0.5199662
Il existe plusieurs packages fournissant une fonction de calcul du d de Cohen. Vous pouvez par exemple utiliser la fonction cohensD
sous le paquet lsr
:
library(lsr)
set.seed(45)
x <- rnorm(10, 10, 1)
y <- rnorm(10, 5, 5)
cohensD(x,y)
# [1] 0.5199662
et nother en utilisant effsize package
library(effsize)
set.seed(45) x <- rnorm(10, 10, 1)
y <- rnorm(10, 5, 5)
cohen.d(x,y)
# Cohen's d
# d estimate: 0.5199662 (medium)
# 95 percent confidence interval:
# inf sup
# -0.4353393 1.4752717