Learn R Programming

VGAM (version 0.8-1)

yeo.johnson: Yeo-Johnson Transformation

Description

Computes the Yeo-Johnson transformation, which is a normalizing transformation.

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.
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?

Value

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

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. They can be used to perform LMS quantile regression.

References

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

Yee, T. W. (2004) Quantile regression via vector generalized additive models. Statistics in Medicine, 23, 2295--2315.

See Also

lms.yjn, boxcox.

Examples

Run this code
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(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=c(1), y=c(-0.5), lty=1:lltry, legend=as.character(ltry),
       lwd=2, col=1:lltry)

Run the code above in your browser using DataLab