# SymmetryTests

##### Symmetry Tests

Testing the symmetry of a numeric repeated measurements variable in a complete block design.

- Keywords
- htest

##### Usage

```
# S3 method for formula
sign_test(formula, data, subset = NULL, …)
# S3 method for SymmetryProblem
sign_test(object, …)
```# S3 method for formula
wilcoxsign_test(formula, data, subset = NULL, …)
# S3 method for SymmetryProblem
wilcoxsign_test(object, zero.method = c("Pratt", "Wilcoxon"), …)

# S3 method for formula
friedman_test(formula, data, subset = NULL, …)
# S3 method for SymmetryProblem
friedman_test(object, …)

# S3 method for formula
quade_test(formula, data, subset = NULL, …)
# S3 method for SymmetryProblem
quade_test(object, …)

##### Arguments

- formula
a formula of the form

`y ~ x | block`

where`y`

is a numeric variable,`x`

is a factor with two (`sign_test`

and`wilcoxsign_test`

) or more levels and`block`

is an optional factor (which is generated automatically if omitted).- data
an optional data frame containing the variables in the model formula.

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

`NULL`

.- object
- zero.method
a character, the method used to handle zeros: either

`"Pratt"`

(default) or`"Wilcoxon"`

; see ‘Details’.- …
further arguments to be passed to

`symmetry_test`

.

##### Details

`sign_test`

, `wilcoxsign_test`

, `friedman_test`

and
`quade_test`

provide the sign test, the Wilcoxon signed-rank test, the
Friedman test, the Page test and the Quade test. A general description of
these methods is given by Hollander and Wolfe (1999).

The null hypothesis of symmetry is tested. The response variable and the
measurement conditions are given by `y`

and `x`

, respectively, and
`block`

is a factor where each level corresponds to exactly one subject
with repeated measurements. For `sign_test`

and `wilcoxsign_test`

,
formulae of the form `y ~ x | block`

and `y ~ x`

are allowed. The
latter form is interpreted as `y`

is the first and `x`

the second
measurement on the same subject.

If `x`

is an ordered factor, the default scores, `1:nlevels(x)`

, can
be altered using the `scores`

argument (see `symmetry_test`

);
this argument can also be used to coerce nominal factors to class
`"ordered"`

. In this case, a linear-by-linear association test is
computed and the direction of the alternative hypothesis can be specified
using the `alternative`

argument. For the Friedman test, this extension
was given by Page (1963) and is known as the Page test.

For `wilcoxsign_test`

, the default method of handling zeros
(`zero.method = "Pratt"`

), due to Pratt (1959), first rank-transforms the
absolute differences (including zeros) and then discards the ranks
corresponding to the zero-differences. The proposal by Wilcoxon (1949, p. 6)
first discards the zero-differences and then rank-transforms the remaining
absolute differences (`zero.method = "Wilcoxon"`

).

The conditional null distribution of the test statistic is used to obtain
\(p\)-values and an asymptotic approximation of the exact distribution is
used by default (`distribution = "asymptotic"`

). Alternatively, the
distribution can be approximated via Monte Carlo resampling or computed
exactly for univariate two-sample problems by setting `distribution`

to
`"approximate"`

or `"exact"`

respectively. See
`asymptotic`

, `approximate`

and `exact`

for details.

##### Value

##### Note

Starting with coin version 1.0-16, the `zero.method`

argument
replaced the (now removed) `ties.method`

argument. The current default
is `zero.method = "Pratt"`

whereas earlier versions had
`ties.method = "HollanderWolfe"`

, which is equivalent to
`zero.method = "Wilcoxon"`

.

##### References

Hollander, M. and Wolfe, D. A. (1999). *Nonparametric Statistical
Methods*, Second Edition. New York: John Wiley & Sons.

Page, E. B. (1963). Ordered hypotheses for multiple treatments: a
significance test for linear ranks. *Journal of the American Statistical
Association* **58**(301), 216--230. 10.1080/01621459.1963.10500843

Pratt, J. W. (1959). Remarks on zeros and ties in the Wilcoxon signed rank
procedures. *Journal of the American Statistical Association*
**54**(287), 655--667. 10.1080/01621459.1959.10501526

Quade, D. (1979). Using weighted rankings in the analysis of complete blocks
with additive block effects. *Journal of the American Statistical
Association* **74**(367), 680--683. 10.1080/01621459.1979.10481670

Wilcoxon, F. (1949). *Some Rapid Approximate Statistical Procedures*.
New York: American Cyanamid Company.

##### Examples

```
# NOT RUN {
## Example data from ?wilcox.test
y1 <- c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
y2 <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
## One-sided exact sign test
(st <- sign_test(y1 ~ y2, distribution = "exact",
alternative = "greater"))
midpvalue(st) # mid-p-value
## One-sided exact Wilcoxon signed-rank test
(wt <- wilcoxsign_test(y1 ~ y2, distribution = "exact",
alternative = "greater"))
statistic(wt, type = "linear")
midpvalue(wt) # mid-p-value
## Comparison with R's wilcox.test() function
wilcox.test(y1, y2, paired = TRUE, alternative = "greater")
## Data with explicit group and block information
dta <- data.frame(y = c(y1, y2), x = gl(2, length(y1)),
block = factor(rep(seq_along(y1), 2)))
## For two samples, the sign test is equivalent to the Friedman test...
sign_test(y ~ x | block, data = dta, distribution = "exact")
friedman_test(y ~ x | block, data = dta, distribution = "exact")
## ...and the signed-rank test is equivalent to the Quade test
wilcoxsign_test(y ~ x | block, data = dta, distribution = "exact")
quade_test(y ~ x | block, data = dta, distribution = "exact")
## Comparison of three methods ("round out", "narrow angle", and "wide angle")
## for rounding first base.
## Hollander and Wolfe (1999, p. 274, Tab. 7.1)
rounding <- data.frame(
times = c(5.40, 5.50, 5.55,
5.85, 5.70, 5.75,
5.20, 5.60, 5.50,
5.55, 5.50, 5.40,
5.90, 5.85, 5.70,
5.45, 5.55, 5.60,
5.40, 5.40, 5.35,
5.45, 5.50, 5.35,
5.25, 5.15, 5.00,
5.85, 5.80, 5.70,
5.25, 5.20, 5.10,
5.65, 5.55, 5.45,
5.60, 5.35, 5.45,
5.05, 5.00, 4.95,
5.50, 5.50, 5.40,
5.45, 5.55, 5.50,
5.55, 5.55, 5.35,
5.45, 5.50, 5.55,
5.50, 5.45, 5.25,
5.65, 5.60, 5.40,
5.70, 5.65, 5.55,
6.30, 6.30, 6.25),
methods = factor(rep(1:3, 22),
labels = c("Round Out", "Narrow Angle", "Wide Angle")),
block = gl(22, 3)
)
## Asymptotic Friedman test
friedman_test(times ~ methods | block, data = rounding)
## Parallel coordinates plot
with(rounding, {
matplot(t(matrix(times, ncol = 3, byrow = TRUE)),
type = "l", lty = 1, col = 1, ylab = "Time", xlim = c(0.5, 3.5),
axes = FALSE)
axis(1, at = 1:3, labels = levels(methods))
axis(2)
})
## Where do the differences come from?
## Wilcoxon-Nemenyi-McDonald-Thompson test (Hollander and Wolfe, 1999, p. 295)
## Note: all pairwise comparisons
(st <- symmetry_test(times ~ methods | block, data = rounding,
ytrafo = function(data)
trafo(data, numeric_trafo = rank_trafo,
block = rounding$block),
xtrafo = mcp_trafo(methods = "Tukey")))
## Simultaneous test of all pairwise comparisons
## Wide Angle vs. Round Out differ (Hollander and Wolfe, 1999, p. 296)
pvalue(st, method = "single-step") # subset pivotality is violated
## Strength Index of Cotton
## Hollander and Wolfe (1999, p. 286, Tab. 7.5)
cotton <- data.frame(
strength = c(7.46, 7.17, 7.76, 8.14, 7.63,
7.68, 7.57, 7.73, 8.15, 8.00,
7.21, 7.80, 7.74, 7.87, 7.93),
potash = ordered(rep(c(144, 108, 72, 54, 36), 3),
levels = c(144, 108, 72, 54, 36)),
block = gl(3, 5)
)
## One-sided asymptotic Page test
friedman_test(strength ~ potash | block, data = cotton, alternative = "greater")
## One-sided approximative (Monte Carlo) Page test
friedman_test(strength ~ potash | block, data = cotton, alternative = "greater",
distribution = approximate(nresample = 10000))
## Data from Quade (1979, p. 683)
dta <- data.frame(
y = c(52, 45, 38,
63, 79, 50,
45, 57, 39,
53, 51, 43,
47, 50, 56,
62, 72, 49,
49, 52, 40),
x = factor(rep(LETTERS[1:3], 7)),
b = factor(rep(1:7, each = 3))
)
## Approximative (Monte Carlo) Friedman test
## Quade (1979, p. 683)
friedman_test(y ~ x | b, data = dta,
distribution = approximate(nresample = 10000)) # chi^2 = 6.000
## Approximative (Monte Carlo) Quade test
## Quade (1979, p. 683)
(qt <- quade_test(y ~ x | b, data = dta,
distribution = approximate(nresample = 10000))) # W = 8.157
## Comparison with R's quade.test() function
quade.test(y ~ x | b, data = dta)
## quade.test() uses an F-statistic
b <- nlevels(qt@statistic@block)
A <- sum(qt@statistic@y^2)
B <- sum(statistic(qt, type = "linear")^2) / b
(b - 1) * B / (A - B) # F = 8.3765
# }
```

*Documentation reproduced from package coin, version 1.3-1, License: GPL-2*