# How can i calculate the 95% confidence interval of an effect size if I have the mean difference score, CI of that difference score

Mean difference: 3.7 CI(1.4-6.0) Cohen's d=0.4 how do i calculate the 95% CI of this effect size?

If you know the sizes of the two groups, you can use the 'tes' function in the 'compute.es' package in R, using the following: library(compute.es) tes(t=??, n.1=??, n.2=??)

If you have n1 and n2, you can find t as follows:

t = d*sqrt((n1*n2)/(n1+n2))


Then you can plug into tes() and it will give you a 95% CI for d=0.4.

For example, if you have n1=99 and n2 = 99, then t = 2.81

The top part of the tes() function will give you the 95% CI for d as:

Mean Differences ES:

d [ 95 %CI] = 0.4 [ 0.12 , 0.68 ]


You can find a full explanation of Confidence Intervals for effect sizes here:

Cumming, G. & Finch, S. (2001) A primer on the understanding, use, and calculation of confidence intervals that are based on central and noncentral distributions. Educational and Psychological Measurement, 61, 633-649.

Or, alternatively, there is a nice walk-through here: http://www.uvm.edu/~dhowell/methods7/Supplements/Confidence%20Intervals%20on%20Effect%20Size.pdf

I hope that helps!

• Thank you very much! I was able to calculate the CI now (-0.0609-0.8609) – user48054 Mar 5 '15 at 15:29
• Great! There's a related post here, in case you're interested why you CI now includes 0 whereas the original one did not: stats.stackexchange.com/questions/140344/… – Jordan Collins Mar 5 '15 at 15:31
• Is this the same for paired-samples t-tests? – user98112 Dec 13 '15 at 22:27
• does this work for Cohen's q too? – grey Mar 12 '16 at 16:11
• @grey: you've answered your question here: stats.stackexchange.com/questions/197391/… Was there something else you were looking for? – Jordan Collins Mar 14 '16 at 13:20

Updated Answer (Sept 2018): There is now a function in R called cohen.d.ci in the psych package.

So for example, you can do obtain confidence intervals on d using the following function:

psych::cohen.d.ci(d = .1, n1 = 100, n2 = 100)


This would return the following:

           lower effect     upper
[1,] -0.1777814    0.1 0.3772792


You can also use it where you have a vector of d effect sizes and sample sizes. For example, you might be doing a meta-analysis. Or you might have a large table where you are reporting many sample sizes:

data <- data.frame(d = rep(0.5, 5), n1 = seq(100, 500, 100), n2 = seq(100, 500, 100))
ds <- psych::cohen.d.ci(data$d, data$n1, data$n2) cbind(data, ds)  This yields the following matrix:  d n1 n2 lower effect upper 1 0.5 100 100 0.1005884 0.5 0.8969416 2 0.5 200 200 0.2178744 0.5 0.7809048 3 0.5 300 300 0.2697461 0.5 0.7294395 4 0.5 400 400 0.3006463 0.5 0.6987449 5 0.5 500 500 0.3217247 0.5 0.6777884  Original Answer (Dec 2016): I found Jordan's answer useful, so I wrapped it up into an R function: cohensd.ci <- function(d, n1, n2, ci = 0.95) { library(compute.es) t <- d * sqrt((n1 * n2)/(n1 + n2)) capture.output( fit <- compute.es::tes(t = t, n.1 = n1, n.2 = n2, level = 100 * ci), file = "NUL" ) c(lower.ci = fit$l.d, upper.ci = fit\$u.d)
}


So for example, a cohen's d of 0.5 with sample sizes of 100 in each group would be:

cohensd.ci(d = 0.5, n1 = 100, n2 = 100)


resulting in:

lower.ci upper.ci
0.22     0.78

• I am trying different packages (compute.es, psych, and MBESS) for CI around cohen's d and they yield different results for the same values. Any idea why? – beberuhi Oct 9 at 19:51