/* Does exact 2-sided test of binomial parameter INPUT: -> n, sample size -> y, observed number of "successes" -> p0, value of parameter p under H0 OUTPUT: p-values: p_plus: versus Ha:p>p0 p_minus: versus Ha:P< p0 */ %macro binexact(n,y,p0); data binexact; pval_plus=0; pval_minus=0; pval_plus_minus=0; do i=0 to &n; pval_plus=pval_plus+PDF('BINOMIAL',i,&p0,&n)*(i>=&y); pval_minus=pval_minus+PDF('BINOMIAL',i,&p0,&n)*(i<=&y); pval_plus_minus=pval_plus_minus+PDF('BINOMIAL',i,&p0,&n)*(PDF('BINOMIAL',i,&p0,&n)<=PDF('BINOMIAL',&y,&p0,&n)); end; drop i; run; proc print;run; %mend binexact; /* Sample calls from lecture notes: %binexact(6,3,.667); %binexact(10,9,.5); */