R: distance components (DISCO)

disco {energy} | R Documentation

## distance components (DISCO)

### Description

E-statistics DIStance COmponents and tests, analogous to variance components and anova.

### Usage

    disco(x, factors, distance, index=1.0, R, method=c("disco","discoB","discoF"))
    disco.between(x, factors, distance, index=1.0, R)

### Arguments

`x` | data matrix or distance matrix or dist object
`factors` | matrix of factor labels or integers (not design matrix)
`distance` | logical, TRUE if x is distance matrix
`index` | exponent on Euclidean distance in (0,2]
`R` | number of replicates for a permutation test
`method` | test statistic

### Details

`disco` calculates the distance components decomposition of total dispersion and if R > 0 tests for significance using the test statistic disco "F" ratio (default `method="disco"`), or using the between component statistic (`method="discoB"`), each implemented by permutation test.

If `x` is a `dist` object, argument `distance` is ignored. If `x` is a distance matrix, set `distance=TRUE`.

In the current release `disco` computes the decomposition for one-way models only.

### Value

When `method="discoF"`, `disco` returns a list similar to the return value from `anova.lm`, and the `print.disco` method is provided to format the output into a similar table. Details:

`disco` returns a class `disco` object, which is a list containing

`call` | call
`method` | method
`statistic` | vector of observed statistics
`p.value` | vector of p-values
`k` | number of factors
`N` | number of observations
`between` | between-sample distance components
`withins` | one-way within-sample distance components
`within` | within-sample distance component
`total` | total dispersion
`Df.trt` | degrees of freedom for treatments
`Df.e` | degrees of freedom for error
`index` | index (exponent on distance)
`factor.names` | factor names
`factor.levels` | factor levels
`sample.sizes` | sample sizes
`stats` | matrix containing decomposition

When `method="discoB"`, `disco` passes the arguments to `disco.between`, which returns a class `htest` object.

`disco.between` returns a class `htest` object, where the test statistic is the between-sample statistic (proportional to the numerator of the F ratio of the `disco` test.

### Note

The current version does all calculations via matrix arithmetic and boot function. Support for more general additive models and a formula interface is under development.

`disco` methods have been added to the cluster distance summary function `edist`, and energy tests for equality of distribution (see `eqdist.etest`).

### Author(s)

Maria L. Rizzo mrizzo @ bgsu.edu and Gabor J. Szekely

### References

M. L. Rizzo and G. J. Szekely (2010). DISCO Analysis: A Nonparametric Extension of Analysis of Variance, Annals of Applied Statistics, Vol. 4, No. 2, 1034-1055.
http://dx.doi.org/10.1214/09-AOAS245

### See Also

`edist` `eqdist.e` `eqdist.etest` `ksample.e`

### Examples

          ## warpbreaks one-way decompositions
          data(warpbreaks)
          attach(warpbreaks)
          disco(breaks, factors=wool, R=99)

          ## When index=2 for univariate data, we get ANOVA decomposition
          disco(breaks, factors=tension, index=2.0, R=99)
          aov(breaks ~ tension)

          ## Multivariate response
          ## Example on producing plastic film from Krzanowski (1998, p. 381)
          tear <- c(6.5, 6.2, 5.8, 6.5, 6.5, 6.9, 7.2, 6.9, 6.1, 6.3,
                    6.7, 6.6, 7.2, 7.1, 6.8, 7.1, 7.0, 7.2, 7.5, 7.6)
          gloss <- c(9.5, 9.9, 9.6, 9.6, 9.2, 9.1, 10.0, 9.9, 9.5, 9.4,
                     9.1, 9.3, 8.3, 8.4, 8.5, 9.2, 8.8, 9.7, 10.1, 9.2)
          opacity <- c(4.4, 6.4, 3.0, 4.1, 0.8, 5.7, 2.0, 3.9, 1.9, 5.7,
                       2.8, 4.1, 3.8, 1.6, 3.4, 8.4, 5.2, 6.9, 2.7, 1.9)
          Y <- cbind(tear, gloss, opacity)
          rate <- factor(gl(2,10), labels=c("Low", "High"))

    	    ## test for equal distributions by rate
          disco(Y, factors=rate, R=99)
    	    disco(Y, factors=rate, R=99, method="discoB")

          ## Just extract the decomposition table
          disco(Y, factors=rate, R=0)$stats

    	    ## Compare eqdist.e methods for rate
    	    ## disco between stat is half of original when sample sizes equal
    	    eqdist.e(Y, sizes=c(10, 10), method="original")
    	    eqdist.e(Y, sizes=c(10, 10), method="discoB")

          ## The between-sample distance component
          disco.between(Y, factors=rate, R=0)

[Package energy version 1.7-6 Index]