using System; using CenterSpace.NMath.Core; namespace CenterSpace.NMath.Examples.CSharp { class BoxCoxExample { static void Main( string[] args ) { // The data to be transformed. var data = new DoubleVector( "[.15 .09 .18 .10 .05 .12 .08 .05 .08 " + " .10 .07 .02 .01 .10 .10 .10 .02 .10 .01 .40 .10 .05 .03 .05 " + " .15 .10 .15 .09 .08 .18 .10 .20 .11 .30 .02 .20 .20 .30 .30 .40 .30 .05]" ); // The interval to search for the value of lambda which maximizes the log-likelihood // function. var lambdaInterval = new Interval( -3, 3, Interval.Type.Closed ); // We want lambda values less than 0.01 to be considered equal to zero. double lambdaEpsilon = .01; // Construct a BoxCox for the given data and lambda information. var bc = new BoxCox( data, lambdaInterval, lambdaEpsilon ); Console.WriteLine(); // Write the optimal lambda and the transformed data using that lambda value. Console.WriteLine( "Optimal lambda value in {0} is {1}", bc.LambdaInterval, bc.Lambda ); Console.WriteLine( "\nTransformed data:" ); Console.WriteLine( bc.TransformedData.ToString( "G5" ) ); // Print out the log-likelihood function for the data at the optimal lambda value. Console.WriteLine( "\nValue of the log-likelihood function at lambda = {0} is {1}", bc.Lambda, BoxCox.LogLikelihood( data, bc.Lambda ) ); // Transform some other data using a lambda value of 0.27. double lambda = 0.27; var y = new DoubleVector( 10, new RandGenBeta( 2.2 ) ); DoubleVector transformedY = BoxCox.Transform( y, lambda ); Console.WriteLine( "\ny transformed with lambda = {0}:", lambda ); Console.WriteLine( transformedY.ToString( "G5" ) ); Console.WriteLine(); Console.WriteLine( "Press Enter Key" ); Console.Read(); } } }← All NMath Code Examples