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
- /
- SAS Programming
- /
- Base SAS Programming
- /
- Change in R square after adding multiple variables...

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
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-02-2015 08:36 PM - edited 11-03-2015 11:11 AM

Hi all,

Consider the following basic example, where "Add" is used to add two variables to an existing regression equation:

```
proc reg;
model Y=x1 x2;
run;
add x3 x4;
print;
run;
```

The print command after the "add" shows the new model and its R square. However, it does not show the change (or delta) in R square from the first to the second model (as with full/nested models). It also does not provide a signficance test (specifically, an F test) to determine if the new variables provide a significant change in R2. How can I get SAS to provide the change in R square and the accompanying significance test from the first to the second model?

EDIT: Added request for significant test of change in R2.

Accepted Solutions

Solution

11-03-2015
07:42 PM

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

Posted in reply to jpwiega

11-03-2015 05:40 PM

You should get the proper tests with the **test** statement in **proc reg:**

```
proc reg data=pt8 edf outest=r2 plots=none;
Covariates: model jobSat= I IM A AM;
Linear: model jobSat= R RM I IM A AM;
LinTest: test R=0, RM=0;
Quadratic: model jobSat= R RM RM2 R2 RInt I IM A AM;
QuadTest: test RM2=0, R2=0, RInt=0;
run;
quit;
```

PG

All Replies

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

Posted in reply to jpwiega

11-02-2015 10:23 PM

If you give labels to your models :

```
proc reg data=sashelp.class edf outest=r2 plots=none;
partial: model weight = height;
full: model weight = height age;
run;
quit;
data _null_;
set r2(where=(_model_="partial"));
R2_partial = _RSQ_;
set r2(where=(_model_="full"));
R2_full = _RSQ_;
R2_diff = R2_full - R2_partial;
put (R2_:) (percentn6.1);
run;
```

PG

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

Posted in reply to PGStats

11-03-2015 11:08 AM - edited 11-03-2015 11:13 AM

Thanks @PGStats

I'm almost there, but two issues remain:

- Most importantly, I want to determine if there is a significant change in R2 from one model to the next--my fault for not specifying this earlier--I'll update the initial post momentarily. As such, I need not only the change in R2 from one model to the next, but an F statistic and p-value to determine whether the change after adding variables is significant.
- The output is presently in the log and not labeled. Is there a way to get formatted output?

Of note, here is the actual syntax I'm using, please build from it if possible. I'm adding to sets of variables to the initial equation. So there are 3 models and two comparisons for change in R-square:

```
proc reg data=pt8 edf outest=r2 plots=none;
Covariates: model jobSat= I IM A AM;
Linear: model jobSat= R RM I IM A AM;
Quadratic: model jobSat= R RM RM2 R2 RInt I IM A AM;
run;
quit;
data _null_;
set r2(where=(_model_="Covariates"));
R2_Covariates = _RSQ_;
set r2(where=(_model_="Linear"));
R2_Linear = _RSQ_;
set r2(where=(_model_="Quadratic"));
R2_Quadratic = _RSQ_;
R2_diff1 = R2_Linear - R2_Covariates;
R2_diff2 = R2_Quadratic - R2_Linear;
put (R2_:) (percentn6.1);
run;
```

Many thanks!

Solution

11-03-2015
07:42 PM

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

Posted in reply to jpwiega

11-03-2015 05:40 PM

You should get the proper tests with the **test** statement in **proc reg:**

```
proc reg data=pt8 edf outest=r2 plots=none;
Covariates: model jobSat= I IM A AM;
Linear: model jobSat= R RM I IM A AM;
LinTest: test R=0, RM=0;
Quadratic: model jobSat= R RM RM2 R2 RInt I IM A AM;
QuadTest: test RM2=0, R2=0, RInt=0;
run;
quit;
```

PG