The R code below may be run in a syntax window in SPSS 16 after using the R integrator plug-in. You need to enter the inputs (Type I error, difference in means, sd and required power) in the BEGIN DATA sandwich. Sample size (in both groups) is outputted in the SPSS output window.
DATA LIST free /alpha (f10.5) mdiff (f10.5) sd (f10.5) power (f10.5). BEGIN DATA. 0.05 6.0 10.0 0.90 END DATA. begin program r. casedata <- spssdata.GetDataFromSPSS() beta <- casedata$alpha mdiff <- casedata$mdiff sd <- casedata$sd pow <-casedata$power fn <- function(n) { (pow - (1 - pt(abs(qt(beta/2,(2*n)-2)),(2*n)-2,mdiff/sqrt(2*sd*sd/n))) )^2 } nout<- nlm(fn,2) nout<- trunc(nout$estimate+1) outp <- data.frame(A=c(nout,beta,mdiff,sd,pow),row.names=c("N","alpha","Mean Diff","sd","Power")) spsspivottable.Display(outp, title="Sample Size needed", rowdim=" ", format=formatSpec.Correlation) end program.