我正在使用Cohen的d(使用cohen.d()
包中的effsize
实现)来衡量因子在两个级别之间的因变量中的效应大小。
我的代码如下:cohen.d(d, f)
,其中d
是数值的向量,f
是具有两个级别的因数:“ A”和“ B”。
根据我的理解,科恩d的符号取决于在公式中输入的均值顺序(即因子水平)。但是,即使我颠倒了cohen.d()
中的级别顺序,我的f
命令也会返回一个负值(和负CI)。
以下是可重现的示例:
library('effsize')
# Load in Chickweight data
a=ChickWeight
# Cohens d requires two levels in factor f, so take the first two available in Diet
a=a[a$Diet==c(1,2),]
a$Diet=a$Diet[ , drop=T]
# Compute cohen's d with default order of Diet
d1 = a$weight
f1 = a$Diet
cohen1 = cohen.d(d1,f1)
# Re-order levels of Diet
a$Diet = relevel(a$Diet, ref=2)
# Re-compute cohen's d
d2 = a$weight
f2 = a$Diet
cohen2 = cohen.d(d2,f2)
# Compare values
cohen1
cohen2
谁能解释为什么会这样,和/或我做错了什么?
提前感谢您的任何建议!
答案 0 :(得分:0)
我不确定您示例中问题背后的原因是什么(也许其他人可以在这里发表评论),但是如果您查看?cohen.d
下的示例,有几种不同的计算方法它:
treatment = rnorm(100,mean=10)
control = rnorm(100,mean=12)
d = (c(treatment,control))
f = rep(c("Treatment","Control"),each=100)
## compute Cohen's d
## treatment and control
cohen.d(treatment,control)
## data and factor
cohen.d(d,f)
## formula interface
cohen.d(d ~ f)
如果使用第一个示例cohen.d(treatment, control)
并将其反转为cohen.d(control, treatment)
,则会得到以下信息:
cohen.d(treatment, control)
Cohen's d
d estimate: -1.871982 (large)
95 percent confidence interval:
inf sup
-2.206416 -1.537547
cohen.d(control, treatment)
Cohen's d
d estimate: 1.871982 (large)
95 percent confidence interval:
inf sup
1.537547 2.206416
因此,使用示例中的两个向量方法处理数据,我们可以做到:
a1 <- a[a$Diet == 1,"weight"]
a2 <- a[a$Diet == 2,"weight"]
cohen3a <- cohen.d(a1, a2)
cohen3b <- cohen.d(a2, a1)
我注意到f
示例中的?cohen.d
不是一个因素,而是一个字符向量。我尝试使用cohen.d(d, f)
方法,但没有找到解决方案。想看看别人是否对此有任何看法。