/*-----------------------------------------------------------------
S A S S A M P L E L I B R A R Y
NAME: TEMPLEX1
TITLE: Documentation Example 1 for Template Modification
PRODUCT: STAT
SYSTEM: ALL
KEYS: graphics, ods
PROCS:
DATA:
SUPPORT: saswfk UPDATE: July 25, 2011
REF: ods graphics
MISC:
NOTES: This sample provides the DATA step and PROC code
from the chapter "ODS Graphics Template Modification." It
does not provide most of the ODS statements and style
changes that are in the chapter. Rather, this sample
provides code that can be run in one large batch to make
all of the graphs in the chapter. If destinations were
repeatedly opened and closed, as in the chapter, then
output would be lost and rewritten. Note that you should
not specify destination style changes without first
closing a destination. Changing the style of the output
without first closing the destination will not work
as you might expect. Do not do the following:
ODS HTML STYLE=STATISTICAL;
. . . code . . .
ODS HTML STYLE=DEFAULT;
. . . code . . .
ODS HTML STYLE=ANALYSIS;
. . . code . . .
Instead, do the following:
ODS HTML STYLE=STATISTICAL;
. . . code . . .
ODS HTML CLOSE;
ODS HTML STYLE=DEFAULT;
. . . code . . .
ODS HTML CLOSE;
ODS HTML STYLE=ANALYSIS;
. . . code . . .
ODS HTML CLOSE;
Note that several steps are commented out in this sample,
because they create large volumes of output. To run those
steps, remove the comments.
-----------------------------------------------------------------*/
data stack;
input x1 x2 x3 y @@;
datalines;
80 27 89 42 80 27 88 37 75 25 90 37 62 24 87 28
62 22 87 18 62 23 87 18 62 24 93 19 62 24 93 20
58 23 87 15 58 18 80 14 58 18 89 14 58 17 88 13
58 18 82 11 58 19 93 12 50 18 89 8 50 18 86 7
50 19 72 8 50 19 79 8 50 20 80 9 56 20 82 15
70 20 91 15
;
ods trace on;
ods graphics on;
proc robustreg data=stack plots=qqplot;
ods select QQPlot;
model y = x1 x2 x3;
run;
ods trace off;
proc template;
source Stat.Robustreg.Graphics.QQPlot;
run;
proc template;
define statgraph Stat.Robustreg.Graphics.QQPlot;
notes "Q-Q Plot for Standardized Robust Residuals";
dynamic _DEPLABEL Residual _byline_ _bytitle_ _byfootnote_;
BeginGraph;
ENTRYTITLE "Q-Q Plot of Residuals for " _DEPLABEL;
Layout Overlay / yaxisopts=(label="Standardized Robust Residual")
xaxisopts=(label="Quantile");
SCATTERPLOT y=eval (SORT(DROPMISSING(RESIDUAL))) x=eval (
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) / primary=true
markerattrs=GRAPHDATADEFAULT
rolename=(q=eval(
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) s=eval (SORT(DROPMISSING(RESIDUAL))))
tip=(q s) tiplabel=(q= "Quantile" s="Residual");
lineparm slope=eval (STDDEV(RESIDUAL)) Y=eval (MEAN(RESIDUAL)) X=0 /
clip=false lineattrs=GRAPHREFERENCE extend=true;
EndLayout;
if (_BYTITLE_)
entrytitle _BYLINE_ / textattrs=GRAPHVALUETEXT;
else
if (_BYFOOTNOTE_)
entryfootnote halign=left _BYLINE_;
endif;
endif;
EndGraph;
end;
run;
proc template;
define statgraph Stat.Robustreg.Graphics.QQPlot;
notes "Q-Q Plot for Standardized Robust Residuals";
dynamic _DEPLABEL Residual _byline_ _bytitle_ _byfootnote_;
BeginGraph;
entrytitle "Analysis of Residuals";
Layout Overlay /
yaxisopts=(label=("Standardized Robust Residual for " _DEPLABEL))
xaxisopts=(label="Quantile");
SCATTERPLOT y=eval (SORT(DROPMISSING(RESIDUAL))) x=eval (
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) / primary=true
markerattrs=GRAPHDATADEFAULT
rolename=(q=eval(
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) s=eval (SORT(DROPMISSING(RESIDUAL))))
tip=(q s) tiplabel=(q= "Quantile" s="Residual");
lineparm slope=eval (STDDEV(RESIDUAL)) Y=eval (MEAN(RESIDUAL)) X=0 /
clip=false lineattrs=GRAPHREFERENCE extend=true;
EndLayout;
if (_BYTITLE_)
entrytitle _BYLINE_ / textattrs=GRAPHVALUETEXT;
else
if (_BYFOOTNOTE_)
entryfootnote halign=left _BYLINE_;
endif;
endif;
EndGraph;
end;
run;
proc robustreg data=stack plots=qqplot;
ods select QQPlot;
model y = x1 x2 x3;
run;
proc template;
delete Stat.Robustreg.Graphics.QQPlot / store=sasuser.templat;
run;
proc template;
define statgraph Stat.Robustreg.Graphics.QQPlot;
notes "Q-Q Plot for Standardized Robust Residuals";
dynamic _DEPLABEL Residual _byline_ _bytitle_ _byfootnote_;
BeginGraph;
entrytitle "Analysis of Residuals";
Layout Overlay /
yaxisopts=(label=("Standardized Robust Residual for " _DEPLABEL))
xaxisopts=(label="Quantile");
SCATTERPLOT y=eval (SORT(DROPMISSING(RESIDUAL))) x=eval (
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) / primary=true
markerattrs=GraphDataDefault(symbol=CircleFilled)
rolename=(q=eval(
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) s=eval (SORT(DROPMISSING(RESIDUAL))))
tip=(q s) tiplabel=(q= "Quantile" s="Residual");
lineparm slope=eval (STDDEV(RESIDUAL)) Y=eval (MEAN(RESIDUAL)) X=0 /
clip=false lineattrs=GraphReference(color=red pattern=dash)
extend=true;
EndLayout;
if (_BYTITLE_)
entrytitle _BYLINE_ / textattrs=GRAPHVALUETEXT;
else
if (_BYFOOTNOTE_)
entryfootnote halign=left _BYLINE_;
endif;
endif;
EndGraph;
end;
run;
proc robustreg data=stack plots=qqplot;
ods select QQPlot;
model y = x1 x2 x3;
run;
proc template;
define statgraph Stat.Robustreg.Graphics.QQPlot;
notes "Q-Q Plot for Standardized Robust Residuals";
dynamic _DEPLABEL Residual _byline_ _bytitle_ _byfootnote_;
BeginGraph;
entrytitle "Analysis of Residuals";
Layout Overlay /
yaxisopts=(gridDisplay=Auto_On
linearopts=(tickvaluelist=(-4 -3 -2 -1 0 1 2))
label=("Standardized Robust Residual for " _DEPLABEL))
xaxisopts=(gridDisplay=Auto_On label="Quantile");
SCATTERPLOT y=eval (SORT(DROPMISSING(RESIDUAL))) x=eval (
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) / primary=true
markerattrs=GraphDataDefault(symbol=CircleFilled)
rolename=(q=eval(
PROBIT((NUMERATE(SORT(DROPMISSING(RESIDUAL))) -0.375)/(0.25 +
N(RESIDUAL)))) s=eval (SORT(DROPMISSING(RESIDUAL))))
tip=(q s) tiplabel=(q= "Quantile" s="Residual");
lineparm slope=eval (STDDEV(RESIDUAL)) Y=eval (MEAN(RESIDUAL)) X=0 /
clip=false lineattrs=GraphReference(color=red pattern=dash)
extend=true;
EndLayout;
if (_BYTITLE_)
entrytitle _BYLINE_ / textattrs=GRAPHVALUETEXT;
else
if (_BYFOOTNOTE_)
entryfootnote halign=left _BYLINE_;
endif;
endif;
EndGraph;
end;
run;
proc robustreg data=stack plots=qqplot;
ods select QQPlot;
model y = x1 x2 x3;
run;
proc template;
delete Stat.Robustreg.Graphics.QQPlot / store=sasuser.templat;
run;
/*
proc template;
source Styles.HTMLBlue / expand;
run;
*/
proc template;
define style Styles.MyGrids;
parent=styles.HTMLBlue;
class GraphGridLines /
displayopts = "on"
linethickness = 1px
linestyle = 1
contrastcolor = GraphColors('ggrid')
color = GraphColors('ggrid');
end;
run;
/*
ods graphics on;
ods listing style=mygrids;
*/
proc robustreg data=stack plots=qqplot;
ods select QQPlot;
model y = x1 x2 x3;
run;