proc phreg data = dm_mty nosummary;
class sex (ref='F') ageg(ref='<30') / param = ref;
model ft*dead(0) = sex ageg xcvd1;
if cvd1=1 & surv_cvd1 < ft then xcvd1=1; else xcvd1=0;
run;
I ran the same program by strata case_phin, without adjusting sex and age. it worked. but I select a subgroup data, no strata, but adjusting sex and age, it just run and run ... no stop.
I need the results for tomorrow's presentation. now I am panic.... Thank you.
sas 9.2. The if statemetn is required for this model. the variable is time dependent. I have run this model with STRATA. It worked. it just continue running when strata is removed.
If you can stratify then you can put the IF statement outside the PROC. That is, essentially, what stratification does.
What exactly are you trying to do?
Don't panic. There is a good trick you can use.
Because you define your covariate inside phreg the algorithm it use will change to a slower algorithm were calculation speed is proportional to N^2. (N=number of events).
What you can do is to aggregate your data on riskset, then you get a dataset with a timevariable that indicate the time of the riskset. then you can define your covariate in a dataset before using phreg. calculation time of Phreg will then only be proportional to N. It is not that simple, but you can use my macro Here: how to speed up phreg.
Using the macro your program will be much like this example:
data simulation;
do covariate1=0 to 1;
do covariate2=0 to 1;
do i=1 to 100;
*the timevariables are created such that ties will happens often;
t=floor(-1000*log(ranuni(-1))/exp(0.1*(covariate1=1)+0.2*(covariate2=1)))/10+0.1;
*a censoring variable c;
c=-100*log(ranuni(-1));
*events happens if survival time are less than censoring time;
event=(t<c);
exit=min(t,c);
entry=0;
output;
end;
end;
end;
drop i t c;
run;
quit;
*Example , a timedependent effect;
proc phreg data=simulation nosummary;
covariate1_1=(exit<=5)*covariate1;
covariate1_2=(exit>5)*covariate1;
model (entry exit)*event(0)= covariate1_1 covariate1_2;
run;
*equivalent to:;
%coxaggregate(data=simulation,output=dataout,entry=entry,exit=exit,event=event,covariate=covariate1);
data dataout;
set dataout;
more5=(time>5);
run;
proc phreg data=dataout nosummary;
class covariate1 more5/param=glm ;
model dummytime*dummytime(2)= covariate1*more5 ;
hazardratio covariate1/ at( more5=all);
strata time ;
weight weight;
run;
Thank you. It is extremely helpful. I will figure out the maicro and let you know. Thanks again for the timely response.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.
Find more tutorials on the SAS Users YouTube channel.