Overview
The make_cld() function works seamlessly with multiple
input formats, making it a versatile tool for creating compact letter
displays from various statistical packages and custom data.
Supported Input Types
| Input Type | Example Packages | Function Examples |
|---|---|---|
pairwise.htest |
base R |
pairwise.t.test(),
pairwise.wilcox.test()
|
PMCMR / PMCMRplus
|
PMCMR, PMCMRplus |
kwAllPairsConoverTest(), dunnTest()
|
data.frame (rstatix) |
rstatix |
games_howell_test(), tukey_hsd()
|
PostHocTest |
DescTools |
ConoverTest(), DunnettTest()
|
matrix |
Custom | Symmetric p-value matrices |
data.frame |
Custom | Custom comparison data frames |
formula |
Custom | Formula interface for data frames |
Base R Pairwise Tests
Pairwise Wilcoxon Test
# Pairwise Wilcoxon rank sum test
result <- pairwise.wilcox.test(chickwts$weight, chickwts$feed, exact = FALSE)
make_cld(result)
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.05
#> Method: Wilcoxon rank sum test with continuity correction
#>
#> group cld spaced_cld
#> casein a a__
#> horsebean b _b_
#> linseed bc _bc
#> meatmeal ac a_c
#> soybean c __c
#> sunflower a a__Pairwise t-test
# Pairwise t-test
result2 <- pairwise.t.test(chickwts$weight, chickwts$feed)
make_cld(result2, alpha = 0.01) # More stringent threshold
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.01
#> Method: t tests with pooled SD
#>
#> group cld spaced_cld
#> casein a a__
#> horsebean b _b_
#> linseed bc _bc
#> meatmeal ac a_c
#> soybean c __c
#> sunflower a a__P-value Matrices
You can use symmetric matrices of p-values directly:
# Create a symmetric matrix of p-values
m <- matrix(c(
1.00, 0.22, 0.05, 0.00,
0.22, 1.00, 0.17, 0.01,
0.05, 0.17, 1.00, 0.22,
0.00, 0.01, 0.22, 1.00
), nrow = 4)
rownames(m) <- colnames(m) <- c("GroupA", "GroupB", "GroupC", "GroupD")
# Generate CLD
make_cld(m, alpha = 0.05)
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.05
#> Method: matrix
#>
#> group cld spaced_cld
#> GroupA a a_
#> GroupB a a_
#> GroupC ab ab
#> GroupD b _bPMCMRplus (Non-parametric Tests)
The package supports results from PMCMRplus for non-parametric post-hoc tests:
library(PMCMRplus)
# Kruskal-Wallis post-hoc test
kw_result <- kwAllPairsConoverTest(count ~ spray, data = InsectSprays)
make_cld(kw_result)
# Dunn test
dunn_result <- kwAllPairsDunnTest(count ~ spray, data = InsectSprays)
make_cld(dunn_result)rstatix (Tidyverse-friendly)
The rstatix package provides tidyverse-compatible statistical tests. Since rstatix returns data frames, you need to specify the column names for groups and p-values:
library(rstatix)
# Games-Howell test (for unequal variances)
gh_result <- games_howell_test(PlantGrowth, weight ~ group)
make_cld(gh_result, gr1_col = "group1", gr2_col = "group2", p_val_col = "p.adj")
# Tukey HSD test
tukey_result <- tukey_hsd(PlantGrowth, weight ~ group)
make_cld(tukey_result, gr1_col = "group1", gr2_col = "group2", p_val_col = "p.adj")
# Pairwise t-test
pwt_result <- pairwise_t_test(PlantGrowth, weight ~ group)
make_cld(pwt_result, gr1_col = "group1", gr2_col = "group2", p_val_col = "p.adj")DescTools
The DescTools package offers various post-hoc tests:
library(DescTools)
# Conover test
conover_result <- ConoverTest(count ~ spray, data = InsectSprays)
make_cld(conover_result)
# Dunnett test (comparison to control)
dunnett_result <- DunnettTest(weight ~ group, data = PlantGrowth)
make_cld(dunnett_result)Data Frames (Custom Results)
You can create CLDs from custom comparison results stored in data frames:
# Custom comparison results
comparisons <- data.frame(
group1 = c("Treatment_A", "Treatment_A", "Treatment_B"),
group2 = c("Treatment_B", "Treatment_C", "Treatment_C"),
p.adj = c(0.9, 0.02, 0.03)
)
make_cld(comparisons, alpha = 0.05)
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.05
#> Method: data.frame
#>
#> group cld spaced_cld
#> Treatment_B a a_
#> Treatment_C b _b
#> Treatment_A a a_Custom Column Names
If your data frame uses different column names, specify them:
# Data frame with custom column names
my_comparisons <- data.frame(
first_group = c("A", "A", "B"),
second_group = c("B", "C", "C"),
adjusted_p = c(0.9, 0.02, 0.03)
)
make_cld(my_comparisons,
gr1_col = "first_group",
gr2_col = "second_group",
p_val_col = "adjusted_p",
alpha = 0.05
)
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.05
#> Method: data.frame
#>
#> group cld spaced_cld
#> B a a_
#> C b _b
#> A a a_Formula Interface
The formula interface provides a convenient way to specify p-values and comparison labels. There are two formula formats available:
Single-variable formula (for pre-formatted comparison strings)
No hyphens are allowed in group names when using this format as they are used as separators.
# Using formula for data frames with comparison strings
my_data <- data.frame(
Comparison = c("A-B", "A-C", "B-C"),
p_value = c(0.12, 0.001, 0.045),
p_adjusted = c(0.18, 0.003, 0.068)
)
# Use the adjusted p-values
make_cld(p_adjusted ~ Comparison, data = my_data)
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.05
#> Method: formula
#>
#> group cld spaced_cld
#> A a a_
#> B ab ab
#> C b _b
# Or use the raw p-values
make_cld(p_value ~ Comparison, data = my_data)
#> Compact Letter Display (CLD)
#> Signif. level (alpha): 0.05
#> Method: formula
#>
#> group cld spaced_cld
#> A a a_
#> B a a_
#> C b _bTwo-variable formula (recommended for group names with hyphens)
When your group names contain hyphens or special characters, use the two-variable formula format which specifies groups separately:
# Data with group names containing hyphens
my_data2 <- data.frame(
group1 = c("Treatment-A", "Treatment-A", "Treatment-B"),
group2 = c("Treatment-B", "Treatment-C", "Treatment-C"),
p_adjusted = c(0.18, 0.003, 0.068)
)
# Two-variable formula (handles hyphens automatically)
make_cld(p_adjusted ~ group1 + group2, data = my_data2)