Hoje vamos analisar alguns filmes que Vin Diesel atuou em sua carreira, e baseado na aceitação e bilheteria que o filme obteve, vamos separar os filmes em grupos e tentar identificar se existe alguma relação entre os filmes em seus respectivos grupos. Para isso vamos utilizar os dados disponíveis no site rottentomatoes.
filmes = read_imported_data("vin_diesel")
glimpse(filmes)
## Rows: 24
## Columns: 6
## $ avaliacao <int> 59, 30, 85, 45, 85, 67, 44, 18, 82, 92, 71, 57, 77, 28,~
## $ nota_audiencia <dbl> 82, 78, 91, 37, 87, 72, 41, 43, 82, 92, 84, 56, 83, 67,~
## $ filme <chr> "F9 The Fast Saga", "Bloodshot", "Avengers: Infinity Wa~
## $ papel <chr> "Dominic Toretto (Character),Producer", "Ray Garrison/B~
## $ bilheteria <dbl> 171.0, 10.1, 678.8, 44.9, 389.8, 225.7, 1.7, 27.4, 350.~
## $ ano <int> 2021, 2020, 2018, 2017, 2017, 2017, 2016, 2015, 2015, 2~
São esses os dados disponíveis:
Neste gráfico abaixo podemos ver a relação entre a bilheteria e a aceitação de alguns filmes que o autor participou. Vemos que os filmes que obtiveram valores mais altos são filmes produzidos pela Marvel, como Guardiões da galáxia e Vingadores: Guerra infinita. Os filmes da série Velozes e furiosos também fazem parte do topo, apesar que alguns terem uma avaliação menos positiva, também é possível ver que dois títulos tiveram uma bilheteria menor que dois milhões de dólares.
Com essa visualização já é possível observar alguns conjuntos de filmes próximos, podendo agrupá-los e observar se existem algo em comum.
a <-filmes %>%
ggplot(aes(x = avaliacao, y = bilheteria, label = filme)) +
geom_point(size = 2, color = 'blue') +
scale_y_log10()+
labs(
x = "Aceitação",
y = "Bilheteria"
)
ggplotly(a)
Para realizar o agrupamento vamos utilizar do KMeans, que basicamente tenta encontrar a menor distância de um ponto escolhido com cada filme, e classifica aqueles filmes que estão próximos a esse ponto como pertencentes ao mesmo grupo. Dessa forma vamos utilizar os dados de bilheteria e aceitação de cada filme, realizando uma normalização nos dados para que o agrupamento não seja enviesado com dados de escalas distintas.
dados2 <- filmes %>%
select(avaliacao, bilheteria)
dados <- log10(dados2)
dadosNorm <- as.data.frame(scale(dados))
# Original data
p1 <- ggplot(dados2, aes(x=avaliacao, y=bilheteria)) +
geom_point() +
labs(title="Dados originais") +
theme_bw()
# Normalized data
p2 <- ggplot(dadosNorm, aes(x=avaliacao, y=bilheteria)) +
geom_point() +
labs(title="Dados normalizados") +
theme_bw()
# Subplot
grid.arrange(p1, p2, ncol=2)
No gráfico acima podemos observar os dados em seu estado original e com a normalização. Com a normalização fica mais claro e mais fácil realizar o agrupamento dos filmes
set.seed(1234)
k4 <- kmeans(dadosNorm, centers=4)
filmes$cluster <- k4$cluster
Visualizando o gráfico normalizado e executando algumas vezes o kmeans com quantidade de grupos diferentes, foi escolhido o melhor com 3 grupos que pode ser visualizado logo abaixo.
a <-filmes %>%
ggplot(aes(x = avaliacao, y = bilheteria, label = filme, colour = cluster)) +
geom_point(size = 2, colour = filmes$cluster) +
scale_y_log10()+
labs(
x = "Aceitação",
y = "Bilheteria"
)
ggplotly(a)
Antes de realizar esse agrupamento eu esperava que os filmes da série Velozes e furiosos estivessem próximos, bem como os filmes xXx, os velozes e furiosos tiveram uma boa proximidade no grupo verde, menos dois deles que cairam no grupo vermelho. O verde ficou com os filmes com maior bilheteria da Marvel, mas com dominância da série Velozes e furiosos, e o xXx no grupo vermelho. Baseado nesses agrupamentos eu diria que o verde representa o corredor de rua em Veloses e furiosos, o vermelho representaria o bandido espião, o preto seria os filmes esquecidos e o azul é o grupo com histórias mais densas.