// g02dg Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02DGE { static string datafile = "ExampleData/g02dge.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, ip, irank, j, m, n; bool svd = false; string mean = "", weight = ""; int ifail; Console.WriteLine("g02dg 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 + 1) / 2]; double[] h = new double[n]; double[] newy = new double[n]; double[] p = new double[ipmax * (ipmax + 2)]; double[,] q = new double[n, ipmax + 1]; double[] res = new double[n]; double[] se = new double[5]; double[] wk = new double[5 * (ipmax - 1) + ipmax * ipmax]; double[] wt = new double[n]; double[,] xm = 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++) { xm[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); newy[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } else { for (i = 1; i <= n; i++) { sr.Reset(); for (j = 1; j <= m; j++) { xm[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } y[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); newy[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } sr.Reset(); for (j = 1; j <= m; j++) { isx[j - 1] = int.Parse(sr.Next()); } ip = int.Parse(sr.Next()); // Set tolerance tol = 0.000010e0; // // Fit initial model using g02da G02.g02da(mean, weight, n, xm, 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.Write(" {0}", "Results from g02da"); Console.WriteLine(" "); if (svd) { Console.Write(" {0}", "Model not of full rank"); Console.WriteLine(" "); } Console.WriteLine(" {0}{1,12:e4}", "Residual sum of squares = ", rss); Console.Write(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); Console.Write(" {0}", "Variable Parameter estimate Standard error"); Console.WriteLine(" "); for (j = 1; j <= ip; j++) { Console.WriteLine(" {0,6}{1,20:e4}{2,20:e4}", j, b[j - 1], se[j - 1]); } // G02.g02dg(weight, n, wt, ref rss, ip, irank, cov, q, svd, p, newy, b, se, res, wk, out ifail); // if (ifail == 0) { Console.WriteLine(" "); Console.Write(" {0}", "Results for second y-variable using g02dg"); Console.WriteLine(" "); Console.WriteLine(" {0}{1,12:e4}", "Residual sum of squares = ", rss); Console.Write(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); Console.Write(" {0} {1}", "Variable Parameter estimate ", "Standard error"); Console.WriteLine(" "); for (j = 1; j <= ip; j++) { Console.WriteLine(" {0,6}{1,20:e4}{2,20:e4}", j, b[j - 1], se[j - 1]); } } else { Console.WriteLine(" "); Console.WriteLine("** g02dg 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"); } } } }