boxcox1pinv

Compute the inverse of a one-parameter Box-Cox transformation for 1+x.

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

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

Usage

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

boxcox1pinv( y, lambda )

Computes the inverse of a one-parameter Box-Cox transformation for 1+x.

var v = boxcox1pinv( 1.0, 2.5 );
// returns ~0.6505

v = boxcox1pinv( 4.0, 2.5 );
// returns ~1.6095

v = boxcox1pinv( 10.0, 2.5 );
// returns ~2.6812

v = boxcox1pinv( 2.0, 0.0 );
// returns ~6.3891

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

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

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

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

Examples

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

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 = boxcox1pinv( y[ i ], l[ j ] );
        console.log( 'boxcox1pinv(%d, %d) = %d', y[ i ], l[ j ], b );
    }
}

C APIs

Usage

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

stdlib_base_boxcox1pinv( y, lambda )

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

double out = stdlib_base_boxcox1pinv( 1.0, 2.5 );
// returns ~0.6505

out = stdlib_base_boxcox1pinv( 4.0, 2.5 );
// returns ~1.6095

The function accepts the following arguments:

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

Examples

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

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

    double b;
    int i;
    int j;
    for ( i = 0; i < 3; i++ ) {
        for ( j = 0; j < 3; j++ ){
            b = stdlib_base_boxcox1pinv( y[ i ], l[ j ] );
            printf ( "boxcox1pinv(%lf, %lf) = %lf\n", y[ i ], l[ j ], b );
        }
    }
}

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?