Skip to contents

Computes pairwise contrasts with emmeans::emmeans() and add them to the results tibble. Works only with models supported by emmeans, see vignette("models", package = "emmeans").

Usage

tidy_add_pairwise_contrasts(
  x,
  variables = all_categorical(),
  keep_model_terms = FALSE,
  pairwise_reverse = TRUE,
  contrasts_adjust = NULL,
  conf.level = attr(x, "conf.level"),
  emmeans_args = list(),
  model = tidy_get_model(x),
  quiet = FALSE
)

Arguments

x

(data.frame)
A tidy tibble as produced by tidy_*() functions.

variables

include (tidy-select)
Variables for those pairwise contrasts should be added. Default is all_categorical().

keep_model_terms

(logical)
Keep terms from the model?

pairwise_reverse

(logical)
Determines whether to use "pairwise" (if TRUE) or "revpairwise" (if FALSE), see emmeans::contrast().

contrasts_adjust

(string)
Optional adjustment method when computing contrasts, see emmeans::contrast() (if NULL, use emmeans default).

conf.level

(numeric)
Confidence level, by default use the value indicated previously in tidy_and_attach().

emmeans_args

(list)
List of additional parameter to pass to emmeans::emmeans() when computing pairwise contrasts.

model

(a model object, e.g. glm)
The corresponding model, if not attached to x.

quiet

(logical)
Whether broom.helpers should not return a message when requested output cannot be generated. Default is FALSE.

Note

If the contrasts column is not yet available in x, tidy_add_contrasts() will be automatically applied.

For multi-components models, such as zero-inflated Poisson or beta regression, support of pairwise contrasts is still experimental.

Examples

# \donttest{
  mod1 <- lm(Sepal.Length ~ Species, data = iris)
  mod1 |>
    tidy_and_attach() |>
    tidy_add_pairwise_contrasts()
#> # A tibble: 4 × 13
#>   term          variable var_class var_type var_nlevels contrasts contrasts_type
#>   <chr>         <chr>    <chr>     <chr>          <int> <chr>     <chr>         
#> 1 (Intercept)   (Interc… NA        interce…          NA NA        NA            
#> 2 versicolor -… Species  factor    categor…           3 pairwise  pairwise      
#> 3 virginica - … Species  factor    categor…           3 pairwise  pairwise      
#> 4 virginica - … Species  factor    categor…           3 pairwise  pairwise      
#> # ℹ 6 more variables: estimate <dbl>, std.error <dbl>, statistic <dbl>,
#> #   p.value <dbl>, conf.low <dbl>, conf.high <dbl>

  mod1 |>
    tidy_and_attach() |>
    tidy_add_pairwise_contrasts(pairwise_reverse = FALSE)
#> # A tibble: 4 × 13
#>   term          variable var_class var_type var_nlevels contrasts contrasts_type
#>   <chr>         <chr>    <chr>     <chr>          <int> <chr>     <chr>         
#> 1 (Intercept)   (Interc… NA        interce…          NA NA        NA            
#> 2 setosa - ver… Species  factor    categor…           3 revpairw… pairwise      
#> 3 setosa - vir… Species  factor    categor…           3 revpairw… pairwise      
#> 4 versicolor -… Species  factor    categor…           3 revpairw… pairwise      
#> # ℹ 6 more variables: estimate <dbl>, std.error <dbl>, statistic <dbl>,
#> #   p.value <dbl>, conf.low <dbl>, conf.high <dbl>

  mod1 |>
    tidy_and_attach() |>
    tidy_add_pairwise_contrasts(keep_model_terms = TRUE)
#> # A tibble: 6 × 13
#>   term          variable var_class var_type var_nlevels contrasts contrasts_type
#>   <chr>         <chr>    <chr>     <chr>          <int> <chr>     <chr>         
#> 1 (Intercept)   (Interc… NA        interce…          NA NA        NA            
#> 2 Speciesversi… Species  factor    categor…           3 contr.tr… treatment     
#> 3 Speciesvirgi… Species  factor    categor…           3 contr.tr… treatment     
#> 4 versicolor -… Species  factor    categor…           3 pairwise  pairwise      
#> 5 virginica - … Species  factor    categor…           3 pairwise  pairwise      
#> 6 virginica - … Species  factor    categor…           3 pairwise  pairwise      
#> # ℹ 6 more variables: estimate <dbl>, std.error <dbl>, statistic <dbl>,
#> #   p.value <dbl>, conf.low <dbl>, conf.high <dbl>

  mod1 |>
    tidy_and_attach() |>
    tidy_add_pairwise_contrasts(contrasts_adjust = "none")
#> # A tibble: 4 × 13
#>   term          variable var_class var_type var_nlevels contrasts contrasts_type
#>   <chr>         <chr>    <chr>     <chr>          <int> <chr>     <chr>         
#> 1 (Intercept)   (Interc… NA        interce…          NA NA        NA            
#> 2 versicolor -… Species  factor    categor…           3 pairwise  pairwise      
#> 3 virginica - … Species  factor    categor…           3 pairwise  pairwise      
#> 4 virginica - … Species  factor    categor…           3 pairwise  pairwise      
#> # ℹ 6 more variables: estimate <dbl>, std.error <dbl>, statistic <dbl>,
#> #   p.value <dbl>, conf.low <dbl>, conf.high <dbl>

  if (.assert_package("gtsummary", boolean = TRUE)) {
    mod2 <- glm(
      response ~ age + trt + grade,
      data = gtsummary::trial,
      family = binomial
    )
    mod2 |>
      tidy_and_attach(exponentiate = TRUE) |>
      tidy_add_pairwise_contrasts()
  }
#> # A tibble: 6 × 13
#>   term          variable var_class var_type var_nlevels contrasts contrasts_type
#>   <chr>         <chr>    <chr>     <chr>          <int> <chr>     <chr>         
#> 1 (Intercept)   (Interc… NA        interce…          NA NA        NA            
#> 2 age           age      numeric   continu…          NA NA        NA            
#> 3 Drug B / Dru… trt      character dichoto…           2 pairwise  pairwise      
#> 4 II / I        grade    factor    categor…           3 pairwise  pairwise      
#> 5 III / I       grade    factor    categor…           3 pairwise  pairwise      
#> 6 III / II      grade    factor    categor…           3 pairwise  pairwise      
#> # ℹ 6 more variables: estimate <dbl>, std.error <dbl>, statistic <dbl>,
#> #   p.value <dbl>, conf.low <dbl>, conf.high <dbl>
# }