boxcoxfr {AID}R Documentation

Box-Cox Transformation for One-Way ANOVA

Description

boxcoxfr performs Box-Cox transformation for one-way ANOVA. It is useful to use if the normality or/and the homogenity of variance is/are not satisfied while comparing two or more groups.

Usage

boxcoxfr(y, x, option = "both", lambda = seq(-3, 3, 0.01), lambda2 = NULL, 
  tau = 0.05, alpha = 0.05, verbose = TRUE)

Arguments

y

a numeric vector of data values.

x

a vector or factor object which gives the group for the corresponding elements of y.

option

a character string to select the desired option for the objective of transformation. "nor" and "var" are the options which search for a transformation to satisfy the normality of groups and the homogenity of variances, respectively. "both" is the option which searches for a transformation to satisfy both the normality of groups and the homogenity of variances. Default is set to "both".

lambda

a vector which includes the sequence of feasible lambda values. Default is set to (-3, 3) with increment 0.01.

lambda2

a numeric for an additional shifting parameter. Default is set to lambda2 = 0.

tau

the feasible region parameter for the construction of feasible region. Default is set to 0.05. If tau = 0, it returns the MLE of transformation parameter.

alpha

the level of significance to check the normality and variance homogenity after transformation. Default is set to alpha = 0.05.

verbose

a logical for printing output to R console.

Details

Denote y the variable at the original scale and y' the transformed variable. The Box-Cox power transformation is defined by:

y' = \left\{ \begin{array}{ll} \frac{y^\lambda - 1}{\lambda} \mbox{ , if $\lambda \neq 0$} \cr log(y) \mbox{ , if $\lambda = 0$} \end{array} \right.

If the data include any nonpositive observations, a shifting parameter \lambda_2 can be included in the transformation given by:

y' = \left\{ \begin{array}{ll} \frac{(y + \lambda_2)^\lambda - 1}{\lambda} \mbox{ , if $\lambda \neq 0$} \cr log(y + \lambda_2) \mbox{ , if $\lambda = 0$} \end{array} \right.

Maximum likelihood estimation in feasible region (MLEFR) is used while estimating transformation parameter. MLEFR maximizes the likehood function in feasible region constructed by Shapiro-Wilk test and Bartlett's test. After transformation, normality of the data in each group and homogeneity of variance are assessed by Shapiro-Wilk test and Bartlett's test, respectively.

Value

A list with class "boxcoxfr" containing the following elements:

method

method applied in the algorithm

lambda.hat

the estimated lambda

lambda2

additional shifting parameter

shapiro

a data frame which gives the test results for the normality of groups via Shapiro-Wilk test

bartlett

a matrix which returns the test result for the homogenity of variance via Bartlett's test

alpha

the level of significance to assess the assumptions.

tf.data

transformed data set

x

a factor object which gives the group for the corresponding elements of y

y.name

variable name of y

x.name

variable name of x

Author(s)

Osman Dag, Ozlem Ilk

References

Dag, O., Ilk, O. (2017). An Algorithm for Estimating Box-Cox Transformation Parameter in ANOVA. Communications in Statistics - Simulation and Computation, 46:8, 6424–6435.

Examples


######

# Communication between AID and onewaytests packages

library(AID)
library(onewaytests)

# Average Annual Daily Traffic Data (AID)
data(AADT)

# to obtain descriptive statistics by groups (onewaytests)
describe(aadt ~ class, data = AADT)

# to check normality of data in each group (onewaytests)
nor.test(aadt ~ class, data = AADT)

# to check variance homogeneity (onewaytests)
homog.test(aadt ~ class, data = AADT, method = "Bartlett")


# to apply Box-Cox transformation (AID)
out <- boxcoxfr(AADT$aadt, AADT$class)

# to obtain transformed data
AADT$tf.aadt <- out$tf.data

# to conduct one-way ANOVA with transformed data (onewaytests)
result<-aov.test(tf.aadt ~ class, data = AADT)

# to make pairwise comparison (onewaytests)
paircomp(result)

# to convert the statistics into the original scale (AID)
confInt(out, level = 0.95)

######

library(AID)

data <- rnorm(120, 10, 1)
factor <- rep(c("X", "Y", "Z"), each = 40)
out <- boxcoxfr(data, factor, lambda = seq(-5, 5, 0.01), tau = 0.01, alpha = 0.01)
confInt(out, level = 0.95)

######





[Package AID version 2.9 Index]