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.

## 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
```