/* The macro variable varlist contains the regressor */ /* variables in the order that you desire. */ %let varlist=runtime age runpulse maxpulse weight; /* The macro variable depvar contains the dependent */ /* variable */ %let depvar=oxy; /* The macro variable dataset contains the name of the */ /* input SAS data set */ %let dataset=fitness; options ls=72; %macro rsqdelta(ds,dvar,vars); %let count=1; %let b=%str(&vars); %let z=%str( ); %let c=%str( ); proc reg data= &ds outest=est; INTERCEP:model &dvar=&z/adjrsq; %do %until( "&c" = "" ); %let c= %scan(&b,&count,%str( )); %let z=%str(&z &c); %let count=%eval(&count+1); %if "&c" ^= "" %then &c:model &dvar=&z/adjrsq; ; %end; %let count=1; %let b=%str(&vars); %let z=%str( ); %let c=%str( ); %do %until( "&c" = "" ); %let z=%str(&z &c); %let c= %scan(&b,&count,%str( )); proc glm data=&ds outstat=out&count noprint; model &dvar=&z/ss1; run; %let count=%eval(&count+1); %end; %do i=1 %to %eval(&count-1); data out&i; do while ( last ^= 1); set out&i end=last; end; output;keep f prob;stop; run; %end; data g; retain prevrsq .; set est; if _n_=1 then rsqdelta=.; else rsqdelta =_rsq_ - prevrsq; prevrsq=_rsq_; keep _model_ _rsq_ rsqdelta; run; data table; %do i=1 %to %eval(&count-1); set out&i; output; %end; data final; merge g table; run; proc print data=final; title1 "Change in R-square & F statistics as variables are added"; title2 "to the regression model"; run; %mend; data fitness; input age weight oxy runtime rstpulse runpulse maxpulse; datalines; 44 89.47 44.609 11.37 62 178 182 40 75.07 45.313 10.07 62 185 185 44 85.84 54.297 8.65 45 156 168 42 68.15 59.571 8.17 40 166 172 38 89.02 49.874 9.22 55 178 180 47 77.45 44.811 11.63 58 176 176 40 75.98 45.681 11.95 70 176 180 43 81.19 49.091 10.85 64 162 170 44 81.42 39.442 13.08 63 174 176 38 81.87 60.055 8.63 48 170 186 44 73.03 50.541 10.13 45 168 168 45 87.66 37.388 14.03 56 186 192 45 66.45 44.754 11.12 51 176 176 47 79.15 47.273 10.60 47 162 164 54 83.12 51.855 10.33 50 166 170 49 81.42 49.156 8.95 44 180 185 51 69.63 40.836 10.95 57 168 172 51 77.91 46.672 10.00 48 162 168 48 91.63 46.774 10.25 48 162 164 49 73.37 50.388 10.08 67 168 168 57 73.37 39.407 12.63 58 174 176 54 79.38 46.080 11.17 62 156 165 52 76.32 45.441 9.63 48 164 166 50 70.87 54.625 8.92 48 146 155 51 67.25 45.118 11.08 48 172 172 54 91.63 39.203 12.88 44 168 172 51 73.71 45.790 10.47 59 186 188 57 59.08 50.545 9.93 49 148 155 49 76.32 48.673 9.40 56 186 188 48 61.24 47.920 11.50 52 170 176 52 82.78 47.467 10.50 53 170 172 ; %rsqdelta(&dataset, &depvar, &varlist); run;