SAS中文论坛

标题: 在 phreg 里编程的问题 [打印本页]

作者: shiyiming    时间: 2009-10-6 05:16
标题: 在 phreg 里编程的问题
[code:5on916lw]/*code 1*/
proc phreg data=VLid13;       
        model  TimeTo1stRebound*Rebound1(0)=Xblip1-Xblip5 Xblip0/risklimits;
        array XblipAry{6} Xblip0-Xblip5;
   if blip1=0 then do;
                do i=1 to 6;
                        XblipAry{i}=0.0;
                        end;
                        XblipAry{1}=1.0;
        end;
      else if TimeTo1stRebound<TimeToBlip then do;
                        do i=1 to 6;
                                                XblipAry{i}=0.0;
                        end;
                        XblipAry{1}=1.0;
                end;   
                        else  do;
                 if VLblip<199 then do;
                                        do i=1 to 6;
                                                XblipAry{i}=0.0;
                                        end;
                                        XblipAry{2}=1.0;               
                                end;
                                        else if VLblip<399 then do;
                                                do i=1 to 6;
                                                        XblipAry{i}=0.0;                                                                       
                                                end;
                                                XblipAry{3}=1.0;
                                        end;
                                                else if VLblip<599 then do;
                                                        do i=1 to 6;
                                                                XblipAry{i}=0.0;                                                                       
                                                        end;
                                                        XblipAry{4}=1.0;       
                                                end;
                                                        else if VLblip<799 then do;
                                                                do i=1 to 6;
                                                                        XblipAry{i}=0.0;                                                                       
                                                                end;
                                                                XblipAry{5}=1.0;
                                                        end;
                                                                else do;
                                                                        do i=1 to 6;
                                                                        XblipAry{i}=0.0;                                                                       
                                                                        end;
                                                                        XblipAry{6}=1.0;
                                                                end;
                                end;
run;
/*code 2*/
proc phreg data=VLid13;
        model  TimeTo1stRebound*Rebound1(0)=Xblip1-Xblip5 Xblip0/risklimits;
        array XblipAry{6} Xblip0-Xblip5;
        array tAry{7} _temporary_ (0. 50. 199. 399. 599. 799. 1000.);
        do i=1 to 6;
                XblipAry{i}=0.0;
        end;
   if blip1=0 then XblipAry{1}=1.0;
      else if TimeTo1stRebound<TimeToBlip then XblipAry{1}=1.0;
                        else  do;
                  do i=1 to 6;
                                        if VLblip >= tAry{i} then if  VLblip < tAry{i+1} then do;
                                                XblipAry{i}=1;       
                                                return;
                                        end;
                                end;
                        end;
run;[/code:5on916lw]

问题是code 1 和code 2 结果我认为应该相同。code 1 结果好像没有问题,code 2 Xblip1-Xblip5 是 缺失值,只有Xblip0.
我百思不得其解。恳求大家的帮助!!!
作者: shiyiming    时间: 2009-10-7 07:04
标题: Re: 在 phreg 里编程的问题
[code:3bef4m6r]/*code 3*/
proc phreg data=VLid13;
   model  TimeTo1stRebound*Rebound1(0)=Xblip1-Xblip5 Xblip0/risklimits;
   array XblipAry{6} Xblip0-Xblip5;
   do i=1 to 6;  XblipAry[i]=0.0; end;
   if ^blip1 then Xblip0=1.0;
      else if TimeTo1stRebound < TimeToBlip then Xblip0=1.0;
        else  do;
          if VLblip<199.0 then Xblip1=1.0; else  if VLblip<399.0 then Xblip2=1.0; else if VLblip<599.0 then Xblip3=1.0; else if VLblip<799.0 then Xblip4=1.0;
             else if VLblip<1000.0 then Xblip5=1.0;
        end;
run;
[/code:3bef4m6r]
花了很长时间在此。这个程序可以执行。只是把_temporary_ array给打开用了。问一问:是否_temporary_ array在phreg里不能用呢?有没有人知道这种过程的debugging方法呢?




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2