web-dev-qa-db-fra.com

Estimez la valeur de Cohen d

é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.

12
Kevin

En suivant ce lien et wikipedia , le d de Cohen pour un test t semble être:

enter image description here

sigma (dénominateur) est:

enter image description here

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
28
Arun

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
26
juba

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
1
pluke