2013-03-15 11 views
12

dati due vettori:Stima Cohen per effetto di scala

x <- rnorm(10, 10, 1) 
y <- rnorm(10, 5, 5) 

Come calcolare la d di Cohen per grandezza dell'effetto?

Ad esempio, desidero utilizzare pwr package per stimare la potenza di un t-test con varianze disuguali e richiede Cohen's d.

risposta

28

seguito this link e wikipedia, d di Cohen per un t-test sembra essere:

enter image description here

Dove sigma (denominatore) is:

enter image description here

Quindi, con i tuoi dati:

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 
+0

+1, ottima risposta. – juba

25

Ci sono diversi pacchetti che forniscono una funzione per il calcolo di d di Cohen. È possibile ad esempio utilizzare la funzione cohensD formano il pacchetto lsr:

library(lsr) 
set.seed(45) 
x <- rnorm(10, 10, 1) 
y <- rnorm(10, 5, 5) 
cohensD(x,y) 
# [1] 0.5199662 
+2

potresti impostare il seed per dire 45 e calcolarlo nuovamente e incollare il risultato? (per riproducibilità) – Arun

+0

@Arun Sì, buona idea, grazie. – juba

+1

Altri pacchetti che contengono la funzione di Cohen sono: _effsize_ e _pwr_ (vedi https://cran.r-project.org/web/packages/) – Tapper