// g02ef Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02EFE { static string datafile = "ExampleData/g02efe.d"; static void Main(String[] args) { if (args.Length == 1) { datafile = args[0]; } StartExample(); } public static void StartExample() { try { G02.G02EF_MONFUN g02efhG02EFF = new G02.G02EF_MONFUN(g02efh); DataReader sr = new DataReader(datafile); double fin, fout, rms, rsq, sw, tau; int df, i, j, m, monlev, n; int ifail; Console.WriteLine("g02ef Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); n = int.Parse(sr.Next()); m = int.Parse(sr.Next()); fin = double.Parse(sr.Next(), CultureInfo.InvariantCulture); fout = double.Parse(sr.Next(), CultureInfo.InvariantCulture); tau = double.Parse(sr.Next(), CultureInfo.InvariantCulture); monlev = int.Parse(sr.Next()); double[] b = new double[m+1]; double[] c = new double[(m+2)*(m+1)/2]; double[] se = new double[m+1]; double[] wmean = new double[m+1]; double[] wt = new double[1]; double[,] x = new double[n, m+1]; int[] isx = new int[m]; if (n >1 && m >1 ) { sr.Reset(); for (i = 1; i <= n; i++) { for (j = 1; j <= m + 1; j++) { x[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } sr.Reset(); for (j = 1; j <= m; j++) { isx[j - 1] = int.Parse(sr.Next()); } // // Compute upper-triangular correlation matrix G02.g02bu("M", "U", n, m + 1, x, wt, out sw, wmean, c, out ifail); // if (ifail == 0) { // Perform stepwise selection of variables G02.g02ef(m, n, wmean, c, sw, isx, fin, fout, tau, b, se, out rsq, out rms, out df, monlev, g02efhG02EFF, out ifail); // if (ifail == 0) { // Display summary information for fitted model Console.WriteLine(" "); Console.WriteLine(" {0}", "Fitted Model Summary"); Console.WriteLine(" "); Console.WriteLine(" {0}", "Term Estimate Standard Error"); Console.WriteLine(" "); Console.WriteLine(" {0} {1,12:e3} {2,12:e3}", "Intercept:", b[0], se[0]); for (i = 0; i < m; i++) { if ((isx[i] == 1) || (isx[i] == 2)) { Console.WriteLine(" {0} {1,3} {2,12:e3} {3,12:e3}", "Variable:", i+1, b[i+1], se[i+1]); } } Console.WriteLine(" "); Console.WriteLine(" {0} {1,12:e3}", "RMS:", rms); } else { Console.WriteLine(" "); Console.WriteLine(" {0}{1,5}", " ** g02ef returned with ifail = ", ifail); } } else { Console.WriteLine(" "); Console.WriteLine(" {0}{1,5}", " ** g02bu returned with ifail = ", ifail); } } // } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine("Exception Raised"); } } public static void g02efh(string flag, int var, double val) { switch(flag) { case "A": Console.WriteLine("{0} {1,4} {2}", "Adding variable", var, "to model"); break; case "B": Console.WriteLine("{0}", "Backward Selection"); break; case "C": Console.WriteLine("{0} {1,4} {2}", "Variable", var, "aliased"); break; case "D": Console.WriteLine("{0} {1,4} {2}", "Dropping variable", var, "from model"); break; case "F": Console.WriteLine("{0}", "Forward Selection"); break; case "K": Console.WriteLine("{0}", "Keeping all current variables"); break; case "S": Console.WriteLine("{0}", "Starting Stepwise Selection"); break; case "V": Console.WriteLine("{0} {1,4} {2} {3, 12:e3}", "Variable", var, "Variance ratio =", val); break; case "X": Console.WriteLine("{0}", "Finished Stepwise Selection"); break; } } } }