Redundancy analysis (Stewart and Love, 1968) is a principal component analysis of multivariate regression predicted values. These first steps show the redundancy analysis results produced by PROC TRANSREG. The specification TSTANDARD=Z sets all variables to mean zero and variance one. METHOD=REDUNDANCY specifies redundancy analysis and outputs the redundancy variables to the OUT= data set. The MREDUNDANCY o-option outputs two sets of redundancy analysis coefficients to the OUT= data set.
The following statements produce Figure 101.61:
title 'Redundancy Analysis'; data x; input y1-y3 x1-x4; datalines; 6 8 8 15 18 26 27 1 12 16 18 9 20 8 5 6 15 20 17 29 31 6 9 15 14 10 16 22 7 5 12 14 6 13 9 3 6 7 2 14 26 22 3 5 9 13 18 10 22 6 3 11 3 15 22 29 6 3 7 10 20 21 27 7 5 9 8 10 12 18 ;
proc transreg data=x tstandard=z method=redundancy; model identity(y1-y3) = identity(x1-x4); output out=red mredundancy replace; run; proc print data=red(drop=Intercept); format _numeric_ 4.1; run;
Figure 101.61: Redundancy Analysis Example
Redundancy Analysis |
Obs | _TYPE_ | _NAME_ | y1 | y2 | y3 | x1 | x2 | x3 | x4 | Red1 | Red2 | Red3 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | SCORE | ROW1 | 0.5 | 0.6 | -0.8 | 0.6 | 0.9 | 1.0 | 0.7 | 0.2 | -0.5 | -0.9 |
2 | SCORE | ROW2 | -2.0 | 2.1 | 1.5 | 1.1 | -1.0 | 0.1 | -1.7 | 1.6 | -1.5 | 0.4 |
3 | SCORE | ROW3 | 0.0 | -0.1 | 1.2 | 1.4 | 0.7 | 1.5 | 1.2 | 1.0 | 0.8 | -1.3 |
4 | SCORE | ROW4 | 0.5 | 1.0 | 1.2 | 0.4 | -0.8 | -0.5 | 0.1 | 0.5 | 1.7 | 0.1 |
5 | SCORE | ROW5 | 1.0 | -0.4 | 0.3 | 0.4 | -1.6 | -1.0 | -1.6 | 1.0 | 0.1 | 0.9 |
6 | SCORE | ROW6 | -1.0 | -0.1 | -1.1 | -1.6 | 0.1 | 1.0 | 0.1 | -0.8 | -0.9 | 1.4 |
7 | SCORE | ROW7 | -1.0 | -0.4 | -0.6 | 0.2 | 0.9 | -1.5 | 0.1 | -1.0 | -0.4 | -1.3 |
8 | SCORE | ROW8 | 0.5 | -1.2 | 0.0 | -1.5 | 0.3 | 0.4 | 1.0 | -1.2 | 0.8 | 0.7 |
9 | SCORE | ROW9 | 0.5 | -1.2 | -1.1 | -0.3 | 1.3 | 0.2 | 0.7 | -1.0 | -0.9 | -0.8 |
10 | SCORE | ROW10 | 1.0 | -0.4 | -0.6 | -0.6 | -0.8 | -1.1 | -0.4 | -0.4 | 0.8 | 0.7 |
11 | M REDUND | Red1 | . | . | . | 0.7 | -0.6 | 0.4 | -0.1 | . | . | . |
12 | M REDUND | Red2 | . | . | . | 0.3 | -1.5 | -0.6 | 1.9 | . | . | . |
13 | M REDUND | Red3 | . | . | . | -0.7 | -0.7 | 0.3 | -0.3 | . | . | . |
14 | R REDUND | x1 | . | . | . | . | . | . | . | 0.8 | -0.0 | -0.6 |
15 | R REDUND | x2 | . | . | . | . | . | . | . | -0.6 | -0.2 | -0.7 |
16 | R REDUND | x3 | . | . | . | . | . | . | . | 0.1 | -0.2 | -0.1 |
17 | R REDUND | x4 | . | . | . | . | . | . | . | -0.5 | 0.3 | -0.5 |
The _TYPE_
=’SCORE’ observations of the Red1
–Red3
variables contain the redundancy variables. The nonmissing “M REDUND” values are coefficients for predicting the redundancy variables from the independent variables. The nonmissing “R REDUND” values are coefficients for predicting the independent variables from the redundancy variables.
The next steps show how to generate the same results manually. The data set is standardized, predicted values are computed, and principal components of the predicted values are computed. The following statements produce the redundancy variables, shown in Figure 101.62:
proc standard data=x out=std m=0 s=1; title2 'Manually Generate Redundancy Variables'; run; proc reg noprint data=std; model y1-y3 = x1-x4; output out=p p=ay1-ay3; run; quit; proc princomp data=p cov noprint std out=p; var ay1-ay3; run; proc print data=p(keep=Prin:); format _numeric_ 4.1; run;
Figure 101.62: Redundancy Analysis Example
Redundancy Analysis |
Manually Generate Redundancy Variables |
Obs | Prin1 | Prin2 | Prin3 |
---|---|---|---|
1 | 0.2 | -0.5 | -0.9 |
2 | 1.6 | -1.5 | 0.4 |
3 | 1.0 | 0.8 | -1.3 |
4 | 0.5 | 1.7 | 0.1 |
5 | 1.0 | 0.1 | 0.9 |
6 | -0.8 | -0.9 | 1.4 |
7 | -1.0 | -0.4 | -1.3 |
8 | -1.2 | 0.8 | 0.7 |
9 | -1.0 | -0.9 | -0.8 |
10 | -0.4 | 0.8 | 0.7 |
The following statements produce the coefficients for predicting the redundancy variables from the independent variables, shown in Figure 101.63:
proc reg data=p outest=redcoef noprint; title2 'Manually Create Redundancy Coefficients'; model Prin1-Prin3 = x1-x4; run; quit; proc print data=redcoef(keep=x1-x4); format _numeric_ 4.1; run;
Figure 101.63: Redundancy Analysis Example
Redundancy Analysis |
Manually Create Redundancy Coefficients |
Obs | x1 | x2 | x3 | x4 |
---|---|---|---|---|
1 | 0.7 | -0.6 | 0.4 | -0.1 |
2 | 0.3 | -1.5 | -0.6 | 1.9 |
3 | -0.7 | -0.7 | 0.3 | -0.3 |
The following statements produce the coefficients for predicting the independent variables from the redundancy variables, shown in Figure 101.64:
proc reg data=p outest=redcoef2 noprint; title2 'Manually Create Other Coefficients'; model x1-x4 = prin1-prin3; run; quit; proc print data=redcoef2(keep=Prin1-Prin3); format _numeric_ 4.1; run;
Figure 101.64: Redundancy Analysis Example
Redundancy Analysis |
Manually Create Other Coefficients |
Obs | Prin1 | Prin2 | Prin3 |
---|---|---|---|
1 | 0.8 | -0.0 | -0.6 |
2 | -0.6 | -0.2 | -0.7 |
3 | 0.1 | -0.2 | -0.1 |
4 | -0.5 | 0.3 | -0.5 |