The Mad Hatter’s Guide to Data Viz and Stats in R
  1. ANOVA - Tyre Brands and Mileage
  • Data Viz and Stats
    • Tools
      • Introduction to R and RStudio
    • Descriptive Analytics
      • Data
      • Inspect Data
      • Graphs
      • Summaries
      • Counts
      • Quantities
      • Groups
      • Distributions
      • Groups and Distributions
      • Change
      • Proportions
      • Parts of a Whole
      • Evolution and Flow
      • Ratings and Rankings
      • Surveys
      • Time
      • Space
      • Networks
      • Miscellaneous Graphing Tools, and References
    • Inference
      • Basics of Statistical Inference
      • 🎲 Samples, Populations, Statistics and Inference
      • Basics of Randomization Tests
      • Inference for a Single Mean
      • Inference for Two Independent Means
      • Inference for Comparing Two Paired Means
      • Comparing Multiple Means with ANOVA
      • Inference for Correlation
      • Testing a Single Proportion
      • Inference Test for Two Proportions
    • Modelling
      • Modelling with Linear Regression
      • Modelling with Logistic Regression
      • 🕔 Modelling and Predicting Time Series
    • Workflow
      • Facing the Abyss
      • I Publish, therefore I Am
      • Data Carpentry
    • Arts
      • Colours
      • Fonts in ggplot
      • Annotating Plots: Text, Labels, and Boxes
      • Annotations: Drawing Attention to Parts of the Graph
      • Highlighting parts of the Chart
      • Changing Scales on Charts
      • Assembling a Collage of Plots
      • Making Diagrams in R
    • AI Tools
      • Using gander and ellmer
      • Using Github Copilot and other AI tools to generate R code
      • Using LLMs to Explain Stat models
    • Case Studies
      • Demo:Product Packaging and Elderly People
      • Ikea Furniture
      • Movie Profits
      • Gender at the Work Place
      • Heptathlon
      • School Scores
      • Children's Games
      • Valentine’s Day Spending
      • Women Live Longer?
      • Hearing Loss in Children
      • California Transit Payments
      • Seaweed Nutrients
      • Coffee Flavours
      • Legionnaire’s Disease in the USA
      • Antarctic Sea ice
      • William Farr's Observations on Cholera in London
    • Projects
      • Project: Basics of EDA #1
      • Project: Basics of EDA #2
      • Experiments

On this page

  • 1 Setting up R Packages
  • 2 Introduction
  • 3 Data
  • 4 Download the Modified data
  • 5 Data Dictionary
  • 6 Plot the Data
  • 7 Task and Discussion: ANOVA
    • 7.1 Model + Table
    • 7.2 Post-hoc Analysis and Plots
    • 7.3 Conclusion

ANOVA - Tyre Brands and Mileage

1 Setting up R Packages

library(tidyverse)
library(mosaic)
library(skimr)
library(ggformula)
library(ggprism) # Interesting Categorical Axes
library(ggridges)
library(supernova)
# devtools::install_github('cttobin/ggthemr')
library(ggthemr)
library(ggsci)

Plot Fonts and Theme

Show the Code
library(systemfonts)
library(showtext)
## Clean the slate
systemfonts::clear_local_fonts()
systemfonts::clear_registry()
##
showtext_opts(dpi = 96) # set DPI for showtext
sysfonts::font_add(
  family = "Alegreya",
  regular = "../../../../../../fonts/Alegreya-Regular.ttf",
  bold = "../../../../../../fonts/Alegreya-Bold.ttf",
  italic = "../../../../../../fonts/Alegreya-Italic.ttf",
  bolditalic = "../../../../../../fonts/Alegreya-BoldItalic.ttf"
)

sysfonts::font_add(
  family = "Roboto Condensed",
  regular = "../../../../../../fonts/RobotoCondensed-Regular.ttf",
  bold = "../../../../../../fonts/RobotoCondensed-Bold.ttf",
  italic = "../../../../../../fonts/RobotoCondensed-Italic.ttf",
  bolditalic = "../../../../../../fonts/RobotoCondensed-BoldItalic.ttf"
)
showtext_auto(enable = TRUE) # enable showtext
##
theme_custom <- function() {
  font <- "Alegreya" # assign font family up front
  "%+replace%" <- ggplot2::"%+replace%" # nolint

  theme_classic(base_size = 14, base_family = font) %+replace% # replace elements we want to change

    theme(
      text = element_text(family = font), # set base font family

      # text elements
      plot.title = element_text( # title
        family = font, # set font family
        size = 24, # set font size
        face = "bold", # bold typeface
        hjust = 0, # left align
        margin = margin(t = 5, r = 0, b = 5, l = 0)
      ), # margin
      plot.title.position = "plot",
      plot.subtitle = element_text( # subtitle
        family = font, # font family
        size = 14, # font size
        hjust = 0, # left align
        margin = margin(t = 5, r = 0, b = 10, l = 0)
      ), # margin

      plot.caption = element_text( # caption
        family = font, # font family
        size = 9, # font size
        hjust = 1
      ), # right align

      plot.caption.position = "plot", # right align

      axis.title = element_text( # axis titles
        family = "Roboto Condensed", # font family
        size = 12
      ), # font size

      axis.text = element_text( # axis text
        family = "Roboto Condensed", # font family
        size = 9
      ), # font size

      axis.text.x = element_text( # margin for axis text
        margin = margin(5, b = 10)
      )

      # since the legend often requires manual tweaking
      # based on plot content, don't define it here
    )
}

## Use available fonts in ggplot text geoms too!
ggplot2::update_geom_defaults(geom = "text", new = list(
  family = "Roboto Condensed",
  face = "plain",
  size = 3.5,
  color = "#2b2b2b"
))
ggplot2::update_geom_defaults(geom = "label", new = list(
  family = "Roboto Condensed",
  face = "plain",
  size = 3.5,
  color = "#2b2b2b"
))

## Set the theme
ggplot2::theme_set(new = theme_custom())

2 Introduction

This is a dataset pertaining to tyres from different companies and their lifetime mileages.

3 Data

4 Download the Modified data

5 Data Dictionary

NoteQuantitative Variables

Write in.

NoteQualitative Variables

Write in.

NoteObservations

Write in.

6 Plot the Data

Error in `position_dodge()`:
! `orientation` must be a string or character vector.

7 Task and Discussion: ANOVA

  1. Complete the pre-analysis steps for ANOVA

Write in.

7.1 Model + Table

  1. Create the ANOVA model
  2. Create the ANOVA table using the supernova package
Call:
   aov(formula = Mileage ~ Brands, data = tyre)

Terms:
                  Brands Residuals
Sum of Squares  256.2908  266.6495
Deg. of Freedom        3        56

Residual standard error: 2.182108
Estimated effects may be unbalanced
 Analysis of Variance Table (Type III SS)
 Model: Mileage ~ Brands

                              SS df     MS      F   PRE     p
 ----- --------------- | ------- -- ------ ------ ----- -----
 Model (error reduced) | 256.291  3 85.430 17.942 .4901 .0000
 Error (from model)    | 266.649 56  4.762                   
 ----- --------------- | ------- -- ------ ------ ----- -----
 Total (empty model)   | 522.940 59  8.863                   

7.2 Post-hoc Analysis and Plots

  1. Compute the post-hoc differences in means and plot the pair-wise difference plots

  group_1     group_2       diff pooled_se      q    df  lower  upper  p_adj
  <chr>       <chr>        <dbl>     <dbl>  <dbl> <int>  <dbl>  <dbl>  <dbl>
1 Bridgestone Apollo      -3.019     0.563 -5.358    56 -5.129 -0.909  .0021
2 CEAT        Apollo      -0.038     0.563 -0.067    56 -2.148  2.072 1.0000
3 Falken      Apollo       2.826     0.563  5.015    56  0.716  4.935  .0043
4 CEAT        Bridgestone  2.981     0.563  5.291    56  0.871  5.091  .0024
5 Falken      Bridgestone  5.845     0.563 10.373    56  3.735  7.954  .0000
6 Falken      CEAT         2.863     0.563  5.082    56  0.754  4.973  .0037

7.3 Conclusion

  1. State a conclusion about the effect of Brands on Mileage.

Write in.

Back to top

License: CC BY-SA 2.0

Website made with ❤️ and Quarto, by Arvind V.

Hosted by Netlify .