// g02lb Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class G02LBE { static string datafile = "ExampleData/g02lbe.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 tau = 0.0; int i, ip, iscale, j, maxfac, maxit, mx, my, n; int ifail; Console.WriteLine("g02lb Example Program Results"); // Skip header in data file. sr.Reset(); // Read data values. sr.Reset(); n = int.Parse(sr.Next()); mx = int.Parse(sr.Next()); my = int.Parse(sr.Next()); iscale = int.Parse(sr.Next()); maxfac = int.Parse(sr.Next()); double[,] x = new double[n, mx]; double[,] y = new double[n, my]; int[] isx = new int[mx]; // Check array sizes if (n <= 1 || mx <= 1 || my < 1) { Console.Write(" ** Problem size is too small"); goto L80; } maxit = 200; tau = 1.00e-4; // Read data values. for (i = 1; i <= n; i++) { sr.Reset(); for (j = 1; j <= mx; j++) { x[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } for (j = 1; j <= my; j++) { y[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } sr.Reset(); for (j = 1; j <= mx; j++) { isx[j - 1] = int.Parse(sr.Next()); } ip = 0; for (j = 1; j <= mx; j++) { if (isx[j - 1] == 1) { ip = ip + 1; } } double[,] c = new double[my, maxfac]; double[,] p = new double[ip, maxfac]; double[,] t = new double[n, maxfac]; double[,] u = new double[n, maxfac]; double[,] w = new double[ip, maxfac]; double[] xbar = new double[ip]; double[] xcv = new double[maxfac]; double[,] xres = new double[n, ip]; double[] xstd = new double[ip]; double[] ybar = new double[3]; double[,] ycv = new double[maxfac, maxfac]; double[,] yres = new double[n, ip]; double[] ystd = new double[my]; // Fit a pls model. G02.g02lb(n, mx, x, isx, ip, my, y, xbar, ybar, iscale, xstd, ystd, maxfac, maxit, tau, xres, yres, w, p, t, c, u, xcv, ycv, out ifail); if (ifail != 0) { Console.WriteLine("** g02lb failed with ifail = {0,5}", ifail); goto L80; } X04.x04ca("G", "X", ip, maxfac, p, "x-loadings, P", out ifail); X04.x04ca("G", "X", n, maxfac, t, "x-scores, T", out ifail); X04.x04ca("G", "X", my, maxfac, c, "y-loadings, C", out ifail); X04.x04ca("G", "X", n, maxfac, u, "y-scores, U", out ifail); Console.WriteLine(" "); Console.WriteLine(" {0}", "Explained Variance"); Console.WriteLine(" {0,12} {1,21}", "Model effects", "Dependent variable(s)"); for (i = 1; i <= maxfac; i++) { Console.Write(" {0, 12:f6}", xcv[i - 1]); for (j = 1; j <= my; j++) { Console.Write(" {0, 12:f6}", ycv[i - 1, j - 1]); } Console.WriteLine(" "); } // L80: ; // } catch (Exception e) { Console.WriteLine(e.Message); Console.Write( "Exception Raised"); } } } }