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.

boxcox

## 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)
#>  TRUE