@JacobSimonsen wrote: I sometime also deals with this problem. I have not found a way to plot the spline-curve created by the effect-estimates. I therefore only use the spline-feature in the effect-statement when I want to adjust for some covariate which own effect is not of interest. If I want to plot the spline, then I do all the coding wihout use of the effectstatement. That is (1) create the coefficients which will be used as regressors in phreg (or some other regression procedure), (2) from the estimates a plot dataset can be created and at last (3) plot the curves with proc gplot. It can be it can be done more easily, so I encourage others to come with better solutions. With some small modifications, it is also possible to use the code below to plot a time-dependent effect in a cox-regression. There are some matrix-calculations, and it is thefore neccesary to have run the matrix-package first. The matrixalgebra file which are included is the one that is attached this post: Here is an example: *k is is the number of knots; %let k=9; %include "" ; /*insert path to the matrix package */ option cmplib=work.func; /*this should be the same location as the one used in the matrix-package*/ *for this example I also simulate data; data simulation; array spl{%eval(&k.-1)}; array knots{&k.} _temporary_ (-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4) ; /*this is my knot-points*/ do j=1 to 10000; * a is my covariate, which is here some number between zero and one.; a=ranuni(-1)-0.5; *t is my survival time; t=-log(ranuni(-1))/(exp(-(a)**2)); *then create the spline-coefficients; ref=0; *0 is here my reference value; spl[1]=a-ref; do i=1 to &k.-2; spl[i+1]=max(a-knots,0)**3 -((knots[&k]-knots)/(knots[&k]-knots[&k-1]))*max(a-knots[&k.-1],0)**3 +((knots[&k-1]-knots)/(knots[&k]-knots[&k-1]))*max(a-knots[&k.],0)**3 -(max(ref-knots,0)**3 -((knots[&k]-knots)/(knots[&k]-knots[&k-1]))*max(ref-knots[&k.-1],0)**3 +((knots[&k-1]-knots)/(knots[&k]-knots[&k-1]))*max(ref-knots[&k.],0)**3); end; output; end; run; *because I also wants pointwise confidence-limits I put the covariance-matrix into a dataset "outest"; proc phreg data=simulation covout outest=outest; model t=spl1-spl%eval(&k.-1); run; data plot; array knots{&k.} _temporary_ (-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4) ; array spl{%eval(&k.-1)}; array variance{%eval(&k.-1),%eval(&k.-1)} _temporary_; array beta{%eval(&k.-1),1} _temporary_; array design{1,%eval(&k.-1)} _temporary_; array designt{%eval(&k.-1),1} _temporary_; array logest{1,1} _temporary_; array var{1,1} _temporary_; *read in the estimates; do until (eof); set outest end=eof; do i=1 to &k-1.; if _type_='PARMS' then beta[i,1]=spl; else variance[i,input(substr(_name_,4,length(_name_)-3),best.)]=spl; end; end; call show(variance); *create the curve and confidencelimits; ref=0; do a=-0.5 to 0.5 by 0.001; design[1,1]=a-ref; do i=1 to &k.-2; design[1,i+1]=max(a-knots,0)**3 -((knots[&k]-knots)/(knots[&k]-knots[&k-1]))*max(a-knots[&k.-1],0)**3 +((knots[&k-1]-knots)/(knots[&k]-knots[&k-1]))*max(a-knots[&k.],0)**3 -(max(ref-knots,0)**3 -((knots[&k]-knots)/(knots[&k]-knots[&k-1]))*max(ref-knots[&k.-1],0)**3 +((knots[&k-1]-knots)/(knots[&k]-knots[&k-1]))*max(ref-knots[&k.],0)**3); end; call trans(design,designt); call multiplicer(design,beta,logest); call multiplicer3(design,variance,designt,var); rr=exp(logest[1,1]); lower=exp(logest[1,1]-1.96*sqrt(var[1,1])); upper=exp(logest[1,1]+1.96*sqrt(var[1,1])); output; end; keep a rr lower upper; run; symbol1 i=join v=none l=1 c=black; symbol2 i=join v=none l=2 c=black; symbol3 i=join v=none l=2 c=black; proc gplot data=plot; plot (rr lower upper)*a/overlay; run; Hello, It has been a while since post appeared. I was recently doing to search for an approach to plot HR against a continuous variable and I came across this thread. You are referring to a matrix package attached to your post ("There are some matrix-calculations, and it is therefore necessary to have run the matrix-package first. The matrixalgebra file which are included is the one that is attached this post"). There does not seem to be any attachment. Could you re-post your message with the attachment? Or, if the matrix package is embedded in the post, could you point to that? Would greatly appreciate your help. Regards, Srini Rajagopalan
... View more