14

给定两个向量:

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

如何计算效应大小的 Cohen's d?

例如,我想使用pwr 包来估计具有不等方差的 t 检验的功效,它需要 Cohen 的 d。

4

4 回答 4

31

这个链接维基百科之后,科恩的 t 检验似乎是:

在此处输入图像描述

其中sigma(分母)是:

在此处输入图像描述

因此,使用您的数据:

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
于 2013-03-15T16:07:30.080 回答
29

有几个包提供了计算 Cohen's d 的功能。例如,您可以使用包中的cohensD函数lsr

library(lsr)
set.seed(45)
x <- rnorm(10, 10, 1)
y <- rnorm(10, 5, 5)
cohensD(x,y)
# [1] 0.5199662
于 2013-03-15T16:02:45.890 回答
4

另一种选择是使用effsize包。

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
于 2018-10-18T09:43:13.180 回答
1

另一个更新的选项是使用effectsize,它非常灵活并且还返回置信区间: https ://easystats.github.io/effectsize/reference/cohens_d.html

library(effectsize)

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

# for independent measures design
cohens_d(x, y)
#> Cohen's d |        95% CI
#> -------------------------
#> 0.77      | [-0.15, 1.67]
#> 
#> - Estimated using pooled SD.

# in case design is paired
cohens_d(x, y, paired = TRUE)
#> Cohen's d |        95% CI
#> -------------------------
#> 0.49      | [-0.19, 1.20]

reprex 包(v2.0.0)于 2021-06-29 创建

于 2021-06-29T09:53:43.687 回答