// g02da Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02DAE { static string datafile = "ExampleData/g02dae.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("g02da Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); n = int.Parse(sr.Next()); m = int.Parse(sr.Next()); weight = sr.Next(); mean = sr.Next(); Console.WriteLine(" "); double[] h = new double[n]; double[] res = new double[n]; double[] wt = new double[n]; 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); } } sr.Reset(); for (j = 1; j <= m; j++) { isx[j - 1] = int.Parse(sr.Next()); } // Calculate ip ip = 0; if ((mean == "M") || (mean == "m")) { ip = ip + 1; } for (i = 1; i <= m; i++) { if (isx[i - 1] > 0) { ip = ip + 1; } } // Set tolerance tol = 0.000010e0; // double[] b = new double[ip]; double[] cov = new double[(ip * ip + ip) / 2]; double[] p = new double[ip * (ip + 2)]; double[,] q = new double[n, ip + 1]; double[] se = new double[ip]; double[] wk = new double[ip*ip + 5*(ip - 1)]; 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) { // if (svd) { Console.Write(" {0}{1,4}", "Model not of full rank, rank = ", irank); Console.WriteLine(" "); } 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]); } Console.WriteLine(" "); Console.Write(" {0}", " Obs Residuals H"); Console.WriteLine(" "); for (i = 1; i <= n; i++) { Console.WriteLine(" {0,6}{1,20:e4}{2,20:e4}", i, res[i - 1], h[i - 1]); } } else { Console.WriteLine(" "); Console.WriteLine("** g02da failed with ifail = {0,5}", ifail); } } // } catch (Exception e) { Console.WriteLine(e.Message); Console.Write( "Exception Raised"); } } } }