Data visualization with SAS programming

Can Proc SGPlot generate the slope value of a regression line?

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 5
Accepted Solution

Can Proc SGPlot generate the slope value of a regression line?

I'm using proc sgplot with the reg option to generate a number of related plots.  Is there a way to get proc sgplot to generate the slope of the regression line for me, so that I can compare the slopes of different plots?  Or do I have to go run PROC REG? separately to have the system calculate the slope? 


Accepted Solutions
Solution
‎02-22-2013 11:45 AM
SAS Employee
Posts: 980

Re: Can Proc SGPlot generate the slope value of a regression line?

Here's an example using gplot's "regeqn" option. 

I'll have to let someone else answer whether sgplot has such an option.

proc sort data=sashelp.class out=foo;

by sex;

run;

symbol1 value=dot interpol=rl;

proc gplot data=foo;

by sex;

plot height*weight / regeqn;

run;

foo.png

View solution in original post


All Replies
Super User
Posts: 19,093

Re: Can Proc SGPlot generate the slope value of a regression line?

GPLOT will, but I'm not sure about sgplot

Solution
‎02-22-2013 11:45 AM
SAS Employee
Posts: 980

Re: Can Proc SGPlot generate the slope value of a regression line?

Here's an example using gplot's "regeqn" option. 

I'll have to let someone else answer whether sgplot has such an option.

proc sort data=sashelp.class out=foo;

by sex;

run;

symbol1 value=dot interpol=rl;

proc gplot data=foo;

by sex;

plot height*weight / regeqn;

run;

foo.png

PROC Star
Posts: 1,291

Re: Can Proc SGPlot generate the slope value of a regression line?

Since PROC REG calls SGRENDER in the background when you have ODS graphics on, I had hoped it would be easy to get the slope on the graph from PROC REG.

I tried  with:

proc reg data=sashelp.class plots=FitPlot(stats=all);
  model height=weight;
  ods select FitPlot;
run;

And while it gives lots of statistics, slope isn't one of them.

regplot.jpg

I suppose you might be able to get it from reg if you mucked about with Stat.REG.Graphics.Fit.

Occasional Contributor
Posts: 5

Re: Can Proc SGPlot generate the slope value of a regression line?

Thanks for all of your help and suggestions.

Since I already had all of my "proc sgplot" code written out, and since sgplot apparently does NOT have a way to generate the slope, I just did what I needed in a brute force manner as shown here: 

For each plot of interest, I used proc sgplot to get my plot with confidence intervals: 

title "Scatter Plot with Confidence Interval - PMC Non-Hispanics, Dx = Normal";

proc sgplot data=allpmc3;

where short_dx = "Normal";

reg y=mmsetotal x=frstotal / cli ;

yaxis values= (0 to 30 by 5);

xaxis values = (0 to 55 by 5);

run;

quit;

Then I did a Proc Rec using 'noprint', but with the OUTEST keyword to create a dataset containing the needed data:

proc reg data=allpmc3 noprint outest=PMC_norm;

where short_dx = "Normal";

model mmsetotal = frstotal;

run;

quit;

Then I modified the dataset created by OUTEST so that it provided the info in the format I needed:

data PMC_norm2;   

set PMC_norm;

rename frstotal = slope;

group = "PMC Normal";

keep group intercept frstotal;

run;

Finally, once I had repeated the above steps for multiple plots and groupings, I just put all my datasets together so that I could print a nice neat table of intercepts and slopes:

data eq_params;

length group $12;

    set metab_ad2 metab_mci2 metab_norm2

        pmc_ad2 pmc_mci2 pmc_norm2;

run;

proc print data=eq_params;

run;

SAS Super FREQ
Posts: 3,624

Re: Can Proc SGPlot generate the slope value of a regression line?

You can do the following:

(1) call PROC REG,

(2) create a macro variable with the parameter estimate (slope), and

(3) call PROC SGPLOT and use the INSET statement to put the slope on the graph. No need to modify any templates:

For an example, see SAS/STAT(R) 9.3 User's Guide

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 1716 views
  • 3 likes
  • 5 in conversation