// g02dc Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02DCE { static string datafile = "ExampleData/g02dce.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, wtn, yn; int i, idf, ip, irank, ix, j, m, n; bool svd = false; string mean = "", update = "", weight = ""; int ifail; Console.WriteLine("g02dc Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); wtn = 0.0; n = int.Parse(sr.Next()); m = int.Parse(sr.Next()); weight = sr.Next(); mean = sr.Next(); double[] h = new double[n]; double[] res = new double[n]; double[] wt = new double[n]; double[,] xm = new double[n, m]; double[] y = new double[n]; int[] isx = new int[m]; Console.WriteLine(" "); 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); } } 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); } } 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 double[] cov = new double[ip * (ip + 1) / 2]; double[] b = new double[ip]; double[] p = new double[ip * (ip + 2)]; double[,] q = new double[n, ip + 1]; double[] se = new double[ip]; double[] wk = new double[5 * (ip - 1) + ip * ip]; 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.WriteLine(" {0}", "Results from g02da"); if (svd) { Console.WriteLine(" "); Console.WriteLine(" {0}", "Model not of full rank"); } Console.WriteLine(" {0}{1,12:e4}", "Residual sum of squares = ", rss); Console.WriteLine(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); Console.WriteLine(" {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]); } bool carryon = true; while (carryon) { sr.Reset(); update = sr.Next(); ix = 1; double[] x = new double[(m-1)*ix+1]; if ((update != "S") && (update != "s")) { if ((weight == "W") || (weight == "w")) { sr.Reset(); for (j = 1; j <= m; j++) { x[j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } yn = double.Parse(sr.Next(), CultureInfo.InvariantCulture); wtn = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } else { sr.Reset(); for (j = 1; j <= m; j++) { x[j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } yn = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } // G02.g02dc(update, mean, weight, m, isx, q, ip, x, ix, yn, wtn, ref rss, out ifail); if (ifail == 0) { // if ((update == "A") || (update == "a")) { Console.WriteLine(" "); Console.WriteLine(" {0}", "Results from adding an observation using g02dc"); n = n + 1; } else if ((update == "D") || (update == "d")) { Console.WriteLine(" "); Console.WriteLine(" {0}", "Results from dropping an observation using g02dc"); n = n - 1; } // 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,12:e4}", "Residual sum of squares = ", rss); Console.WriteLine(" {0}{1,4}", "Degrees of freedom = ", idf); Console.WriteLine(" "); Console.WriteLine(" {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]); } continue; } else { Console.WriteLine(" "); Console.WriteLine("** g02dd failed with ifail = {0,5}", ifail); break; } } else { Console.WriteLine(" "); Console.WriteLine("** g02dc failed with ifail = {0,5}", ifail); break; } } else { carryon=false; break; } } } else { Console.WriteLine(" "); Console.WriteLine("** g02da failed with ifail = {0,5}", ifail); } } // } catch (Exception e) { Console.WriteLine(e.Message); Console.Write("Exception Raised"); } } } }