The %ProvideSurvivalMacros macro and the macros and macro variables that it provides have the following properties:
Many options, including most of the options that are specified in multiple places in the templates, are extracted to macro variables.
The %CompileSurvivalTemplates macro provides the main body of the two templates. You can call it to compile the templates after making changes.
The template Stat.Lifetest.Graphics.ProductLimitSurvival
provides the survival template when the at-risk table is inside the body of the plot.
The template Stat.Lifetest.Graphics.ProductLimitSurvival2
provides the survival template when the at-risk table is outside the body of the plot.[19]
The two templates share many statements, and a macro %DO loop creates both versions.
The portion of the templates for the table for the p-values is stored in the macro %pValue.
The portion of the templates for the single-stratum case is stored in the macro %SingleStratum.
The portion of the templates for the multiple-strata case is stored in the macro %MultipleStrata.
The macro %AtRiskLatticeStart begins the two-cell lattice that contains the plot above the table when the at-risk table is outside the body of the plot.
The macro %AtRiskLatticeEnd ends the two-cell lattice that contains the plot and the table when the at-risk table is outside the body of the plot.
Some empty macros (%StmtsBeginGraph, %StmtsTop, and %StmtsBottom) are provided to enable you to add statements and options to strategic places in the templates.
The %SurvTabHeader, %SurvivalTable, and %SurvivalSummaryTable macros enable you to easily add more GTL statements to the Kaplan-Meier plot templates to display event information for each stratum.
This organization makes it easy to identify the relevant parts of the templates, modify these parts, and recompile the templates. A small portion of the %ProvideSurvivalMacros macro follows:
%macro ProvideSurvivalMacros; %global atriskopts bandopts censored censorstr classopts graphopts groups insetopts legendopts ntitles stepopts tiplabel tips titletext0 titletext1 titletext2 xoptions yoptions; %let TitleText0 = METHOD " Survival Estimate"; %let TitleText1 = &titletext0 " for " STRATUMID; %let TitleText2 = &titletext0 "s"; /* plural: Survival Estimates */ %let yOptions = label="Survival Probability" shortlabel="Survival" linearopts=(viewmin=0 viewmax=1 tickvaluelist=(0 .2 .4 .6 .8 1.0)); %let xOptions = shortlabel=XNAME offsetmin=.05 linearopts=(viewmax=MAXTIME tickvaluelist=XTICKVALS tickvaluefitpolicy=XTICKVALFITPOL); . . . %macro CompileSurvivalTemplates; . . . %mend; %macro pValue; . . . %mend; %macro SingleStratum; . . . %mend; %macro MultipleStrata; . . . %mend; . . . %CompileSurvivalTemplates %mend;
[19] The macros do not affect any graph that uses graph templates other than the two templates that are modified here. The macrosdo
not affect the STRATA=PANEL plot that uses the template Stat.Lifetest.Graphics.ProductLimitSurvivalPanel
or the failure plot that uses the template Stat.Lifetest.Graphics.ProductLimitFailure
.