yeo.johnson: yeo.johnson

View source: R/yeo.johnson.R

yeo.johnsonR Documentation

yeo.johnson

Description

Computes the Yeo-Johnson transformation, which is a normalizing transformation. The code and documentation is taken from the VGAM package (see function yeo.johnson) with some slight modifications, e.g. NA's are kept and do not produce an error.

Usage

yeo.johnson(
  y,
  lambda,
  derivative = 0,
  epsilon = sqrt(.Machine$double.eps),
  inverse = FALSE
)

Arguments

y

numeric: a vector or matrix.

lambda

numeric: It is recycled to the same length as y if necessary.

derivative

non-negative integer: the default is the ordinary function evaluation, otherwise the derivative with respect to lambda (default: 0)

epsilon

numeric and positive value: the tolerance given to values of lambda when comparing it to 0 or 2.

inverse

logical: return the inverse transformation? (default: FALSE)

Details

The Yeo-Johnson transformation can be thought of as an extension of the Box-Cox transformation. It handles both positive and negative values, whereas the Box-Cox transformation only handles positive values. Both can be used to transform the data so as to improve normality.

Value

The Yeo-Johnson transformation or its inverse, or its derivatives with respect to lambda, of y.

Note

If inverse = TRUE then the argument derivative = 0 is required.

References

Yeo, I.-K. and Johnson, R. A. (2000). A new family of power transformations to improve normality or symmetry. Biometrika, 87, 954–959.

See Also

VGAM::yeo.johnson, boxcox.

Examples

y <- seq(-4, 4, len = (nn <- 200))
ltry <- c(0, 0.5, 1, 1.5, 2)  # Try these values of lambda
lltry <- length(ltry)
psi <- matrix(as.numeric(NA), nn, lltry)
for (ii in 1:lltry)
  psi[, ii] <- yeo.johnson(y, lambda = ltry[ii])
matplot(y, psi, type = "l", ylim = c(-4, 4), lwd = 2, lty = 1:lltry,
        ylab = "Yeo-Johnson transformation", col = 1:lltry, las = 1,
        main = "Yeo-Johnson transformation with some values of lambda")
abline(v = 0, h = 0)
legend(x = 1, y = -0.5, lty = 1:lltry, legend = as.character(ltry),
       lwd = 2, col = 1:lltry)

sigbertklinke/smvgraph documentation built on Dec. 10, 2022, 9:13 a.m.