How use PROC SGPLOT to display the slope and intercept of a regression line
This post was kindly contributed by The DO Loop - go there to comment and to read the full post. |
A SAS user asked an interesting question on the SAS/GRAPH and ODS Graphics Support Forum. The question is: Does PROC SGPLOT support a way to display the slope of the regression line that is computed by the REG statement? Recall that the REG statement in PROC SGPLOT fits and displays a line through points in a scatter plot.
In SAS 9.3, you cannot obtain this information directly from PROC SGPLOT. Instead, you need to use PROC REG to compute this information. You can use the following steps to create a plot that displays the parameter estimates:
- Use PROC REG to compute the parameter estimates (slope and intercept). Save this information to a SAS data set.
- Use a DATA step to create macro variables that contain the parameter estimates.
- Use the INSET statement in PROC SGPLOT to add this information to the fitted scatter plot\.
Step 1: Save the parameter estimates
You can use the OUTEST= option or the ODS OUPUT statements to save the parameter estimates to a SAS data set. In the following example, the ODS OUTPUT statement saves the ParameterEstimates table to the PE data set:
ods graphics off; proc reg data=sashelp.class; model weight = height; ods output ParameterEstimates=PE; run;
Step 2: Create macro variables
In the PE data set, the ESTIMATE variable contains the parameter estimates. The first row contains the estimate for the intercept term; the second row contains the estimate for the slope. The following DATA step saves these into macro variables:
data _null_; set PE; if _n_ = 1 then call symput('Int', put(estimate, BEST6.)); else call symput('Slope', put(estimate, BEST6.)); run;
Step 3: Use the INSET Statement to display the parameter estimates
You can now create the plot by using PROC SGPLOT. Use the INSET statement to display the parameter estimates in a text box:
proc sgplot data=sashelp.class noautolegend; title "Regression Line with Slope and Intercept"; reg y=weight x=height; inset "Intercept = &Int" "Slope = &Slope" / border title="Parameter Estimates" position=topleft; run;
Of course, you can use a similar strategy to display any other relevant statistics on the scatter plot. There is an example in the SAS/STAT User’s Guide that shows other fit statistics, as well as how to use Greek letters and superscripts in the inset text. You can also display a formula that shows the equation of a displayed line.
This post was kindly contributed by The DO Loop - go there to comment and to read the full post. |