SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 783|回复: 1
打印 上一主题 下一主题

在 phreg 里编程的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-10-6 05:16:03 | 只看该作者

在 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.
我百思不得其解。恳求大家的帮助!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-10-7 07:04:46 | 只看该作者

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方法呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 01:04 , Processed in 0.114178 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表