Perform a Yeo-Johnson Transformation and center/scale a vector to attempt normalization

yeojohnson(x, eps = 0.001, standardize = TRUE, ...)

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

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

## Arguments

x

A vector to normalize with Yeo-Johnson

eps

A value to compare lambda against to see if it is equal to zero

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)

object

an object of class 'yeojohnson'

newdata

a vector of data to be (reverse) transformed

inverse

if TRUE, performs reverse transformation

## Value

A list of class yeojohnson 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

yeojohnson estimates the optimal value of lambda for the Yeo-Johnson transformation. This transformation can be performed on new data, and inverted, via the predict function.

The Yeo-Johnson is similar to the Box-Cox method, however it allows for the transformation of nonpositive data as well. The step_YeoJohnson function in the recipes package is another useful resource (see references).

## Examples


x <- rgamma(100, 1, 1)

yeojohnson_obj <- yeojohnson(x)
yeojohnson_obj
#> Standardized Yeo-Johnson Transformation with 100 nonmissing obs.:
#>  Estimated statistics:
#>  - lambda = -0.6285334
#>  - mean (before standardization) = 0.4860509
#>  - sd (before standardization) = 0.2433941
p <- predict(yeojohnson_obj)
x2 <- predict(yeojohnson_obj, newdata = p, inverse = TRUE)

all.equal(x2, x)
#>  TRUE