Perform a Box-Cox transformation and center/scale a vector to attempt normalization
A vector to normalize with Box-Cox
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)
an object of class 'boxcox'
a vector of data to be (reverse) transformed
if TRUE, performs reverse transformation
A list of class boxcox
with elements
transformed original data
original data
mean after transformation but prior to standardization
sd after transformation but prior to standardization
estimated lambda value for skew transformation
number of nonmissing observations
Pearson's P / degrees of freedom
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.
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.
Box, G. E. P. and Cox, D. R. (1964) An analysis of transformations. Journal of the Royal Statistical Society B, 26, 211-252.
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