*! version 1.0.1 12 September 1993 RG STB-17: sg21.1 program define equipi version 3.1 * this is the version that formed the examples in the STB * enter control group first: p n pbase [d1] [d2] or p1 n1 p2 n2 d1 [d2] local options "Delta(string) SDelta(string)" parse "`*'", parse(" ,") tempname pr1 n1 pr2 n2 d1 d2 scalar `pr1'=`1' scalar `n1'=`2' scalar `pr2'=`3' capture confirm integer number `4' if _rc!=0 { mac shift 3 parse "`*'" if "`delta'"=="" { scalar `d1'=.2*`pr2' } else if "`delta'"!="" { if substr("`delta'",-1,.)=="%" { local leng=length("`delta'") local dp=real(substr("`delta'",1,`leng'-1))/100 scalar `d1'=`dp'*`pr2' } else { scalar `d1'=real("`delta'") } } if "`sdelta'"=="" { scalar `d2'=`d1' } else if substr("`sdelta'",-1,.)=="%" { local leng2=length("`sdelta'") local dp2=real(substr("`sdelta'",1,`leng2'-1))/100 scalar `d2'=`dp2'*`pr2' } else { scalar `d2'=real("`sdelta'") } local sep=sqrt(((`pr1'*(1-`pr1'))/`n1')) local p1= ((`pr1' - `pr2') - (-`d1'))/ `sep' local p2= ((`pr1' - `pr2') - `d2')/ `sep' local CI1 = (`pr1' - `pr2')-(invnorm(.95)*`sep') local CI2 = (`pr1' - `pr2')+(invnorm(.95)*`sep') local succ=round(`pr1'*`n1',1) qui cii `n1' `succ', level(90) local eci1=round($S_5,.00001) local eci2=round($S_6,.00001) qui bitesti `n1' `succ' `pr2' local ep1=round($S_1,.00001) local ep2=round($S_2,.00001) di "Westlake version of test of Equivalence:" di " test1: "%9.3f `p1' _skip(3) "p-value: "%6.4f /* */ round(1-normprob(`p1'),.0001) _skip(13) /* */ "exact p-value: "%6.4f `ep1' di " test2: "%9.3f `p2' _skip(3) "p-value: "%6.4f /* */ round(normprob(`p2'),.0001) _skip(13) /* */ "exact p-value: "%6.4f `ep2' di " Confidence Interval: Lower Limit"%11.5f `CI1' _skip(5) /* */ "Upper Limit "%11.5f `CI2' di " Exact Westlake CI: Lower Limit"_skip(2) %11.5f `eci1' _skip(5) /* */ "Upper Limit "%11.5f `eci2' di "Equivalence Interval (-/+ (s)delta): "%8.5f (`pr2' - `d1') /* */ _skip(17) %11.5f (`pr2' + `d2') di "" qui bitesti `n1' `succ' `pr2' local pv=round($S_7,.00001) di "Exact p-value from binomial test for single proportion: "%8.5f `pv' qui cii `n1' `succ' local lci=round($S_5,.00001) local uci=round($S_6,.00001) di "Exact CI: Lower Limit "_skip(12) %11.5f `lci' _skip(5) /* */ "Upper Limit "%11.5f `uci' local tCI1 = (`pr1' - `pr2')-(invnorm(.975)*`sep') local tCI2 = (`pr1' - `pr2')+(invnorm(.975)*`sep') di "Traditional CI: Lower Limit "_skip(6) %11.5f `tCI1' _skip(5) /* */ "Upper Limit "%11.5f `tCI2' exit } scalar `n2'=`4' mac shift 4 parse "`*'" if "`delta'"=="" { scalar `d1'=.2*`pr1' } else if "`delta'"!="" { if substr("`delta'",-1,.)=="%" { local leng=length("`delta'") local dp=real(substr("`delta'",1,`leng'-1))/100 scalar `d1'=`dp'*`pr1' } else { scalar `d1'=real("`delta'") } } if "`sdelta'"=="" { scalar `d2'=`d1' } else if substr("`sdelta'",-1,.)=="%" { local leng2=length("`sdelta'") local dp2=real(substr("`sdelta'",1,`leng2'-1))/100 scalar `d2'=`dp2'*`pr1' } else { scalar `d2'=real("`sdelta'") } local se1 = sqrt(((`pr1'*(1-`pr1'))/`n1')+((`pr2'*(1-`pr2'))/`n2')) local p1= ((`pr1' - `pr2') - (-`d1'))/ `se1' local p2= ((`pr1' - `pr2') - `d2')/ `se1' local CI1 = (`pr1' - `pr2')-(invnorm(.95)*`se1') local CI2 = (`pr1' - `pr2')+(invnorm(.95)*`se1') di "Westlake version of test of Equivalence:" di " test1: "%9.3f `p1' _skip(3) "p-value: "%6.4f /* */ round(1-normprob(`p1'),.0001) di " test2: "%9.3f `p2' _skip(3) "p-value: "%6.4f /* */ round(normprob(`p2'),.0001) di " Confidence Interval: Lower Limit"%11.5f `CI1' _skip(5) /* */ "Upper Limit "%11.5f `CI2' di "Equivalence Interval (-/+ (s)delta): "%8.5f (- `d1') /* */ _skip(17) %11.5f (`d2') di "" di "standard test for comparing proportions: " local av=(`pr1'+`pr2')/2 local z= (`pr1'-`pr2')/sqrt(`av'*(1-`av')*((1/`n1')+(1/`n2'))) di " z = "%9.3f `z' _skip(5) "p-value: "%7.4f 1-normprob(abs(`z')) local CIp1=(`pr1'-`pr2')+(invnorm(.025)*`se1') local CIp2=(`pr1'-`pr2')+(invnorm(.975)*`se1') di "confidence interval: Lower Limit "_skip(1) %11.5f `CIp1' _skip(5) /* */ "Upper Limit "%11.5f `CIp2' end