# Bootstrap a confidence interval on d' - Pete Hurd 23 June 2009 # This uses Cohen's (1988) p44 pooled variance method. get.d <- function(x,y,absolute=T){ diff <- mean(x,na.rm=T)-mean(y,na.rm=T) if (absolute) diff <- abs(diff) S <- sqrt((sd(x,na.rm=T)^2+sd(y,na.rm=T)^2)/2) d <- diff/S return(d) } # revised version 23 June 2009 - make na.rm=F & abs=F defaults boot.d.ci <- function(x,y,ci=0.95,b=1000,abs=F,na.rm=F){ if (na.rm){ x <- x[!is.na(x)] y <- y[!is.na(y)] } a <- (1-ci)/2 boots <- numeric(length=0) for (i in 1:b){ boots <- c(boots,get.d(sample(x,replace=T),sample(y,replace=T),absolute=abs)) } return(quantile(boots,c(a,1-a))) }