options ls=75; /* Sample Size for a one-sample or 2-sample t-test. Input parameters: p=alpha level (.05 is default) power=power(.80 is default) mu=mean difference under ha sigma=sd sample=1 or 2 for one vs. 2 sample test side=1 or 2 (One sided vs. 2 sided) Output parameters: Sample size (Per Group), actual power, cutoff for significance */ data t;input p power mu sigma sample side; if p<0 or p>1 then p=.05; if power<0 or power>1 then power=.8; if side=. then side=2; if sample ne 1 then sample=2; mu=abs(mu);if abs(side-1)>.1 then side=2; file print; za=probit(1-(p/side));zb=probit(1-power); ninit=sqrt(sample)*sigma*(abs(za)+abs(zb))/mu; ninit=ninit*ninit;qq=1; cc:;m=int(qq+ninit); d=.00001;test=za-d;oldy=0; count=0; aa:test=test+d;count=count+1; y=side*probt(-test,sample*(m-1)); if y-p<0 or count>100000 then goto bb; goto aa; bb:; nc=sqrt(m/sample)*mu/sigma; ypow=1-probt(test,sample*(m-1),nc); if ypow