// g02df Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02DFE { static string datafile = "ExampleData/g02dfe.d"; static void Main(String[] args) { if (args.Length == 1) { datafile = args[0]; } StartExample(); } public static void StartExample() { try { DataReader sr = new DataReader(datafile); double rss, tol; int i, idf, indx, ip, irank, j, m, n; bool svd = false; string mean = "", weight = ""; int ifail; Console.WriteLine("g02df Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); n = int.Parse(sr.Next()); m = int.Parse(sr.Next()); int ipmax = m + 1; weight = sr.Next(); mean = sr.Next(); double[] b = new double[5]; double[] cov = new double[(ipmax * ipmax + ipmax) / 2]; double[] h = new double[n]; double[] p = new double[ipmax * (ipmax + 2)]; double[,] q = new double[n, ipmax + 1]; double[] res = new double[12]; double[] se = new double[5]; double[] wk = new double[5 * (ipmax - 1) + ipmax * ipmax]; double[] wt = new double[12]; double[,] x = new double[n, m]; double[] y = new double[n]; int[] isx = new int[m]; if (n >= 2 && m >= 1) { if ((weight == "W") || (weight == "w")) { for (i = 1; i <= n; i++) { sr.Reset(); for (j = 1; j <= m; j++) { x[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } y[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); wt[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } else { for (i = 1; i <= n; i++) { sr.Reset(); for (j = 1; j <= m; j++) { x[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } y[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } for (i = 1; i <= m; i++) { isx[i - 1] = 1; } ip = (int)m; if ((mean == "M") || (mean == "m")) { ip = ip + 1; } // Set tolerance tol = 0.000010e0; // G02.g02da(mean, weight, n, x, m, isx, ip, y, wt, out rss, out idf, b, se, cov, res, h, q, out svd, out irank, p, tol, wk, out ifail); // if (ifail == 0) { Console.WriteLine(" "); Console.WriteLine(" {0}", "Results from full model"); if (svd) { Console.Write(" {0}", "Model not of full rank"); Console.WriteLine(" "); } Console.WriteLine(" {0}{1,13:e4}", "Residual sum of squares = ", rss); Console.WriteLine(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); L80: ; sr.Reset(); indx = int.Parse(sr.Next()); if (indx != 0) { // G02.g02df(ip, q, indx, ref rss, out ifail); // if (ifail == 0) { ip = ip - 1; if (ip == 0) { Console.Write(" {0}", "No terms left in model"); } else { Console.WriteLine(" {0}{1,4}{2}", "Variable", indx, " dropped"); // G02.g02dd(n, ip, q, ref rss, out idf, b, se, cov, out svd, out irank, p, tol, out ifail); // if (ifail == 0) { Console.WriteLine(" {0}{1,13:e4}", "Residual sum of squares = ", rss); Console.Write(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); Console.Write(" {0} {1}", "Parameter estimate ", "Standard error"); Console.WriteLine(" "); for (j = 1; j <= ip; j++) { Console.WriteLine(" {0,15:e4}{1,20:e4}", b[j - 1], se[j - 1]); } goto L80; } else { Console.WriteLine(" "); Console.WriteLine("** g02dd failed with ifail = {0,5}", ifail); } } } else { Console.WriteLine(" "); Console.WriteLine("** g02df failed with ifail = {0,5}", ifail); } } } else { Console.WriteLine(" "); Console.WriteLine("** g02da failed with ifail = {0,5}", ifail); } } // } catch (Exception e) { Console.WriteLine(e.Message); Console.Write("Exception Raised"); } } } }