Tidy summarizes information about the components of a model. A model component might be a single term in a regression, a single hypothesis, a cluster, or a class. Exactly what tidy considers to be a model component varies across models but is usually self-evident. If a model has several distinct types of components, you will need to specify which components to return.
# S3 method for class 'ref.grid'
tidy(x, conf.int = FALSE, conf.level = 0.95, ...)
A ref.grid
object created by emmeans::ref_grid()
.
Logical indicating whether or not to include a confidence
interval in the tidied output. Defaults to FALSE
.
The confidence level to use for the confidence interval
if conf.int = TRUE
. Must be strictly greater than 0 and less than 1.
Defaults to 0.95, which corresponds to a 95 percent confidence interval.
Additional arguments passed to emmeans::summary.emmGrid()
or
lsmeans::summary.ref.grid()
. Cautionary note: misspecified arguments
may be silently ignored!
Returns a data frame with one observation for each estimated marginal mean, and one column for each combination of factors. When the input is a contrast, each row will contain one estimated contrast.
There are a large number of arguments that can be
passed on to emmeans::summary.emmGrid()
or lsmeans::summary.ref.grid()
.
tidy()
, emmeans::ref_grid()
, emmeans::emmeans()
,
emmeans::contrast()
Other emmeans tidiers:
tidy.emmGrid()
,
tidy.lsmobj()
,
tidy.summary_emm()
A tibble::tibble()
with columns:
Upper bound on the confidence interval for the estimate.
Lower bound on the confidence interval for the estimate.
Degrees of freedom used by this term in the model.
The two-sided p-value associated with the observed statistic.
The standard error of the regression term.
Expected marginal mean
T-ratio statistic
# load libraries for models and data
library(emmeans)
# linear model for sales of oranges per day
oranges_lm1 <- lm(sales1 ~ price1 + price2 + day + store, data = oranges)
# reference grid; see vignette("basics", package = "emmeans")
oranges_rg1 <- ref_grid(oranges_lm1)
td <- tidy(oranges_rg1)
td
#> # A tibble: 36 × 9
#> price1 price2 day store estimate std.error df statistic p.value
#> <dbl> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 51.2 48.6 1 1 2.92 2.72 23 1.07 0.294
#> 2 51.2 48.6 2 1 3.85 2.70 23 1.42 0.168
#> 3 51.2 48.6 3 1 11.0 2.53 23 4.35 0.000237
#> 4 51.2 48.6 4 1 6.10 2.65 23 2.30 0.0309
#> 5 51.2 48.6 5 1 12.8 3.16 23 4.04 0.000505
#> 6 51.2 48.6 6 1 8.75 3.59 23 2.44 0.0229
#> 7 51.2 48.6 1 2 4.96 3.12 23 1.59 0.125
#> 8 51.2 48.6 2 2 5.89 2.76 23 2.13 0.0438
#> 9 51.2 48.6 3 2 13.1 2.74 23 4.77 0.0000823
#> 10 51.2 48.6 4 2 8.14 2.74 23 2.97 0.00692
#> # ℹ 26 more rows
# marginal averages
marginal <- emmeans(oranges_rg1, "day")
tidy(marginal)
#> # A tibble: 6 × 6
#> day estimate std.error df statistic p.value
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 5.56 2.03 23 2.75 0.0115
#> 2 2 6.49 1.76 23 3.68 0.00123
#> 3 3 13.7 1.75 23 7.79 0.0000000676
#> 4 4 8.74 1.76 23 4.98 0.0000490
#> 5 5 15.4 2.86 23 5.39 0.0000178
#> 6 6 11.4 3.04 23 3.75 0.00103
# contrasts
tidy(contrast(marginal))
#> # A tibble: 6 × 8
#> term contrast null.value estimate std.error df statistic adj.p.value
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 day day1 effect 0 -4.65 1.35 23 -3.45 0.0132
#> 2 day day2 effect 0 -3.72 1.82 23 -2.04 0.105
#> 3 day day3 effect 0 3.45 1.81 23 1.90 0.105
#> 4 day day4 effect 0 -1.47 1.85 23 -0.799 0.519
#> 5 day day5 effect 0 5.22 1.88 23 2.78 0.0321
#> 6 day day6 effect 0 1.18 2.24 23 0.525 0.605
tidy(contrast(marginal, method = "pairwise"))
#> # A tibble: 15 × 8
#> term contrast null.value estimate std.error df statistic adj.p.value
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 day day1 - day2 0 -0.930 2.47 23 -0.377 0.999
#> 2 day day1 - day3 0 -8.10 2.47 23 -3.29 0.0337
#> 3 day day1 - day4 0 -3.18 2.51 23 -1.27 0.799
#> 4 day day1 - day5 0 -9.88 2.56 23 -3.86 0.00913
#> 5 day day1 - day6 0 -5.83 2.52 23 -2.31 0.229
#> 6 day day2 - day3 0 -7.17 2.48 23 -2.89 0.0777
#> 7 day day2 - day4 0 -2.25 2.44 23 -0.920 0.937
#> 8 day day2 - day5 0 -8.95 3.09 23 -2.89 0.0776
#> 9 day day2 - day6 0 -4.90 3.54 23 -1.38 0.737
#> 10 day day3 - day4 0 4.92 2.49 23 1.98 0.385
#> 11 day day3 - day5 0 -1.78 3.05 23 -0.583 0.991
#> 12 day day3 - day6 0 2.27 3.52 23 0.644 0.986
#> 13 day day4 - day5 0 -6.70 3.11 23 -2.15 0.296
#> 14 day day4 - day6 0 -2.65 3.57 23 -0.744 0.974
#> 15 day day5 - day6 0 4.05 2.56 23 1.58 0.617
# plot confidence intervals
library(ggplot2)
ggplot(tidy(marginal, conf.int = TRUE), aes(day, estimate)) +
geom_point() +
geom_errorbar(aes(ymin = conf.low, ymax = conf.high))
# by multiple prices
by_price <- emmeans(oranges_lm1, "day",
by = "price2",
at = list(
price1 = 50, price2 = c(40, 60, 80),
day = c("2", "3", "4")
)
)
by_price
#> price2 = 40:
#> day emmean SE df lower.CL upper.CL
#> 2 6.24 1.87 23 2.36 10.1
#> 3 13.41 2.08 23 9.10 17.7
#> 4 8.48 1.84 23 4.68 12.3
#>
#> price2 = 60:
#> day emmean SE df lower.CL upper.CL
#> 2 9.21 2.15 23 4.76 13.7
#> 3 16.38 1.93 23 12.40 20.4
#> 4 11.46 2.21 23 6.88 16.0
#>
#> price2 = 80:
#> day emmean SE df lower.CL upper.CL
#> 2 12.19 3.71 23 4.52 19.9
#> 3 19.36 3.33 23 12.48 26.2
#> 4 14.44 3.79 23 6.60 22.3
#>
#> Results are averaged over the levels of: store
#> Confidence level used: 0.95
tidy(by_price)
#> # A tibble: 9 × 7
#> day price2 estimate std.error df statistic p.value
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2 40 6.24 1.87 23 3.33 0.00291
#> 2 3 40 13.4 2.08 23 6.44 0.00000142
#> 3 4 40 8.48 1.84 23 4.61 0.000123
#> 4 2 60 9.21 2.15 23 4.28 0.000283
#> 5 3 60 16.4 1.93 23 8.50 0.0000000149
#> 6 4 60 11.5 2.21 23 5.18 0.0000299
#> 7 2 80 12.2 3.71 23 3.29 0.00321
#> 8 3 80 19.4 3.33 23 5.82 0.00000622
#> 9 4 80 14.4 3.79 23 3.81 0.000900
ggplot(tidy(by_price, conf.int = TRUE), aes(price2, estimate, color = day)) +
geom_line() +
geom_errorbar(aes(ymin = conf.low, ymax = conf.high))
# joint_tests
tidy(joint_tests(oranges_lm1))
#> # A tibble: 4 × 5
#> term num.df den.df statistic p.value
#> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 price1 1 23 30.3 0.0000134
#> 2 price2 1 23 2.23 0.149
#> 3 day 5 23 4.88 0.00346
#> 4 store 5 23 2.52 0.0583