*! Date : 29 June 2009 *! Version : 1.01 *! Author : Adrian Mander *! Email : adrian.mander@mrc-bsu.cam.ac.uk *! Sample size calculation for Flemming single-stage design /* 2Jun2009 v1.00 The command is born 29Jun2009 v1.01 The output didn't print the p0 and p1 values */ program define sampsi_fleming, rclass version 10.0 preserve syntax [, p0(real 0.2) p1(real 0.4) Alpha(real 0.05) Power(real 0.9) Start(integer 1) End(integer 40)] clear qui set obs 1 qui gen n=. qui gen u=. qui gen pnull=. qui gen palt=. qui gen desired=. local line 1 local found 0 if `end'<`start' local end "`start'" while (`found'==0) { if mod(`end',100)==0 di "{txt}Sample size >{res}`end'" forv n=`start'/`end' { forv u=1/`=`n'' { /*Calculate the probability of getting more extreme value under H0*/ local pnull= binomialtail(`n',`u',`p0') local palt = binomialtail(`n',`u',`p1') if (`pnull'<=`alpha' & `palt'>=`power') { local found 1 qui replace pnull= binomialtail(`n',`u',`p0') in `line' qui replace palt = binomialtail(`n',`u',`p1') in `line' qui replace n = `n' in `line' qui replace u = `u' in `line' qui replace desired = pnull<=`alpha' & palt>=`power' in `line++' qui set obs `line' } } } local start =`end'+1 local end =`end'+1 } local line 1 local minn = n[1] forv i=2/`=_N' { if n[`i']<`minn' local line=`i' } local alpha: di %6.4f pnull[`line'] local power: di %6.4f palt[`line'] local n = n[`line'] local u = u[`line'] di di "{txt}Sample size calculation for the Fleming design" di "{dup 46:{c -}}" di "H0: p <= p0" di "H1: p > p0" di di "{txt}p0 = `p0' p1=`p1'" di "{txt}With a sample size of {res} `n'" di "{txt}the null hypothesis is rejected if there are {res}>= `u' {txt}responders" di "{txt}Type I error = {res}`alpha'" di "{txt}Power = {res}`power'" restore end