DATA Step, Macro, Functions and more

Change in R square after adding multiple variables to a regression equation and significance test

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 11
Accepted Solution

Change in R square after adding multiple variables to a regression equation and significance test

[ Edited ]

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
Respected Advisor
Posts: 4,649

Re: Change in R square after adding multiple variables to a regression equation

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

View solution in original post


All Replies
Respected Advisor
Posts: 4,649

Re: Change in R square after adding multiple variables to a regression equation

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
Occasional Contributor
Posts: 11

Re: Change in R square after adding multiple variables to a regression equation

[ Edited ]

Thanks @PGStats

 

I'm almost there, but two issues remain:

  1. 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.
  2. 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
Respected Advisor
Posts: 4,649

Re: Change in R square after adding multiple variables to a regression equation

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
☑ This topic is SOLVED.

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

Discussion stats
  • 3 replies
  • 269 views
  • 0 likes
  • 2 in conversation