40.3 Box-Cox Power Transformations (.NET, C#, CSharp, VB, Visual Basic, F#)
Box-Cox power transformations compute a rank-preserving transformation of data to stabilize variance and make the data more normal. The power transformation is defined as a continuously varying function, with respect to the power parameter ,
In NMath Stats, class BoxCox compute the Box-Cox power tranformations for a set of data points and parameter value . In addition, methods are provided for computing the corresponding log-likelihood function and the value of which maximizes it.
For example:
Code Example – C# Box-Cox transformations
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]" );
var interval = new Interval( -5, 5, Interval.Type.Closed );
var bc = new BoxCox( data, interval );
Console.WriteLine( bc.Lambda );
Console.WriteLine( bc.TransformedData );
Code Example – VB Box-Cox transformations
Dim Data As 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]"
)_
Dim Interval As New Interval(-5, 5, Interval.Type.Closed)
Dim BC As New BoxCox(Data, Interval)
Console.WriteLine(BC.Lambda)
Console.WriteLine(BC.TransformedData)
BoxCox searches from -5 to 5 until the best value of is found (the value which maximizes the log-likelihood function).