标题: 在 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方法呢?