0. Przygotowanie do pracy

Wczytanie bazy danych oraz bibliotek

movie <- read.csv("Movie-Ratings.csv")
library(tidyverse) # będę używał dplyr‚ tidyr oraz ggplot2
library(gridExtra) # będę chciał pokazać wykresy obok siebie

Zmiana nazw zmiennych na krótsze i bardziej intuicyjne

colnames(movie)
## [1] "Film"                      "Genre"                    
## [3] "Rotten.Tomatoes.Ratings.." "Audience.Ratings.."       
## [5] "Budget..million..."        "Year.of.release"
colnames(movie) <- c("Film", "Genre", "CriticR", "AudienceR", "Budget", "Year")

1. zależność między budżetem filmu a różnicą w ocenach między krytykami a publicznością

1.1 W ramach bazy danych tworzę zmienną DifferenceR, zawierającą różnicę w ocenach:

movie <- mutate(movie, DifferenceR = CriticR - AudienceR)

1.2 Wykres szczegółowy w podziale na gatunki:

detail <- ggplot(data=movie, aes(x=Budget, y=DifferenceR, col=Genre)) + 
  geom_point() +
  geom_smooth(col="blue", method="lm", se=FALSE) +
  facet_grid(. ~ Genre) + 
  labs(x = "Budżet", y = "Różnica w ocenach między krytykami a publicznością") +
  guides(color="none")

(komentarz odnośnie ostatniej funkcji guides() - usunąłem legendę, ponieważ połączony wykres ma korzystać tylko z legendy “prawego” wykresu)

1.3 Wykres ogólny w podziale na gatunki:

all <- ggplot(data=movie, aes(x=Budget, y=DifferenceR, col=Genre)) + 
  geom_point() +
  geom_smooth(col="blue", method="lm", se=FALSE) +
  labs(x = "Budżet", y = "")

(komentarz odnośnie ostatniej funkcji labs() - usunąłem podpis osi Y, ponieważ zgodnie ze wzorem, połączny wykres ma korzystać tylko z podpisu osi Y z “lewego” wykresu)

1.4 Połączenie wykresów:

grid.arrange(detail, all, nrow=1, ncol=2)

interpretacja:

[wykres z prawej]
Niezależnie od gatunku filmowego - im wyższy budżet danego filmu, tym większa różnica w ocenach (pomiędzy krytykami a publicznością).

[wykresy z lewej]
Gatunki akcji oraz przygodowe są namniej czułe na te zmiany, w pozostałych różnica zwiększa się znacząco.


2. zależność między budżetem filmu a różnicą w ocenach między krytykami a publicznością

2.1 Tworzę nową bazę z wybranymi kolumnami - tylko tymi, które mają być w ostatecznym wykresie. Następnie zmieniam układ tej bazy w taki sposób, aby powstała zmienna nominalna Rater (czyja ocena - czy krytyków czy publiczności) oraz liczbowa Rating (wysokość oceny):

movie2 <- movie %>%
                  select(CriticR, AudienceR, Year) %>%
                  gather("Rater", "Rating", -Year)

2.2 Modyfikuję typ zmiennych na czynniki, dzięki czemu mapowanie po osi X będzie w dwóch kolumach, a mapowanie po kolorze nie będzie w formie liniowego gradientu tylko osobnych kolorów:

movie2$Rater <- factor(movie2$Rater)
movie2$Year <- factor(movie2$Year)

2.3 Ostateczny wykres, w którym nieco wygasiłem punkty, aby cały wykres był mniej “krzykliwy”:

ggplot(data=movie2, aes(x=Rater, y=Rating, col=Year)) + 
  geom_jitter(alpha=0.75) + 
  geom_boxplot(alpha=0.5)

interpretacja:

Zestawienie ocen publiczności i krytyków bardzo ładnie przedstawia ogólną zgodność w tym, czy dany rok był lepszy czy gorszy pod względem ocen filmów. Mediana ocen w obu grupach w każdym roku spada od 2007 do 2009, a następnie rośnie w latach 2010 - 2011. Ponadto, wykres bardzo dobrze pokazuje dużo większy zakres ocen przyznawanych przez krytyków - są one rozciągnięte praktycznie na całej skali ocen 0-100. Oceny publiczności bardzo rzadko schodzą poniżej 25/100.


Autor: Patryk Barkowski