tamhaneT2Test: Tamhane's T2 Test

View source: R/tamhaneT2Test.R

tamhaneT2TestR Documentation

Tamhane's T2 Test

Description

Performs Tamhane's T2 (or T2') all-pairs comparison test for normally distributed data with unequal variances.

Usage

tamhaneT2Test(x, ...)

## Default S3 method:
tamhaneT2Test(x, g, welch = TRUE, ...)

## S3 method for class 'formula'
tamhaneT2Test(formula, data, subset, na.action, welch = TRUE, ...)

## S3 method for class 'aov'
tamhaneT2Test(x, welch = TRUE, ...)

Arguments

x

a numeric vector of data values, a list of numeric data vectors or a fitted model object, usually an aov fit.

...

further arguments to be passed to or from methods.

g

a vector or factor object giving the group for the corresponding elements of "x". Ignored with a warning if "x" is a list.

welch

indicates, whether Welch's approximate solution for calculating the degree of freedom shall be used or, as usually, df = N - 2. Defaults to TRUE.

formula

a formula of the form response ~ group where response gives the data values and group a vector or factor of the corresponding groups.

data

an optional matrix or data frame (or similar: see model.frame) containing the variables in the formula formula. By default the variables are taken from environment(formula).

subset

an optional vector specifying a subset of observations to be used.

na.action

a function which indicates what should happen when the data contain NAs. Defaults to getOption("na.action").

Details

For all-pairs comparisons in an one-factorial layout with normally distributed residuals but unequal groups variances the T2 test (or T2' test) of Tamhane can be performed. Let X_{ij} denote a continuous random variable with the j-the realization (1 \le j \le n_i) in the i-th group (1 \le i \le k). Furthermore, the total sample size is N = \sum_{i=1}^k n_i. A total of m = k(k-1)/2 hypotheses can be tested: The null hypothesis is H_{ij}: \mu_i = \mu_j ~~ (i \ne j) is tested against the alternative A_{ij}: \mu_i \ne \mu_j (two-tailed). Tamhane T2 all-pairs test statistics are given by

t_{ij} \frac{\bar{X}_i - \bar{X_j}} {\left( s^2_j / n_j + s^2_i / n_i \right)^{1/2}}, ~~ (i \ne j)

with s^2_i the variance of the i-th group. The null hypothesis is rejected (two-tailed) if

\mathrm{Pr} \left\{ |t_{ij}| \ge t_{v_{ij}\alpha'/2} | \mathrm{H} \right\}_{ij} = \alpha.

T2 test uses Welch's approximate solution for calculating the degree of freedom.

v_{ij} = \frac{\left( s^2_i / n_i + s^2_j / n_j \right)^2} {s^4_i / n^2_i \left(n_i - 1\right) + s^4_j / n^2_j \left(n_j - 1\right)}.

T2' test applies the following approximation for the degree of freedom

v_{ij} = n_i + n_j - 2

The p-values are computed from the TDist-distribution and adjusted according to Dunn-Sidak.

p'_{ij} = \min \left\{1, ~ (1 - (1 - p_{ij})^m)\right\}

Value

A list with class "PMCMR" containing the following components:

method

a character string indicating what type of test was performed.

data.name

a character string giving the name(s) of the data.

statistic

lower-triangle matrix of the estimated quantiles of the pairwise test statistics.

p.value

lower-triangle matrix of the p-values for the pairwise tests.

alternative

a character string describing the alternative hypothesis.

p.adjust.method

a character string describing the method for p-value adjustment.

model

a data frame of the input data.

dist

a string that denotes the test distribution.

Note

T2 test is basically an all-pairs pairwise-t-test. Similar results can be obtained with pairwise.t.test(..., var.equal=FALSE, p.adjust.mehod = FALSE).

A warning message appears in the modified T2' test, if none of in Tamhane (1979) given conditions for nearly balanced sample sizes and nearly balanced standard errors is true.

Thanks to Sirio Bolaños for his kind suggestion for adding T2' test into this function.

References

Tamhane, A. C. (1979) A Comparison of Procedures for Multiple Comparisons of Means with Unequal Variances, Journal of the American Statistical Association 74, 471–480.

See Also

dunnettT3Test uryWigginsHochbergTest

Examples

fit <- aov(weight ~ feed, chickwts)
shapiro.test(residuals(fit))
bartlett.test(weight ~ feed, chickwts) # var1 = varN
anova(fit)

## also works with fitted objects of class aov
res <- tamhaneT2Test(fit)
summary(res)
summaryGroup(res)
res

## compare with pairwise.t.test
WT <- pairwise.t.test(chickwts$weight,
                      chickwts$feed,
                      pool.sd = FALSE,
                      p.adjust.method = "none")
p.adj.sidak <- function(p, m) sapply(p, function(p) min(1, 1 - (1 - p)^m))
p.raw <- as.vector(WT$p.value)
m <- length(p.raw[!is.na(p.raw)])
PADJ <- matrix(ans <- p.adj.sidak(p.raw, m),
               nrow = 5, ncol = 5)
colnames(PADJ) <- colnames(WT$p.value)
rownames(PADJ) <- rownames(WT$p.value)
PADJ

## same without Welch's approximate solution
summary(T2b <- tamhaneT2Test(fit, welch = FALSE))


PMCMRplus documentation built on Nov. 27, 2023, 1:08 a.m.