# # Independent groups "inferential confidence intervals" and # "Cohen's d" confidence intervals # # References: # 1) "Evaluating statistical difference, equivalence, # and indeterminacy using inferential confidence intervals, # an integrated alternative method of conducting # null hypothesis statistical tests" (Tyron, W., 2001, # Psychological Methods, Dec. Vol. 6(4):371-86 - # http://www.unt.edu/rss/tryonICI.pdf ) # # 2) "A primer on the understanding, use, and calculation of confidence # intervals that are based on central and noncentral distributions" # (Cumming, G. & Finch, S, 2001, Educational and # Psychological Measurement, 61, 532–574 - # http://www.unt.edu/rss/PrimerOnUseOfNoncentralIntervals.pdf ) # # Create simulated data set with 2 independent groups # and 4 outcome variables (DVs); 10 obs per group # Sample sizes n1<-10 n2<-10 # Standard Deviations per group for four outcome variables(depvars) stdevAdepVar1<-2 stdevAdepVar2<-2 stdevAdepVar3<-2 stdevAdepVar4<-2 stdevBdepVar1<-2 stdevBdepVar2<-2 stdevBdepVar3<-2 stdevBdepVar4<-2 # Means per group for three depvars meanAdepVar1<-10 meanAdepVar2<-7 meanAdepVar3<-8 meanAdepVar4<-4 meanBdepVar1<-12 meanBdepVar2<-9 meanBdepVar3<-11 meanBdepVar4<-5 # Grouping indicator (group1 -> "a" group2 -> "b") group<-c(rep("a",n1), rep("b", n2)) # Simulate dep vars for groups: e.g. mean (meanAdepVar) with error # added (stdevAdepVar) depVar1<-c(meanAdepVar1 + rnorm(n1, 0, stdevAdepVar1), meanBdepVar1 + rnorm(n2, 0, stdevBdepVar1)) depVar2<-c(meanAdepVar2 + rnorm(n1, 0, stdevAdepVar2), meanBdepVar2 + rnorm(n2, 0, stdevBdepVar2)) depVar3<-c(meanAdepVar3 + rnorm(n1, 0, stdevAdepVar3), meanBdepVar3 + rnorm(n2, 0, stdevBdepVar3)) depVar4<-c(meanAdepVar4 + rnorm(n1, 0, stdevAdepVar4), meanBdepVar4 + rnorm(n2, 0, stdevBdepVar4)) # high and low endpoints on y-axis for inferential CI's low.ici<-3 high.ici<-15 # high and low endpoints on y-axis for Cohen d CI's low.cohen.d<-(-1) high.cohen.d<-(4) Dataset<-data.frame(group, cbind(depVar1, depVar2, depVar3, depVar4)) Dataset attach(Dataset) Dataset data2<-split(Dataset, group) data2A<-data.frame(data2$a) data2B<-data.frame(data2$b) dvsA<-(data2A[,2:5]) dvsB<-(data2B[,2:5]) dvsA dvsB # Noting means, stdev, and n of the two groups meansA<-mean(dvsA) meansB<-mean(dvsB) meansA meansB sdA<-sd(dvsA) sdB<-sd(dvsB) sdA sdB # Calculating the std errors to be used in the reduction term sderrA<-sdA/sqrt(n1) sderrB<-sdB/sqrt(n2) # Calculating the reduction term and the reduced t-critical # value, and finally the margin of error redterm<-sqrt(sderrA^2 +sderrB^2)/(sderrA+sderrB) tred<-1.96*redterm margerrA<-tred*sderrA margerrB<-tred*sderrB # "plotCI" is a function from package "gplots" # Note: xaxt="n" is actually from the "par" # function, and suppress x-axis labeling library(gplots) # Create X-axis labels OutcomeVariableNames<-c("v1", "v2", "v3", "v4") xlabel<-"Outcome Variables" par(mfrow=c(2,1)) plotCI(meansA, uiw=margerrA, col="black", gap=0, type="p", barcol="red", xaxt="n", xlim=c(1,4), ylim=c(low.ici,high.ici), xlab=xlabel, ylab="Group Mean 95% Inferential CI's") axis(1, 1:4, OutcomeVariableNames) par(new=T) plotCI(meansB, uiw=margerrB, col="black", gap=0, type="p", barcol="blue", xaxt="n", xlim=c(1,4), ylim=c(low.ici,high.ici), xlab=xlabel, ylab="Group Mean 95% Inferential CI's") axis(1, 1:4, OutcomeVariableNames) # Cohen's d interval plots # Cohen's ds, upper and lower limits obtained from smd function in MBESS package library(MBESS) depVarIndex<-1 smdDepVar1<- smd(Mean.2=meansA[depVarIndex], Mean.1=meansB[depVarIndex], s.2=sdA[depVarIndex], s.1=sdB[depVarIndex], n.1=n1, n.2=n2) dv1.ci<-ci.smd(smd=smdDepVar1, n.1=n1, n.2=n2, conf.level=1-.05) depVarIndex<-2 smdDepVar2<- smd(Mean.2=meansA[depVarIndex], Mean.1=meansB[depVarIndex], s.2=sdA[depVarIndex], s.1=sdB[depVarIndex], n.1=n1, n.2=n2) dv2.ci<-ci.smd(smd=smdDepVar2, n.1=n1, n.2=n2, conf.level=1-.05) depVarIndex<-3 smdDepVar3<- smd(Mean.2=meansA[depVarIndex], Mean.1=meansB[depVarIndex], s.2=sdA[depVarIndex], s.1=sdB[depVarIndex], n.1=n1, n.2=n2) dv3.ci<-ci.smd(smd=smdDepVar3, n.1=n1, n.2=n2, conf.level=1-.05) depVarIndex<-4 smdDepVar4<- smd(Mean.2=meansA[depVarIndex], Mean.1=meansB[depVarIndex], s.2=sdA[depVarIndex], s.1=sdB[depVarIndex], n.1=n1, n.2=n2) dv4.ci<-ci.smd(smd=smdDepVar4, n.1=n1, n.2=n2, conf.level=1-.05) Cohen.d<-c(dv1.ci$smd, dv2.ci$smd, dv3.ci$smd, dv4.ci$smd) dlow<-c(dv1.ci$Lower.Conf.Limit.smd, dv2.ci$Lower.Conf.Limit.smd, dv3.ci$Lower.Conf.Limit.smd, dv4.ci$Lower.Conf.Limit.smd) dupp<-c(dv1.ci$Upper.Conf.Limit.smd, dv2.ci$Upper.Conf.Limit.smd, dv3.ci$Upper.Conf.Limit.smd, dv4.ci$Upper.Conf.Limit.smd) # Cohen's d interval plots library(gplots) # Create X-axis labels OutcomeVariableNames<-c("v1", "v2", "v3", "v4") xlabel<-"Outcome Variables" plotCI(Cohen.d, ui=dupp, li=dlow, col="black", barcol="red", xaxt="n", xlim=c(1,4), gap=0, ylim=c(low.cohen.d,high.cohen.d), xlab=xlabel, ylab="Cohen's d 95% CI's") axis(1, 1:4, OutcomeVariableNames) abline(h=0, lty=2)