boxcoxinv

Compute the inverse of a one-parameter Box-Cox transformation.

To compute the inverse of a one-parameter Box-Cox transformation, one finds the x such that

y equals StartLayout Enlarged left-brace 1st Row 1st Column StartFraction x Superscript lamda Baseline minus 1 Over lamda EndFraction 2nd Column if lamda not-equals 0 2nd Row 1st Column ln left-parenthesis x right-parenthesis 2nd Column if lamda equals 0 EndLayout

Usage

var boxcoxinv = require( '@stdlib/math/base/special/boxcoxinv' );

boxcoxinv( y, lambda )

Computes the inverse of a one-parameter Box-Cox transformation.

var v = boxcoxinv( 1.0, 2.5 );
// returns ~1.6505

v = boxcoxinv( 4.0, 2.5 );
// returns ~2.6095

v = boxcoxinv( 10.0, 2.5 );
// returns ~3.6812

v = boxcoxinv( 2.0, 0.0 );
// returns ~7.3891

v = boxcoxinv( -1.0, 2.5 );
// returns NaN

v = boxcoxinv( 0.0, -1.0 );
// returns 1.0

v = boxcoxinv( 1.0, NaN );
// returns NaN

v = boxcoxinv( NaN, 3.1 );
// returns NaN

Examples

var incrspace = require( '@stdlib/array/base/incrspace' );
var boxcoxinv = require( '@stdlib/math/base/special/boxcoxinv' );

var y = incrspace( -1.0, 10.0, 1.0 );
var l = incrspace( -0.5, 5.0, 0.5 );

var b;
var i;
var j;
for ( i = 0; i < y.length; i++ ) {
    for ( j = 0; j < l.length; j++ ) {
        b = boxcoxinv( y[ i ], l[ j ] );
        console.log( 'boxcoxinv(%d, %d) = %d', y[ i ], l[ j ], b );
    }
}

C APIs

Usage

#include "stdlib/math/base/special/boxcoxinv.h"

stdlib_base_boxcoxinv( y, lambda )

Computes the inverse of a one-parameter Box-Cox transformation.

double out = stdlib_base_boxcoxinv( 1.0, 2.5 );
// returns ~1.6505

out = stdlib_base_boxcoxinv( 4.0, 2.5 );
// returns ~2.6095

The function accepts the following arguments:

  • y: [in] double input value.
  • lambda: [in] double power parameter.
double stdlib_base_boxcoxinv ( const double y, const double lambda );

Examples

#include "stdlib/math/base/special/boxcoxinv.h"
#include <stdio.h>

int main( void ) {
    const double x[] = { -1.0, 10.0, 1.0 };
    const double y[] = { -0.5, 5.0, 0.5 };

    double out;
    int i;
    int j;
    for ( i = 0; i < 3; i++ ) {
        for ( j = 0; j < 3; j++ ){
            out = stdlib_base_boxcoxinv( x[ i ], y[ j ] );
            printf ( "y: %lf, x: %lf, out: %lf\n", x[ i ], y[ j ], out );
        }
    }
}

References

  • Box, G. E. P., and D. R. Cox. 1964. "An Analysis of Transformations." Journal of the Royal Statistical Society. Series B (Methodological) 26 (2). [Royal Statistical Society, Wiley]: 211–52. http://www.jstor.org/stable/2984418.
Did you find this page helpful?