Performs exact binomial test and pairwise comparisons following a
significant exact multinomial test. Wrapper around the R base function
link[stats]{binom.test}() that returns a data frame as a result.
binom_test(
x,
n,
p = 0.5,
alternative = "two.sided",
conf.level = 0.95,
detailed = FALSE
)
pairwise_binom_test(
x,
p.adjust.method = "holm",
alternative = "two.sided",
conf.level = 0.95
)
pairwise_binom_test_against_p(
x,
p = rep(1/length(x), length(x)),
p.adjust.method = "holm",
alternative = "two.sided",
conf.level = 0.95
)numeric vector containing the counts.
number of trials; ignored if x has length 2.
a vector of probabilities of success. The length of p must be the same as the number of groups specified by x, and its elements must be greater than 0 and less than 1.
indicates the alternative hypothesis and must be
one of "two.sided", "greater" or "less".
You can specify just the initial letter.
confidence level for the returned confidence interval.
logical value. Default is FALSE. If TRUE, a detailed result is shown.
method to adjust p values for multiple comparisons. Used when pairwise comparisons are performed. Allowed values include "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none". If you don't want to adjust the p value (not recommended), use p.adjust.method = "none".
return a data frame containing the p-value and its significance. with some the following columns:
group, group1, group2:
the categories or groups being compared.
statistic: the number
of successes.
parameter: the number of trials.
p:
p-value of the test.
p.adj: the adjusted p-value.
method: the used statistical test.
p.signif,
p.adj.signif: the significance level of p-values and adjusted p-values,
respectively.
estimate: the estimated probability of success.
alternative: a character string describing the alternative
hypothesis.
conf.low,conf.high: Lower and upper bound on a
confidence interval for the probability of success.
The returned object has an attribute called args, which is a list holding the test arguments.
binom_test(): performs exact binomial test. Wrapper around the R
base function binom.test that returns a dataframe as a
result.
pairwise_binom_test(): performs pairwise comparisons (binomial test)
following a significant exact multinomial test.
pairwise_binom_test_against_p(): performs pairwise comparisons (binomial test)
following a significant exact multinomial test for given probabilities.
# Exact binomial test
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# Data: 160 mice with cancer including 95 male and 65 female
# Q1: Does cancer affect more males than females?
binom_test(x = 95, n = 160)
#> # A tibble: 1 × 6
#> n estimate conf.low conf.high p p.signif
#> * <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 160 0.594 0.513 0.671 0.0216 *
# => yes, there are a significant difference
# Q2: compare the observed proportion of males
# to an expected proportion (p = 3/5)
binom_test(x = 95, n = 160, p = 3/5)
#> # A tibble: 1 × 6
#> n estimate conf.low conf.high p p.signif
#> * <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 160 0.594 0.513 0.671 0.872 ns
# => there are no significant difference
# Multinomial test
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# Data
tulip <- c(red = 81, yellow = 50, white = 27)
# Question 1: are the color equally common ?
# this is a test of homogeneity
res <- multinom_test(tulip)
res
#> # A tibble: 1 × 2
#> p p.signif
#> * <dbl> <chr>
#> 1 0.000000711 ****
attr(res, "descriptives")
#> # A tibble: 3 × 3
#> group observed expected
#> <chr> <dbl> <dbl>
#> 1 red 81 52.7
#> 2 yellow 50 52.7
#> 3 white 27 52.7
# Pairwise comparisons between groups
pairwise_binom_test(tulip, p.adjust.method = "bonferroni")
#> # A tibble: 3 × 9
#> group1 group2 n estimate conf.low conf.high p p.adj p.adj…¹
#> * <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 red yellow 131 0.618 0.529 0.702 0.00851 2.55e-2 *
#> 2 red white 108 0.75 0.657 0.828 0.000000191 5.72e-7 ****
#> 3 yellow white 77 0.649 0.532 0.755 0.0117 3.5 e-2 *
#> # … with abbreviated variable name ¹p.adj.signif
# Question 2: comparing observed to expected proportions
# this is a goodness-of-fit test
expected.p <- c(red = 0.5, yellow = 0.33, white = 0.17)
res <- multinom_test(tulip, expected.p)
res
#> # A tibble: 1 × 2
#> p p.signif
#> * <dbl> <chr>
#> 1 0.942 ns
attr(res, "descriptives")
#> # A tibble: 3 × 3
#> group observed expected
#> <chr> <dbl> <dbl>
#> 1 red 81 79
#> 2 yellow 50 52.1
#> 3 white 27 26.9
# Pairwise comparisons against a given probabilities
pairwise_binom_test_against_p(tulip, expected.p)
#> # A tibble: 3 × 10
#> group observed expected n estimate conf.low conf.high p p.adj p.adj…¹
#> * <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 red 81 79 158 0.513 0.432 0.593 0.811 1 ns
#> 2 yellow 50 52.1 158 0.316 0.245 0.395 0.800 1 ns
#> 3 white 27 26.9 158 0.171 0.116 0.239 1 1 ns
#> # … with abbreviated variable name ¹p.adj.signif