Adds the compact letter display (CLD) to a pairwise
comparison result. Groups that do not share a letter are
significantly different. This is a convenient way to annotate plots
(e.g. one letter per box/bar) after an all-pairwise post-hoc test such as
tukey_hsd(), dunn_test(),
games_howell_test(), conover_test(),
wilcox_test() or t_test().
The letters are computed with the insert-and-absorb algorithm (Piepho, 2004)
using base R only, so no additional package is required (the results match
multcompView::multcompLetters()).
Arguments
- test
an all-pairwise comparison result returned by an
rstatixfunction (e.g.tukey_hsd(),dunn_test(), a pairwiset_test()/wilcox_test(), ...). Must contain thegroup1andgroup2columns and a p-value column.- p.col
character. The p-value column to threshold. If
NULL(default),"p.adj"is used when present, otherwise"p".- threshold
the significance threshold (default 0.05). Comparisons with a p-value below
thresholdare treated as significant; comparisons with a missing (NA) p-value are treated as non-significant.- reversed
logical. If
TRUE, reverses the order in which the letters are assigned (so that, with groups ordered by increasing level, the later groups receive the earlier letters). Default isFALSE.- ...
not used.
Value
a tibble with one row per group and the following columns: any grouping
variables (for a grouped test), .y. (the outcome variable, when
present), group (the group level) and cld (the compact letter
display). Groups sharing a letter are not significantly different.
References
Piepho, H.-P. (2004) An Algorithm for a Letter-Based Representation of All-Pairwise Comparisons. Journal of Computational and Graphical Statistics, 13(2), 456-466.
Examples
# Tukey HSD post-hoc, then compact letter display
res <- ToothGrowth %>%
mutate(dose = factor(dose)) %>%
tukey_hsd(len ~ dose)
res %>% add_cld()
#> # A tibble: 3 × 3
#> term group cld
#> <chr> <chr> <chr>
#> 1 dose 0.5 a
#> 2 dose 1 b
#> 3 dose 2 c
# Works on rank-based post-hocs too
ToothGrowth %>% dunn_test(len ~ dose) %>% add_cld()
#> # A tibble: 3 × 3
#> .y. group cld
#> <chr> <chr> <chr>
#> 1 len 0.5 a
#> 2 len 1 b
#> 3 len 2 c
# Grouped pairwise test -> one CLD per group
ToothGrowth %>%
mutate(dose = factor(dose)) %>%
group_by(supp) %>%
tukey_hsd(len ~ dose) %>%
add_cld()
#> # A tibble: 6 × 4
#> supp term group cld
#> <fct> <chr> <chr> <chr>
#> 1 OJ dose 0.5 a
#> 2 OJ dose 1 b
#> 3 OJ dose 2 b
#> 4 VC dose 0.5 a
#> 5 VC dose 1 b
#> 6 VC dose 2 c