Skip to content

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 anova
tidy(x, ...)



An anova object, such as those created by stats::anova(), car::Anova(), car::leveneTest(), or car::linearHypothesis().


Additional arguments. Not used. Needed to match generic signature only. Cautionary note: Misspelled arguments will be absorbed in ..., where they will be ignored. If the misspelled argument has a default value, the default value will be used. For example, if you pass conf.lvel = 0.9, all computation will proceed using conf.level = 0.95. Two exceptions here are:

  • tidy() methods will warn when supplied an exponentiate argument if it will be ignored.

  • augment() methods will warn when supplied a newdata argument if it will be ignored.


The term column of an ANOVA table can come with leading or trailing whitespace, which this tidying method trims.

For documentation on the tidier for car::leveneTest() output, see tidy.leveneTest()


A tibble::tibble() with columns:


Degrees of freedom used by this term in the model.


Mean sum of squares. Equal to total sum of squares divided by degrees of freedom.


The two-sided p-value associated with the observed statistic.


The value of a T-statistic to use in a hypothesis that the regression term is non-zero.


Sum of squares explained by this term.


The name of the regression term.


# fit models
a <- lm(mpg ~ wt + qsec + disp, mtcars)
b <- lm(mpg ~ wt + qsec, mtcars)

mod <- anova(a, b)

# summarize model fit with tidiers
#> # A tibble: 2 × 7
#>   term                  df.residual   rss    df    sumsq statistic p.value
#>   <chr>                       <dbl> <dbl> <dbl>    <dbl>     <dbl>   <dbl>
#> 1 mpg ~ wt + qsec + di…          28  195.    NA NA       NA         NA    
#> 2 mpg ~ wt + qsec                29  195.    -1 -0.00102  0.000147   0.990
#> # A tibble: 1 × 2
#>   deviance df.residual
#>      <dbl>       <dbl>
#> 1     195.          29

# car::linearHypothesis() example
mod_lht <- linearHypothesis(a, "wt - disp")
#> # A tibble: 1 × 10
#>   term   null.value estimate std.error statistic p.value df.residual   rss
#>   <chr>       <dbl>    <dbl>     <dbl>     <dbl>   <dbl>       <dbl> <dbl>
#> 1 wt - …          0    -5.03      1.23      16.6 3.39e-4          28  195.
#> # ℹ 2 more variables: df <dbl>, sumsq <dbl>
#> # A tibble: 1 × 2
#>   deviance df.residual
#>      <dbl>       <dbl>
#> 1     195.          28