# Pixar Film Ratings

## Overview

This vignette is to recreate an analysis on Pixar ratings that can be found here.

## Setup

    library(pixarfilms)
    library(dplyr)
    #>
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #>
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #>
    #>     intersect, setdiff, setequal, union
    library(tidyr)
    library(forcats)
    library(ggplot2)
    library(irr)
    #> Loading required package: lpSolve

## Data wrangling

Before we can visualize our data, let’s wrangle our data to help us visualize it later on.

    df <-
      public_response %>%
      select(-cinema_score) %>%
      mutate(film = fct_inorder(film)) %>%
      pivot_longer(cols = c("rotten_tomatoes", "metacritic", "critics_choice"),
                   names_to = "ratings",
                   values_to = "value") %>%
      mutate(ratings = case_when(
        ratings == "metacritic" ~ "Metacritic",
        ratings == "rotten_tomatoes" ~ "Rotten Tomatoes",
        ratings == "critics_choice" ~ "Critics Choice"
      )) %>%
      drop_na()

## Ratings over time

Their first plot was comparing the Pixar films’ ratings over time.

    df %>%
      ggplot(aes(x = film, y = value, col = ratings)) +
      geom_point() +
      geom_line(aes(group = ratings)) +
      scale_color_brewer(palette = "Dark2") +
      labs(x = "Pixar film", y = "Rating value") +
      guides(col = guide_legend(title = "Ratings")) +
      theme_minimal() +
      theme(axis.text.x = element_text(angle = 90, vjust = 0.5),
            legend.position = "bottom")

Verdict: people and critics generally agree that Cars 2 was not as good as the other Pixar films.

## Ratings by rating group

Next, let’s group the rating categories to see if there is a consistency across.

    df %>%
      ggplot(aes(x = ratings, y = value, col = ratings)) +
      geom_boxplot(width = 1.75 / length(unique(df$ratings))) +
      ggbeeswarm::geom_beeswarm() +
      ggrepel::geom_text_repel(data = . %>%
                                 filter(film == "Cars 2" ) %>%
                                 filter(ratings == "Rotten Tomatoes"),
                               aes(label = film),
                               point.padding = 0.4) +
      scale_color_brewer(palette = "Dark2") +
      guides(col = guide_legend(title = "Ratings")) +
      labs(x = "Rating group", y = "Rating value") +
      ylim(c(30, 100)) +
      theme_minimal() +
      theme(legend.position = "bottom")

Verdict: people at Rotten Tomatoes generally like Pixar films more than Metacritic and Critics Choice. The exception to this is Cars 2, which rated the lowest out of all critic groups.

## Rating consistency

Are the groups statistically consistent? Let’s perform an interclass correlation among the different critic groups.

    public_response %>%
      select(-c(cinema_score, film)) %>%
      drop_na() %>%
      icc(model = "twoway", type = "consistency")
    #>  Single Score Intraclass Correlation
    #>
    #>    Model: twoway
    #>    Type : consistency
    #>
    #>    Subjects = 21
    #>      Raters = 3
    #>    ICC(C,1) = 0.797
    #>
    #>  F-Test, H0: r0 = 0 ; H1: r0 > 0
    #>    F(20,40) = 12.8 , p = 1.25e-11
    #>
    #>  95%-Confidence Interval for ICC Population Values:
    #>   0.633 < ICC < 0.904

Verdict: with a null hypothesis that all critic groups are not consistent, for the 21 Pixar films we have data for all critic groups, all groups are consistent in rating Pixar films (p < 0.001).

## Session information

    sessionInfo()
    #> R version 3.6.1 (2019-07-05)
    #> Platform: x86_64-w64-mingw32/x64 (64-bit)
    #> Running under: Windows 10 x64 (build 17134)
    #>
    #> Matrix products: default
    #>
    #> locale:
    #> [1] LC_COLLATE=C
    #> [2] LC_CTYPE=English_United States.1252
    #> [3] LC_MONETARY=English_United States.1252
    #> [4] LC_NUMERIC=C
    #> [5] LC_TIME=English_United States.1252
    #>
    #> attached base packages:
    #> [1] stats     graphics  grDevices utils     datasets  methods   base
    #>
    #> other attached packages:
    #> [1] irr_0.84.1       lpSolve_5.6.15   ggplot2_3.3.2    forcats_0.5.0
    #> [5] tidyr_1.1.2      dplyr_1.0.5      pixarfilms_0.2.1
    #>
    #> loaded via a namespace (and not attached):
    #>  [1] Rcpp_1.0.5         vipor_0.4.5        pillar_1.4.6       compiler_3.6.1
    #>  [5] RColorBrewer_1.1-2 tools_3.6.1        digest_0.6.27      evaluate_0.14
    #>  [9] lifecycle_1.0.0    tibble_3.0.4       gtable_0.3.0       pkgconfig_2.0.3
    #> [13] rlang_0.4.10       DBI_1.1.0          ggrepel_0.8.2      yaml_2.2.1
    #> [17] beeswarm_0.3.1     xfun_0.16          withr_2.4.1        stringr_1.4.0
    #> [21] knitr_1.29         generics_0.1.0     vctrs_0.3.7        grid_3.6.1
    #> [25] tidyselect_1.1.0   glue_1.4.2         R6_2.4.1           ggbeeswarm_0.6.0
    #> [29] rmarkdown_2.7      farver_2.0.3       purrr_0.3.4        magrittr_1.5
    #> [33] scales_1.1.1       ellipsis_0.3.1     htmltools_0.5.0    assertthat_0.2.1
    #> [37] colorspace_1.4-1   labeling_0.3       stringi_1.4.6      munsell_0.5.0
    #> [41] crayon_1.4.1