2013-03-15 21 views
12

cho hai vectơ:Ước tính Cohen cho hiệu ứng kích thước

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

Làm thế nào để tính toán Cohen d cho kích thước có hiệu lực?

Ví dụ, tôi muốn sử dụng pwr package để ước tính sức mạnh của một thử nghiệm t với phương sai không đồng đều và nó đòi hỏi Cohen's d.

Trả lời

28

Sau this linkwikipedia, d Cohen cho t-test có vẻ là:

enter image description here

đâu sigma (mẫu số) là:

enter image description here

Vì vậy, với dữ liệu của bạn:

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, câu trả lời tuyệt vời. – juba

25

Có một số gói cung cấp chức năng để tính toán Cohen's d. Bạn có thể ví dụ như sử dụng cohensD chức năng hình thành lsr gói:

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

bạn có thể đặt hạt giống để nói 45 và tính toán lại và dán kết quả không? (đối với khả năng tái sản xuất) – Arun

+0

@Arun Có, ý tưởng hay, cảm ơn. – juba

+1

Các gói khác có chứa chức năng của Cohen là: _effsize_ và _pwr_ (xem https://cran.r-project.org/web/packages/) – Tapper

Các vấn đề liên quan