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 criterion. By default, stepwise regression is performed.
using System; using Imsl; using Imsl.Math; using Imsl.Stat; public class StepwiseRegressionEx1 { public static void Main(System.String[] args) { double[,] x = {{7.0, 26.0, 6.0, 60.0}, {1.0, 29.0, 15.0, 52.0}, {11.0, 56.0, 8.0, 20.0}, {11.0, 31.0, 8.0, 47.0}, {7.0, 52.0, 6.0, 33.0}, {11.0, 55.0, 9.0, 22.0}, {3.0, 71.0, 17.0, 6.0}, {1.0, 31.0, 22.0, 44.0}, {2.0, 54.0, 18.0, 22.0}, {21.0, 47.0, 4.0, 26}, {1.0, 40.0, 23.0, 34.0}, {11.0, 66.0, 9.0, 12.0}, {10.0, 68.0, 8.0, 12.0}}; double[] y = new double[]{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(); PrintMatrixFormat pmf = new PrintMatrixFormat(); pmf.NumberFormat = "0.000"; pm.SetTitle("*** ANOVA *** "); pm.Print(sr.ANOVA.GetArray()); StepwiseRegression.CoefficientTTestsValue coefT = sr.CoefficientTTests; 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(pmf, coef); pm.SetTitle("*** Swept *** "); pm.Print(sr.Swept); pm.SetTitle("*** History *** "); pm.Print(sr.History); pm.SetTitle("*** VIF *** "); pm.Print(sr.CoefficientVIF); pm.SetTitle("*** CovS *** "); pm.Print(pmf, sr.CovariancesSwept); Console.WriteLine("*** Intercept *** " + sr.Intercept); } }
*** ANOVA *** 0 0 2 1 10 2 12 3 2641.00096476634 4 74.7621121567356 5 2715.76307692308 6 1320.50048238317 7 7.47621121567356 8 176.626963081888 9 1.58106023181439E-08 10 97.2471047716931 11 96.6965257260317 12 2.73426612012685 13 NaN 14 NaN *** Coef *** 0 1 2 3 0 1.440 0.138 10.403 0.000 1 0.416 0.186 2.242 0.052 2 -0.410 0.199 -2.058 0.070 3 -0.614 0.049 -12.621 0.000 *** 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.0641052101769 1 18.7803086409578 2 3.45960147891528 3 1.0641052101769 *** CovS *** 0 1 2 3 4 0 0.003 -0.029 -0.946 0.000 1.440 1 -0.029 154.720 -142.800 0.907 64.381 2 -0.946 -142.800 142.302 0.070 -58.350 3 0.000 0.907 0.070 0.000 -0.614 4 1.440 64.381 -58.350 -0.614 74.762 *** Intercept *** 103.097381636675Link to C# source.