turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- Analytics
- /
- Forecasting
- /
- plot nonlinear regression/equation onto a scatter ...

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

12-02-2015 04:56 PM

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

Accepted Solutions

Solution

12-03-2015
11:12 AM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

12-03-2015 11:12 AM

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;

All Replies

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

12-02-2015 06:01 PM - edited 12-03-2015 11:18 AM

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

Solution

12-03-2015
11:12 AM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

12-03-2015 11:12 AM

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;

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

01-26-2016 02:25 PM

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."