Example 1: StepwiseRegression

This example uses a data set from Draper and Smith (1981, pp. 629-630). Method compute is invoked to find the best regression for each subset size using the R^2 criterion. By default, stepwise regression is performed.


import com.imsl.stat.*;
import com.imsl.math.*;

public class StepwiseRegressionEx1 {

    public static void main(String[] args) throws Exception {
        double x[][] = {
            {7., 26., 6., 60.},
            {1., 29., 15., 52.},
            {11., 56., 8., 20.},
            {11., 31., 8., 47.},
            {7., 52., 6., 33.},
            {11., 55., 9., 22.},
            {3., 71., 17., 6.},
            {1., 31., 22., 44.},
            {2., 54., 18., 22.},
            {21., 47., 4., 26},
            {1., 40., 23., 34.},
            {11., 66., 9., 12.},
            {10.0, 68., 8., 12.}
        };

        double y[] = {
            78.5, 74.3, 104.3, 87.6, 95.9, 109.2, 102.7,
            72.5, 93.1, 115.9, 83.8, 113.3, 109.4
        };

        StepwiseRegression sr = new StepwiseRegression(x, y);
        sr.compute();

        PrintMatrix pm = new PrintMatrix();
        pm.setTitle("*** ANOVA *** ");
        pm.print(sr.getANOVA().getArray());

        StepwiseRegression.CoefficientTTests coefT = sr.getCoefficientTTests();
        double coef[][] = new double[4][4];
        for (int i = 0; i < 4; i++) {
            coef[i][0] = coefT.getCoefficient(i);
            coef[i][1] = coefT.getStandardError(i);
            coef[i][2] = coefT.getTStatistic(i);
            coef[i][3] = coefT.getPValue(i);
        }
        pm.setTitle("*** Coef *** ");
        pm.print(coef);
        pm.setTitle("*** Swept *** ");
        pm.print(sr.getSwept());
        pm.setTitle("*** History *** ");
        pm.print(sr.getHistory());
        pm.setTitle("*** VIF *** ");
        pm.print(sr.getCoefficientVIF());
        pm.setTitle("*** CovS *** ");
        pm.print(sr.getCovariancesSwept());
        System.out.println("*** Intercept ***   " + sr.getIntercept());
    }
}

Output

*** ANOVA *** 
        0      
 0      2      
 1     10      
 2     12      
 3  2,641.001  
 4     74.762  
 5  2,715.763  
 6  1,320.5    
 7      7.476  
 8    176.627  
 9      0      
10     97.247  
11     96.697  
12      2.734  
13      ?      
14      ?      

          *** Coef *** 
     0       1       2       3    
0   1.44   0.138   10.403  0      
1   0.416  0.186    2.242  0.052  
2  -0.41   0.199   -2.058  0.07   
3  -0.614  0.049  -12.621  0      

*** Swept *** 
   0   
0   1  
1  -1  
2  -1  
3   1  
4  -1  

*** History *** 
   0  
0  2  
1  0  
2  0  
3  1  
4  0  

*** VIF *** 
     0     
0   1.064  
1  18.78   
2   3.46   
3   1.064  

                 *** CovS *** 
     0        1         2        3        4     
0   0.003    -0.029    -0.946   0        1.44   
1  -0.029   154.72   -142.8     0.907   64.381  
2  -0.946  -142.8     142.302   0.07   -58.35   
3   0         0.907     0.07    0       -0.614  
4   1.44     64.381   -58.35   -0.614   74.762  

*** Intercept ***   103.09738163667471
Link to Java source.