BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
j10leung
Fluorite | Level 6

Hi everyone, 

 

I'm a bit embarrassed to ask this, but I'm really not understanding how to plot a nonlinear regression onto a scatter plot. 

 

Currently, I've learned how to use the PROC NLIN procedure in SAS and have been able to generate the same output from an online tutorial: http://www.ats.ucla.edu/stat/sas/faq/doseresponse.htm (yay!).  However, I'm running into a wall when I'm trying to figure out how well the data fits the parameters predicted by SAS.  I want to visually check the predicted variables just in case I need to adjust my starting parameters as indicated in my PARMS procedure.  

 

Here is the following syntax for plotting my data:

 

PROC IMPORT DATAFILE="C:/Users/jessica/Desktop/SAS/SASUniversityEdition/myfolders/Practice test data.xlsx"
OUT= Work.DoseResp
DBMS=XLSX
REPLACE;
SHEET="DoseResp";

 

PROC NLIN Data=DoseResp;
PARMS top = 68.875 bottom = 20.575 EC50 = 1 hill = 1;
MODEL response = top + (bottom - top) / (1 + (concentration / EC50)**hill);

 

data TestNLIN;
x=1;
do i=0 to 1000;
Response = 59.1022 + ( 27.0807 - 59.1022)/(1 + (x/0.8171)**12.4058);
output;
x=x+10;
end;

 

PROC SGPLOT data = TestNLIN;
scatter x = x y = Response;
yaxis values = (20 to 70 by 10);
xaxis values = (0 to 1000);

 

PROC SGPLOT data=DoseResp;
Scatter x=Concentration y=response;
yaxis values = (20 to 70 by 10);
xaxis values = (0 to 1000);
RUN;

 

Does anyone have a better way of plotting a nonlinear regression/plot onto a scatter plot?  Or any other means to visually check how well the data fits to the parameters estimated by SAS?

 

Much appreciated!

 

Jess

1 ACCEPTED SOLUTION

Accepted Solutions
j10leung
Fluorite | Level 6

 Thank you PG Stats!  That worked perfect!

 

Just in case someone else runs into the same problem as I did, I thought I would post my syntax.

 

*Import Excel file*

PROC IMPORT DATAFILE="C:/Users/jessica/Desktop/SAS/SASUniversityEdition/myfolders/Practice test data.xlsx"
OUT= Work.DoseResp
DBMS=XLSX
REPLACE;
SHEET="DoseResp";

 

*Set Data Set*

DATA pred;
DO concentration = 0 to 1000 by 10;
output;
end;

SET DoseResp;
SET DoseResp pred;
run;

 

*Use Nonlinear Regression to predict unknow parameters*
PROC NLIN Data=DoseResp;
PARMS top = 68.875 bottom = 20.575 EC50 = 1 hill = 1;
MODEL response = top + (bottom - top) / (1 + (concentration / EC50)**hill);
output out=DRgraph predicted=responsePred;
run;

 

*Plot data*

proc sort data=DRgraph; by concentration; run;

proc sgplot data=DRgraph;
scatter x=concentration y=response;
series x=concentration y=responsePred;
run;

 


Dose Response Image.png

View solution in original post

3 REPLIES 3
PGStats
Opal | Level 21

Add some data with missing response values before NLIN so that you get predicted values which you can than plot. Here is an outline:

 

data pred;
do concentration = 0 to 1000 by 10;
	output;
	end;
run;

data DR;
set DoseResp pred;
run;
 
PROC NLIN Data=DR;
PARMS top = 68.875 bottom = 20.575 EC50 = 1 hill = 1;
MODEL response = top + (bottom - top) / (1 + (concentration / EC50)**hill);
output out=DRgraph predicted=responsePred;
run;

proc sort data=DRgraph; by concentration; run;

proc sgplot data=DRgraph;
scatter x=concentration y=response;
series x=concentration y=responsePred;
run;

(untested)

PG
j10leung
Fluorite | Level 6

 Thank you PG Stats!  That worked perfect!

 

Just in case someone else runs into the same problem as I did, I thought I would post my syntax.

 

*Import Excel file*

PROC IMPORT DATAFILE="C:/Users/jessica/Desktop/SAS/SASUniversityEdition/myfolders/Practice test data.xlsx"
OUT= Work.DoseResp
DBMS=XLSX
REPLACE;
SHEET="DoseResp";

 

*Set Data Set*

DATA pred;
DO concentration = 0 to 1000 by 10;
output;
end;

SET DoseResp;
SET DoseResp pred;
run;

 

*Use Nonlinear Regression to predict unknow parameters*
PROC NLIN Data=DoseResp;
PARMS top = 68.875 bottom = 20.575 EC50 = 1 hill = 1;
MODEL response = top + (bottom - top) / (1 + (concentration / EC50)**hill);
output out=DRgraph predicted=responsePred;
run;

 

*Plot data*

proc sort data=DRgraph; by concentration; run;

proc sgplot data=DRgraph;
scatter x=concentration y=response;
series x=concentration y=responsePred;
run;

 


Dose Response Image.png
Rick_SAS
SAS Super FREQ

PGStats's solution is a particular case of the general problem of scoring a model on a grid of regularly spaced points. For other options, see  "Techniques for scoring a regression model in SAS."

sas-innovate-white.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Save $200 when you sign up by March 14!

Register now!

Discussion stats
  • 3 replies
  • 5259 views
  • 0 likes
  • 3 in conversation