Title: | (Permuted) Brunner-Munzel Test |
---|---|
Description: | Provides the functions for Brunner-Munzel test and permuted Brunner-Munzel test, which enable to use formula, matrix, and table as argument. These functions are based on Brunner and Munzel (2000) <doi:10.1002/(SICI)1521-4036(200001)42:1%3C17::AID-BIMJ17%3E3.0.CO;2-U> and Neubert and Brunner (2007) <doi:10.1016/j.csda.2006.05.024>, and are written with FORTRAN. |
Authors: | Toshiaki Ara [aut, cre] |
Maintainer: | Toshiaki Ara <[email protected]> |
License: | GPL-2 | GPL-3 |
Version: | 2.0 |
Built: | 2025-02-05 04:11:05 UTC |
Source: | https://github.com/toshi-ara/brunnermunzel |
This function performs the permuted Brunner-Munzel test.
brunnermunzel.permutation.test(x, ...) ## Default S3 method: brunnermunzel.permutation.test( x, y, alternative = c("two.sided", "greater", "less"), force = FALSE, est = c("original", "difference"), ... ) ## S3 method for class 'formula' brunnermunzel.permutation.test(formula, data, subset = NULL, na.action, ...) ## S3 method for class 'matrix' brunnermunzel.permutation.test(x, ...) ## S3 method for class 'table' brunnermunzel.permutation.test(x, ...)
brunnermunzel.permutation.test(x, ...) ## Default S3 method: brunnermunzel.permutation.test( x, y, alternative = c("two.sided", "greater", "less"), force = FALSE, est = c("original", "difference"), ... ) ## S3 method for class 'formula' brunnermunzel.permutation.test(formula, data, subset = NULL, na.action, ...) ## S3 method for class 'matrix' brunnermunzel.permutation.test(x, ...) ## S3 method for class 'table' brunnermunzel.permutation.test(x, ...)
x |
the numeric vector of data values from the sample 1, or 2 x n matrix of table (number of row must be 2 and column is ordinal variables). |
... |
further arguments to be passed to or from methods (This argument is for only formula). |
y |
the numeric vector of data values from the sample 2. If x is matrix or table, y must be missing. |
alternative |
a character string specifying the alternative
hypothesis, must be one of |
force |
|
est |
a method to calculate estimate and confidence interval,
must be either
This change is proposed by Dr. Julian D. Karch. |
formula |
a formula of the form |
data |
an optional matrix or data frame (or similar: see
|
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 |
A list containing the following components:
method |
the characters “permuted Brunner-Munzel Test” |
data.name |
a character string giving the name of the data. |
p.value |
the |
estimate |
an estimate of the effect size |
FORTRAN subroutine 'combination' in combination.f is derived from the program by shikino (http://slpr.sakura.ne.jp/qp/combination) (CC-BY-4.0). Thanks to shikono for your useful subroutine.
Karin Neubert and Edgar Brunner, “A studentized permutation test for the non-parametric Behrens-Fisher problem”, Computational Statistics and Data Analysis, Vol. 51, pp. 5192-5204 (2007).
This function is made in reference to following cite (in Japanese): Prof. Haruhiko Okumura (https://oku.edu.mie-u.ac.jp/~okumura/stat/brunner-munzel.html).
## Hollander & Wolfe (1973), 29f. ## Hamilton depression scale factor measurements in 9 patients with ## mixed anxiety and depression, taken at the first (x) and second ## (y) visit after initiation of a therapy (administration of a ## tranquilizer). x <- c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30) y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29) brunnermunzel.permutation.test(x, y) ## ## permuted Brunner-Munzel Test ## ## data: x and y ## p-value = 0.158 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## 'est' option ## if 'est = "difference"' return P(X<Y) - P(X>Y) brunnermunzel.permutation.test(x, y, est = "difference") ## ## permuted Brunner-Munzel Test ## ## data: x and y ## p-value = 0.158 ## sample estimates: ## P(X<Y)-P(X>Y) ## -0.4320988 ## Formula interface. dat <- data.frame( value = c(x, y), group = factor(rep(c("x", "y"), c(length(x), length(y))), levels = c("x", "y")) ) brunnermunzel.permutation.test(value ~ group, data = dat) ## ## permuted Brunner-Munzel Test ## ## data: value by group ## p-value = 0.158 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## Pain score on the third day after surgery for 14 patients under ## the treatment Y and 11 patients under the treatment N ## (see Brunner and Munzel, 2000; Neubert and Brunner, 2007). Y <- c(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 1) N <- c(3, 3, 4, 3, 1, 2, 3, 1, 1, 5, 4) brunnermunzel.permutation.test(Y, N) ## ## permuted Brunner-Munzel Test ## ## data: Y and N ## p-value = 0.008038 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Formula interface. dat <- data.frame( value = c(Y, N), group = factor(rep(c("Y", "N"), c(length(Y), length(N))), levels = c("Y", "N")) ) brunnermunzel.permutation.test(value ~ group, data = dat) ## ## permuted Brunner-Munzel Test ## ## data: value by group ## p-value = 0.008038 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Matrix or Table interface. ## dat1 <- matrix(c(4, 4, 2, 1, 5, 4), nr = 2, byrow = TRUE) dat2 <- as.table(dat1) brunnermunzel.permutation.test(dat1) # matrix ## ## permuted Brunner-Munzel Test ## ## data: Group1 and Group2 ## p-value = 0.1593 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68 brunnermunzel.permutation.test(dat2) # table ## ## Brunner-Munzel Test ## ## permuted Brunner-Munzel Test ## ## data: A and B ## p-value = 0.1593 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68
## Hollander & Wolfe (1973), 29f. ## Hamilton depression scale factor measurements in 9 patients with ## mixed anxiety and depression, taken at the first (x) and second ## (y) visit after initiation of a therapy (administration of a ## tranquilizer). x <- c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30) y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29) brunnermunzel.permutation.test(x, y) ## ## permuted Brunner-Munzel Test ## ## data: x and y ## p-value = 0.158 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## 'est' option ## if 'est = "difference"' return P(X<Y) - P(X>Y) brunnermunzel.permutation.test(x, y, est = "difference") ## ## permuted Brunner-Munzel Test ## ## data: x and y ## p-value = 0.158 ## sample estimates: ## P(X<Y)-P(X>Y) ## -0.4320988 ## Formula interface. dat <- data.frame( value = c(x, y), group = factor(rep(c("x", "y"), c(length(x), length(y))), levels = c("x", "y")) ) brunnermunzel.permutation.test(value ~ group, data = dat) ## ## permuted Brunner-Munzel Test ## ## data: value by group ## p-value = 0.158 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## Pain score on the third day after surgery for 14 patients under ## the treatment Y and 11 patients under the treatment N ## (see Brunner and Munzel, 2000; Neubert and Brunner, 2007). Y <- c(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 1) N <- c(3, 3, 4, 3, 1, 2, 3, 1, 1, 5, 4) brunnermunzel.permutation.test(Y, N) ## ## permuted Brunner-Munzel Test ## ## data: Y and N ## p-value = 0.008038 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Formula interface. dat <- data.frame( value = c(Y, N), group = factor(rep(c("Y", "N"), c(length(Y), length(N))), levels = c("Y", "N")) ) brunnermunzel.permutation.test(value ~ group, data = dat) ## ## permuted Brunner-Munzel Test ## ## data: value by group ## p-value = 0.008038 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Matrix or Table interface. ## dat1 <- matrix(c(4, 4, 2, 1, 5, 4), nr = 2, byrow = TRUE) dat2 <- as.table(dat1) brunnermunzel.permutation.test(dat1) # matrix ## ## permuted Brunner-Munzel Test ## ## data: Group1 and Group2 ## p-value = 0.1593 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68 brunnermunzel.permutation.test(dat2) # table ## ## Brunner-Munzel Test ## ## permuted Brunner-Munzel Test ## ## data: A and B ## p-value = 0.1593 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68
This function performs the Brunner–Munzel test for stochastic
equality of two samples, which is also known as the Generalized Wilcoxon
Test. NA
s from the data are omitted.
This function enables to use formula as argument.
brunnermunzel.test(x, ...) ## Default S3 method: brunnermunzel.test( x, y, alternative = c("two.sided", "greater", "less"), alpha = 0.05, perm = FALSE, est = c("original", "difference"), ... ) ## S3 method for class 'formula' brunnermunzel.test(formula, data, subset = NULL, na.action, ...) ## S3 method for class 'matrix' brunnermunzel.test(x, ...) ## S3 method for class 'table' brunnermunzel.test(x, ...)
brunnermunzel.test(x, ...) ## Default S3 method: brunnermunzel.test( x, y, alternative = c("two.sided", "greater", "less"), alpha = 0.05, perm = FALSE, est = c("original", "difference"), ... ) ## S3 method for class 'formula' brunnermunzel.test(formula, data, subset = NULL, na.action, ...) ## S3 method for class 'matrix' brunnermunzel.test(x, ...) ## S3 method for class 'table' brunnermunzel.test(x, ...)
x |
the numeric vector of data values from the sample 1, or 2 x n matrix of table (number of row must be 2 and column is ordinal variables). |
... |
further arguments to be passed to or from methods (This argument is for only formula). |
y |
the numeric vector of data values from the sample 2. If x is matrix or table, y must be missing. |
alternative |
a character string specifying the alternative
hypothesis, must be one of |
alpha |
significance level, default is 0.05 for 95% confidence interval. |
perm |
logical
|
est |
a method to calculate estimate and confidence interval,
must be either
This change is proposed by Dr. Julian D. Karch. |
formula |
a formula of the form |
data |
an optional matrix or data frame (or similar: see
|
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 |
A list containing the following components:
data.name |
a character string giving the name of the data. |
statistic |
the Brunner–Munzel test statistic. |
parameter |
the degrees of freedom. |
p.value |
the |
conf.int |
the confidence interval. |
estimate |
an estimate of the effect size |
There exist discrepancies with Brunner and Munzel (2000) because there is a typo in the paper. The corrected version is in Neubert and Brunner (2007) (e.g., compare the estimates for the case study on pain scores). The current R function follows Neubert and Brunner (2007).
The R script of brunnermunzel.test.default is
derived from that of brunner.munzel.test
in lawstat
package,
and is rewritten with FORTRAN.
Thanks to authors of lawstat
package.
## Hollander & Wolfe (1973), 29f. ## Hamilton depression scale factor measurements in 9 patients with ## mixed anxiety and depression, taken at the first (x) and second ## (y) visit after initiation of a therapy (administration of a ## tranquilizer). x <- c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30) y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29) brunnermunzel.test(x, y) ## ## Brunner-Munzel Test ## ## data: x and y ## Brunner-Munzel Test Statistic = -1.4673, df = 15.147, p-value = 0.1628 ## 95 percent confidence interval: ## -0.02962941 0.59753064 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## 'est' option ## if 'est = "difference"' return P(X<Y) - P(X>Y) brunnermunzel.test(x, y, est = "difference") ## ## Brunner-Munzel Test ## ## data: x and y ## Brunner-Munzel Test Statistic = -1.4673, df = 15.147, p-value = 0.1628 ## 95 percent confidence interval: ## -1.0592588 0.1950613 ## sample estimates: ## P(X<Y)-P(X>Y) ## -0.4320988 ## Formula interface. dat <- data.frame( value = c(x, y), group = factor(rep(c("x", "y"), c(length(x), length(y))), levels = c("x", "y")) ) brunnermunzel.test(value ~ group, data = dat) ## ## Brunner-Munzel Test ## ## data: value by group ## Brunner-Munzel Test Statistic = -1.4673, df = 15.147, p-value = 0.1628 ## 95 percent confidence interval: ## -0.02962941 0.59753064 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## Pain score on the third day after surgery for 14 patients under ## the treatment Y and 11 patients under the treatment N ## (see Brunner and Munzel, 2000; Neubert and Brunner, 2007). Y <- c(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 1) N <- c(3, 3, 4, 3, 1, 2, 3, 1, 1, 5, 4) brunnermunzel.test(Y, N) ## ## Brunner-Munzel Test ## ## data: Y and N ## Brunner-Munzel Test Statistic = 3.1375, df = 17.683, p-value = 0.005786 ## 95 percent confidence interval: ## 0.5952169 0.9827052 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Formula interface. dat <- data.frame( value = c(Y, N), group = factor(rep(c("Y", "N"), c(length(Y), length(N))), levels = c("Y", "N")) ) brunnermunzel.test(value ~ group, data = dat) ## ## Brunner-Munzel Test ## ## data: value by group ## Brunner-Munzel Test Statistic = 3.1375, df = 17.683, p-value = ## 0.005786 ## 95 percent confidence interval: ## 0.5952169 0.9827052 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Matrix or Table interface. ## dat1 <- matrix(c(4, 4, 2, 1, 5, 4), nr = 2, byrow = TRUE) dat2 <- as.table(dat1) brunnermunzel.test(dat1) # matrix ## ## Brunner-Munzel Test ## ## data: Group1 and Group2 ## Brunner-Munzel Test Statistic = 1.5511, df = 16.961, p-value = ## 0.1393 ## 95 percent confidence interval: ## 0.4351213 0.9248787 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68 brunnermunzel.test(dat2) # table ## ## Brunner-Munzel Test ## ## data: A and B ## Brunner-Munzel Test Statistic = 1.5511, df = 16.961, p-value = ## 0.1393 ## 95 percent confidence interval: ## 0.4351213 0.9248787 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68
## Hollander & Wolfe (1973), 29f. ## Hamilton depression scale factor measurements in 9 patients with ## mixed anxiety and depression, taken at the first (x) and second ## (y) visit after initiation of a therapy (administration of a ## tranquilizer). x <- c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30) y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29) brunnermunzel.test(x, y) ## ## Brunner-Munzel Test ## ## data: x and y ## Brunner-Munzel Test Statistic = -1.4673, df = 15.147, p-value = 0.1628 ## 95 percent confidence interval: ## -0.02962941 0.59753064 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## 'est' option ## if 'est = "difference"' return P(X<Y) - P(X>Y) brunnermunzel.test(x, y, est = "difference") ## ## Brunner-Munzel Test ## ## data: x and y ## Brunner-Munzel Test Statistic = -1.4673, df = 15.147, p-value = 0.1628 ## 95 percent confidence interval: ## -1.0592588 0.1950613 ## sample estimates: ## P(X<Y)-P(X>Y) ## -0.4320988 ## Formula interface. dat <- data.frame( value = c(x, y), group = factor(rep(c("x", "y"), c(length(x), length(y))), levels = c("x", "y")) ) brunnermunzel.test(value ~ group, data = dat) ## ## Brunner-Munzel Test ## ## data: value by group ## Brunner-Munzel Test Statistic = -1.4673, df = 15.147, p-value = 0.1628 ## 95 percent confidence interval: ## -0.02962941 0.59753064 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.2839506 ## Pain score on the third day after surgery for 14 patients under ## the treatment Y and 11 patients under the treatment N ## (see Brunner and Munzel, 2000; Neubert and Brunner, 2007). Y <- c(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 1, 1) N <- c(3, 3, 4, 3, 1, 2, 3, 1, 1, 5, 4) brunnermunzel.test(Y, N) ## ## Brunner-Munzel Test ## ## data: Y and N ## Brunner-Munzel Test Statistic = 3.1375, df = 17.683, p-value = 0.005786 ## 95 percent confidence interval: ## 0.5952169 0.9827052 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Formula interface. dat <- data.frame( value = c(Y, N), group = factor(rep(c("Y", "N"), c(length(Y), length(N))), levels = c("Y", "N")) ) brunnermunzel.test(value ~ group, data = dat) ## ## Brunner-Munzel Test ## ## data: value by group ## Brunner-Munzel Test Statistic = 3.1375, df = 17.683, p-value = ## 0.005786 ## 95 percent confidence interval: ## 0.5952169 0.9827052 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.788961 ## Matrix or Table interface. ## dat1 <- matrix(c(4, 4, 2, 1, 5, 4), nr = 2, byrow = TRUE) dat2 <- as.table(dat1) brunnermunzel.test(dat1) # matrix ## ## Brunner-Munzel Test ## ## data: Group1 and Group2 ## Brunner-Munzel Test Statistic = 1.5511, df = 16.961, p-value = ## 0.1393 ## 95 percent confidence interval: ## 0.4351213 0.9248787 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68 brunnermunzel.test(dat2) # table ## ## Brunner-Munzel Test ## ## data: A and B ## Brunner-Munzel Test Statistic = 1.5511, df = 16.961, p-value = ## 0.1393 ## 95 percent confidence interval: ## 0.4351213 0.9248787 ## sample estimates: ## P(X<Y)+.5*P(X=Y) ## 0.68