快速提问:我已经看到Cohen的d为依赖性样本t检验计算了两种不同的方法(例如,样本内设计在前后时间点对药物的功效进行了测试)。
- 在Cohen方程的分母中使用变化得分的标准偏差。
- 在Cohen方程的分母中使用预测分数的标准偏差。
我发现很少有文献描述使用哪个选项和/或何时使用这两个选项。
有什么想法吗?
快速提问:我已经看到Cohen的d为依赖性样本t检验计算了两种不同的方法(例如,样本内设计在前后时间点对药物的功效进行了测试)。
我发现很少有文献描述使用哪个选项和/或何时使用这两个选项。
有什么想法吗?
Answers:
杰夫·卡明(Geoff Cumming)就此事发表了一些评论(摘自卡明,2013年):
但是,在许多情况下,标准化者的最佳选择不是对所讨论效果进行推断所需的SD。例如,考虑配对设计,例如一个简单的事前实验,其中一组参与者同时提供了前测和后测数据。实际上,最合适的标准化工具始终是(Cumming,2012年,第290-294页; Cumming&Finch,2001年,第568-570页),对预测试人群的SD进行估算,也许是,即我们数据中的预测试SD。相比之下,关于差异的推断需要,对的t的SD —无论是成对的t检验还是计算差异的CI(Cumming&Finch,2005)。在测验前和测验分数相关的程度上,将小于,我们的实验将更敏感,并且使用作为标准化器错误计算的d值将太大。
在配对设计中选择作为标准化程序的主要原因是,预测试总体SD实际上始终具有最佳概念意义作为参考单位。另一个重要原因是,获得的d值可能与其他成对设计实验(可能具有不同的前测后测相关性)以及采用不同设计的实验(包括独立组设计)给出的d值相当,所有这些都检查了同样的效果。在所有这些情况下,d值都可能是可比较的,因为它们使用相同的标准化工具(即对照或预测试SD)。这种可比性对于荟萃分析以及在上下文中进行有意义的解释至关重要。
这是一个建议的R函数,用于计算对象设计之间或对象内部设计的Hedges的g(Cohen d的无偏版本)及其置信区间:
gethedgesg <-function( x1, x2, design = "between", coverage = 0.95) {
# mandatory arguments are x1 and x2, both a vector of data
require(psych) # for the functions SD and harmonic.mean.
# store the columns in a dataframe: more convenient to handle one variable than two
X <- data.frame(x1,x2)
# get basic descriptive statistics
ns <- lengths(X)
mns <- colMeans(X)
sds <- SD(X)
# get pairwise statistics
ntilde <- harmonic.mean(ns)
dmn <- abs(mns[2]-mns[1])
sdp <- sqrt( (ns[1]-1) *sds[1]^2 + (ns[2]-1)*sds[2]^2) / sqrt(ns[1]+ns[2]-2)
# compute biased Cohen's d (equation 1)
cohend <- dmn / sdp
# compute unbiased Hedges' g (equations 2a and 3)
eta <- ns[1] + ns[2] - 2
J <- gamma(eta/2) / (sqrt(eta/2) * gamma((eta-1)/2) )
hedgesg <- cohend * J
# compute noncentrality parameter (equation 5a or 5b depending on the design)
lambda <- if(design == "between") {
hedgesg * sqrt( ntilde/2)
} else {
r <- cor(X)[1,2]
hedgesg * sqrt( ntilde/(2 * (1-r)) )
}
# confidence interval of the hedges g (equations 6 and 7)
tlow <- qt(1/2 - coverage/2, df = eta, ncp = lambda )
thig <- qt(1/2 + coverage/2, df = eta, ncp = lambda )
dlow <- tlow / lambda * hedgesg
dhig <- thig / lambda * hedgesg
# all done! display the results
cat("Hedges'g = ", hedgesg, "\n", coverage*100, "% CI = [", dlow, dhig, "]\n")
}
使用方法如下:
x1 <- c(53, 68, 66, 69, 83, 91)
x2 <- c(49, 60, 67, 75, 78, 89)
# using the defaults: between design and 95% coverage
gethedgesg(x1, x2)
# changing the defaults explicitely
gethedgesg(x1, x2, design = "within", coverage = 0.90 )
希望对您有所帮助。