/*步骤1：采用proc seqdesign过程进行序贯设计*/
proc seqdesign altref=0.32                /* altref指定两组率预期差值为0.32*/
boundaryscale=mle                      /* 指定界值尺度为最大似然估计*/
plots=boundary(hscale=samplesize);        /*绘制界值图，并指定横坐标显示样本量*/
design method=obf                      /* design语句指定method为O’Brien-Fleming法*/
nstages=3                              /*指定阶段数为3*/   
alpha=0.05                             /*指定一类错误概率为0.05*/
beta=0.1                               /*指定二类错误概率为0.1*/
alt=twosided;                           /*指定检验方式为双侧*/
samplesize model=twosamplefreq(nullprop=0.30 test=prop);
/*指定是对两组率做比较，nullprop指定对照组的率为0.3，test指明用两组率的差进行检验*/
ods output boundary=bound;            /*将界值信息输出到数据集bound，以备后用*/
run;
/*步骤2：数据输入，并根据原数据集产生含1、2阶段累积数据的2个数据集*/
data example12_4;
input group stage y@@;  
/*group=0表示安慰剂，=1表示试验药；stage表示3个阶段；y=1表示有效，=0表示无效*/
cards;
0	1	0	0	2	0	0	3	0
0	1	1	0	2	1	0	3	0
0	1	0	0	2	1	0	3	0
0	1	0	0	2	0	0	3	1
0	1	1	0	2	0	0	3	0
0	1	0	0	2	1	0	3	1
0	1	1	0	2	0	0	3	0
0	1	0	0	2	0	0	3	0
0	1	0	0	2	0	0	3	0
0	1	0	0	2	0	0	3	0
0	1	1	0	2	0	0	3	1
0	1	0	0	2	1	0	3	0
0	1	0	0	2	0	0	3	0
0	1	0	0	2	0	0	3	0
0	1	1	0	2	1	0	3	1
0	1	0	0	2	.	0	3	0
1	1	1	1	2	0	1	3	1
1	1	1	1	2	1	1	3	1
1	1	0	1	2	0	1	3	1
1	1	1	1	2	1	1	3	1
1	1	0	1	2	1	1	3	1
1	1	1	1	2	0	1	3	1
1	1	1	1	2	1	1	3	1
1	1	1	1	2	0	1	3	1
1	1	0	1	2	1	1	3	0
1	1	1	1	2	1	1	3	0
1	1	1	1	2	1	1	3	0
1	1	0	1	2	1	1	3	0
1	1	1	1	2	0	1	3	0
1	1	0	1	2	1	1	3	0
1	1	1	1	2	1	1	3	1
1	1	0	1	2	.	1	3	0
;
/*下面3行产生2个数据集，分别为第1、2阶段的累积数据*/
data stage1(where=(stage=1)) stage2(where=(stage<=2));
set example12_4;
run;
/*步骤3：对第1阶段的数据进行参数估计，并将结果输出到数据集中*/
/*下面4行利用proc genmod过程产生组别的参数估计值，并将其输出到数据集parm1*/
proc genmod desc data=stage1;
model y=group;
ods output parameterestimates=parm1;
run;
/*下面7行产生含参数估计、标准误、当前阶段(_stage_)、统计尺度(_scale_)的数据集，其中_stage_指定为1，_scale_指定为’mle’，即最大似然估计 */
data parm1;
set parm1;
if parameter='group';
keep parameter estimate stderr _stage_ _scale_;
_stage_=1;
_scale_='mle';
run;
/*步骤4：利用proc seqtest过程导入界值信息与参数估计信息，绘制界值图*/
proc seqtest boundary=bound                /*导入包含界值信息的数据集*/
parms(testvar=group)=parm1                 /*导入包含参数估计值的数据集*/
boundaryscale=mle                         /*指定统计尺度为最大似然估计*/
nstages=3;                                /*指定总阶段数*/
ods output test=test1;                       /*输出含第1阶段界值信息的数据集*/
run;
/*步骤5：进入第2阶段继续分析*/
proc genmod desc data=stage2;
model y=group;
ods output parameterestimates=parm2;
run;
data parm12;
set parm2;
if parameter ='group';
keep parameter estimate stderr _stage_ _scale_;
_stage_=2;
_scale_='mle';
run;
proc seqtest boundary=test1                    /*导入包含界值信息的数据集*/
parms(testvar=group)=parm12                   /*导入包含参数估计值的数据集*/
boundaryscale=mle
nstages=3;                                  /*指定总阶段数*/
ods output test=test2;                         /*输出含第2阶段界值信息的数据集*/
run;
