Lab 4 - `ggplot` e `dplyr`

Atividade

Nessa mini-análise trabalharemos com os dados usados no projeto publicada por Five Thirty Eight “The Dollar-And-Cents Case Against Hollywood’s Exclusion of Women”.

Sua tarefa é preencher os espaços em branco assinalados por ___.

Dados e pacotes

Vamos analisar o conjunto de dados bechdel, que contém informações sobre filmes e seu desempenho financeiro, além de informações sobre o teste de Bechdel, que avalia a representação feminina em filmes.

O teste de Bechdel é um critério simples que avalia se um filme contém pelo menos duas mulheres que falam entre si sobre algo que não seja um homem.

Começamos com o carregamento dos pacotes que vamos utilizar.

library(pacman)
p_load(fivethirtyeight, tidyverse, tidytuesday)
## Warning: package 'tidytuesday' is not available for this version of R
## 
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: 'BiocManager' not available.  Could not check Bioconductor.
## 
## Please use `install.packages('BiocManager')` and then retry.
## Warning in p_install(package, character.only = TRUE, ...):
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
## logical.return = TRUE, : there is no package called 'tidytuesday'
## Warning in p_load(fivethirtyeight, tidyverse, tidytuesday): Failed to install/load:
## tidytuesday

O carregamento dos dados pode ser feito considerando o código a seguir:

raw_bechdel <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2021/2021-03-09/raw_bechdel.csv')
## Rows: 8839 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): imdb_id, title
## dbl (3): year, id, rating
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
movies <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2021/2021-03-09/movies.csv')
## Rows: 1794 Columns: 34
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (24): imdb, title, test, clean_test, binary, domgross, intgross, code, d...
## dbl  (7): year, budget, budget_2013, period_code, decade_code, metascore, im...
## num  (1): imdb_votes
## lgl  (2): response, error
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Dicionário dos dados

raw_bechdel.csv

variáveltipo de dadodescrição
yearintegerYear of release
idintegerID of film
imdb_idcharacterIMDB ID
titlecharacterTitle of film
ratingintegerRating (0-3), 0 = unscored, 1. It has to have at least two [named] women in it, 2. Who talk to each other, 3. About something besides a man

movies.csv

VariávelTipo de dadoDescrição
yeardoubleYear
imdbcharacterIMDB
titlecharacterTitle of movie
testcharacterBechdel Test outcome
clean_testcharacterBechdel Test cleaned
binarycharacterBinary pass/fail of bechdel
budgetdoubleBudget as of release year
domgrosscharacterDomestic gross in release year
intgrosscharacterInternational gross in release year
codecharacterCode
budget_2013doubleBudget normalized to 2013
domgross_2013characterDomestic gross normalized to 2013
intgross_2013characterInternational gross normalized to 2013
period_codedoublePeriod code
decade_codedoubleDecade Code
imdb_idcharacterIMDB ID
plotcharacterPlot of movie
ratedcharacterRating of movie
responsecharacterResponse?
languagecharacterLanguage of film
countrycharacterCountry produced in
writercharacterWriter of film
metascoredoubleMetascore rating (0-100)
imdb_ratingdoubleIMDB Rating 0-10
directorcharacterDirector of movie
releasedcharacterReleased date
actorscharacterActors
genrecharacterGenre
awardscharacterAwards
runtimecharacterRuntime
typecharacterType of film
postercharacterPoster image
imdb_votescharacterIMDB Votes
errorcharacterError?

Vamos focar nossa análise em filmes lançados entre 1990 e 2013.

bechdel90_13 <- bechdel %>% 
  filter(between(year, 1990, 2013))

Existem ’___’ filmes. (insira a quantidade de filmes)


As variáveis financeiras em que vamos nos concentrar são as seguintes:

  • budget_2013: Orçamento em dólares de 2013 ajustados à inflação.
  • domgross_2013: Dólares internos brutos (EUA) em 2013, dólares ajustados pela inflação.
  • intgross_2013: Total internacional (i.e., mundial) bruto em 2013 dólares corrigidos da inflação.

E também utilizaremos as variáveis binary e clean_test para grouping.


Análise

Vamos ver como o orçamento mediano e o bruto variam conforme o filme caso tenha passado no teste de Bechdel, que é armazenado na variável “binary”.

bechdel90_13 %>%
  group_by(binary) %>%
  summarise(med_budget = median(budget_2013),
            med_domgross = median(domgross_2013, na.rm = TRUE),
            med_intgross = median(intgross_2013, na.rm = TRUE))
## # A tibble: 2 × 4
##   binary med_budget med_domgross med_intgross
##   <chr>       <dbl>        <dbl>        <dbl>
## 1 FAIL    48385984.    57318606.    104475669
## 2 PASS    31070724     45330446.     80124349

Em seguida, vamos ver como o orçamento meidano e o bruto variam por um indicador mais detalhado do resultado do teste de Bechdel.

Essa informação é armazenada na variável ‘clean_test’, que assume os seguintes valores:

  • ok = passa no teste
  • dubious.
  • men = as mulheres só falam de homens
  • notalk = as mulheres não falam umas com as outras
  • nowomen = menos de duas mulheres
bechdel90_13 %>%
  group_by(clean_test) %>%
  summarise(med_budget = median(budget_2013),
            med_domgross = median(domgross_2013, na.rm = TRUE),
            med_intgross = median(intgross_2013, na.rm = TRUE))
## # A tibble: 5 × 4
##   clean_test med_budget med_domgross med_intgross
##   <ord>           <dbl>        <dbl>        <dbl>
## 1 nowomen     43373066     44891296.    89509349 
## 2 notalk      56570084.    63890455    123102194 
## 3 men         39737690.    56392786     99578022.
## 4 dubious     35790994     49173429     89883201 
## 5 ok          31070724     45330446.    80124349

A fim de avaliar como o retorno do investimento varia entre os filmes que passam e fracassam no teste de Bechdel, vamos primeiro criar uma nova variável chamada roi como uma razão do orçamento bruto.

bechdel90_13 <- bechdel90_13 %>%
  mutate(roi = (intgross_2013 + domgross_2013) / budget_2013)

Vamos ver quais filmes têm o maior retorno sobre o investimento.

bechdel90_13 %>%
  arrange(desc(roi)) %>% 
  select(title, roi, year)
## # A tibble: 1,615 × 3
##    title                     roi  year
##    <chr>                   <dbl> <int>
##  1 Paranormal Activity      671.  2007
##  2 The Blair Witch Project  648.  1999
##  3 El Mariachi              583.  1992
##  4 Clerks.                  258.  1994
##  5 In the Company of Men    231.  1997
##  6 Napoleon Dynamite        227.  2004
##  7 Once                     190.  2006
##  8 The Devil Inside         155.  2012
##  9 Primer                   142.  2004
## 10 Fireproof                134.  2008
## # ℹ 1,605 more rows

Abaixo está uma visualização do retorno do investimento por resultado de teste, porém é difícil ver as distribuições devido a algumas observações extremas.

ggplot(data = bechdel90_13, 
       mapping = aes(x = clean_test, y = roi, color = binary)) +
  geom_boxplot() +
  labs(title = "Retorno do investimento vs. Resultados do teste Bechdel",
       x = "Resultado detalhado de Bechdel",
       y = "___",
       color = "Resultado binário de Bechdel")

Quais são os filmes com retorno de investimento muito altos?

bechdel90_13 %>%
  filter(roi > 400) %>%
  select(title, budget_2013, domgross_2013, year)
## # A tibble: 3 × 4
##   title                   budget_2013 domgross_2013  year
##   <chr>                         <int>         <dbl> <int>
## 1 Paranormal Activity          505595     121251476  2007
## 2 The Blair Witch Project      839077     196538593  1999
## 3 El Mariachi                   11622       3388636  1992

Veja como é a relação entre os filmes com menor retorno e o resultado detalhado do teste Bechedel.

A ampliação dos filmes com roi < ___ proporciona uma melhor visão de como os medianos através das categorias se comparam:

ggplot(data = bechdel90_13, mapping = aes(x = clean_test, y = roi, color = binary)) +
  geom_boxplot() +
  labs(title = "Retorno do investimento vs. Resultado do teste de Bechdel",
       subtitle = "___", # Something about zooming in to a certain level
       x = "Resultado detalhado de Bechdel",
       y = "Retorno do investimento",
       color = "Resultado binário de Bechdel") +
  coord_cartesian(ylim = c(0, 15))

Previous