Perform a Box-Cox transformation and center/scale a vector to attempt normalization

boxcox(x, standardize = TRUE, ...)

# S3 method for boxcox
predict(object, newdata = NULL, inverse = FALSE, ...)

# S3 method for boxcox
print(x, ...)

Arguments

x

A vector to normalize with Box-Cox

standardize

If TRUE, the transformed values are also centered and scaled, such that the transformation attempts a standard normal

...

Additional arguments that can be passed to the estimation of the lambda parameter (lower, upper, epsilon)

object

an object of class 'boxcox'

newdata

a vector of data to be (reverse) transformed

inverse

if TRUE, performs reverse transformation

Value

A list of class boxcox with elements

x.t

transformed original data

x

original data

mean

mean after transformation but prior to standardization

sd

sd after transformation but prior to standardization

lambda

estimated lambda value for skew transformation

n

number of nonmissing observations

norm_stat

Pearson's P / degrees of freedom

standardize

was the transformation standardized

The predict function returns the numeric value of the transformation performed on new data, and allows for the inverse transformation as well.

Details

boxcox estimates the optimal value of lambda for the Box-Cox transformation. This transformation can be performed on new data, and inverted, via the predict function.

The function will return an error if a user attempt to transform nonpositive data.

References

Box, G. E. P. and Cox, D. R. (1964) An analysis of transformations. Journal of the Royal Statistical Society B, 26, 211-252.

See also

Examples

x <- rgamma(100, 1, 1)

bc_obj <- boxcox(x)
bc_obj
#> Standardized Box Cox Transformation with 100 nonmissing obs.:
#>  Estimated statistics:
#>  - lambda = 0.2240439 
#>  - mean (before standardization) = -0.2826479 
#>  - sd (before standardization) = 0.9754222 
p <- predict(bc_obj)
x2 <- predict(bc_obj, newdata = p, inverse = TRUE)

all.equal(x2, x)
#> [1] TRUE