Neste relatório, iremos explorar os dados da atriz Julia Roberts. Os dados foram extraídos do RottenTomatoes.
Julia Fiona Roberts (Smyrna, 28 de outubro de 1967) é uma atriz e produtora norte-americana, vencedora do Oscar de Melhor Atriz por seu papel em Erin Brockovich, também atuou em Pretty Woman pelo qual se tornou conhecida em Hollywood.
## ANTES DE USAR
# Para criar data/movies.csv
import_data("julia_roberts") # ou com o ator/atriz que você escolher
## Loading required package: rvest
## Loading required package: xml2
##
## Attaching package: 'rvest'
## The following object is masked from 'package:purrr':
##
## pluck
## The following object is masked from 'package:readr':
##
## guess_encoding
## Warning in rlang::eval_tidy(~as.numeric(gsub("[$|M]", "", BOXOFFICE)),
## <environment>): NAs introduzidos por coerção
filmes = read_imported_data()
O objetivo aqui, é fazer um agrupamento dos filmes da atriz levando em consideração duas variáveis: bilheteria e avaliação. Primeiro, vamos analisar separadamente cada uma dessas variáveis, utilizaremos também o ano de lançamento de cada filme para observar a variação durante o tempo.
p = filmes %>%
ggplot(aes(size = 3, x = ano,
y = bilheteria,
text = paste("Filme:",filme,
"\nBilheteria:",
bilheteria,"m",
"\nAvaliação:", avaliacao,
"\nAno:",ano))) +
geom_point(color = paleta[1]) +
labs(title = "Variação da bilheteria ao longo dos anos", y = "Bilheteria", x = "Ano de lançamento")
ggplotly(p, tooltip = "text")
Há uma variação no faturamento dos filmes em que Julia Roberts atuou, o que mais se destacou nesse aspecto foi Ocean’s Eleven com bilheteria de 183.4 m. Não é possível perceber uma associação entre bilheteria e o ano, pois em alguns anos a bilheteria cai em comparação ao anterior, e logo após, no ano seguinte, o faturamente cresce.
p = filmes %>%
ggplot(aes(x = "", y = bilheteria, text = paste("Filme:",filme,
"\nBilheteria:",
bilheteria,"m"))) +
geom_jitter(width = .05, alpha = .4, size = 3, color = paleta[5]) +
labs(x = "", y="Bilheteria")
ggplotly(p, tooltip="text")
Observando esse gráfico é mais fácil verificar em quais grupos os filmes se encaixariam. Há diferentes abordagens que poderíamos tomar, acredito que separar os filmes nos seguintes grupos: bilheteria abaixo de 50, de 50 à 100, de 100 à 150 e acima de 150 (apenas o filme Ocean’s Eleven), seria uma boa abordagem.
p = filmes %>%
ggplot(aes(size = 3, x = ano,
y = avaliacao,
text = paste("Filme:",filme,
"\nBilheteria:",
bilheteria,"m",
"\nAvaliação:", avaliacao,
"\nAno:",ano))) +
geom_point(color = paleta[1]) +
labs(title = "Variação da avaliação ao longo dos anos", y = "Avaliação", x = "Ano de lançamento")
ggplotly(p, tooltip = "text")
Entre 2003 e 2006 a avaliação dos filmes crescreu consideravelmente, porém, a partir de 2009, os filmes não tiveram boa avaliação, em comparação aos anos anteriores, mas, logo em 2011, os filmes lançados voltaram a serem bem avaliados. Não existe nenhum padrão, a variação da avaliação é muito alta ao longo dos anos.
p = filmes %>%
ggplot(aes(x = "", y = avaliacao, text = paste("Filme:",filme,
"\nAvaliação:",
avaliacao,"m"))) +
geom_jitter(width = .05, alpha = .4, size = 3, color = paleta[5]) +
labs(x = "", y="Bilheteria")
ggplotly(p, tooltip="text")
De acordo com o gráfico acima, ainda assim, não fica muito clara a definição dos grupos, mas poderíamos separar em: filmes com avaliação abaixo de 40 e acima de 40.
Agora utilizando as duas variáveis disponíveis, avaliação e bilheteria, vamos observar como os filmes se dividem melhor, em quantos grupos.
Para tentar agrupar os filmes em grupos, é importante perceber que as escalas de bilheteria e avaliação são bem diferentes. Então, abaixo é feito a normalização das variáveis.
m_transformado = filmes %>%
mutate(bilheteria_log = as.vector(scale(log10(bilheteria))),
avaliacao_scaled = as.vector(scale(avaliacao)))
summary(m_transformado %>% select(bilheteria_log, avaliacao_scaled))
## bilheteria_log avaliacao_scaled
## Min. :-1.38709 Min. :-2.03083
## 1st Qu.:-0.98944 1st Qu.:-0.74741
## Median : 0.07942 Median : 0.06543
## Mean : 0.00000 Mean : 0.00000
## 3rd Qu.: 0.65103 3rd Qu.: 0.62158
## Max. : 1.80801 Max. : 1.30607
É utilizado o “Gap Static Calculation” para escolher o melhor valor para o k.
plot_clusgap = function(clusgap, title = "Gap Statistic calculation results") {
require("ggplot2")
gstab = data.frame(clusgap$Tab, k = 1:nrow(clusgap$Tab))
p = ggplot(gstab, aes(k, gap)) + geom_line() + geom_point(size = 5)
p = p + geom_errorbar(aes(ymax = gap + SE.sim, ymin = gap - SE.sim), width = .2)
p = p + ggtitle(title)
return(p)
}
gaps <- m_transformado %>%
select(bilheteria_log, avaliacao) %>%
clusGap(FUN = kmeans, nstart = 20, K.max = 8, B = 200)
plot_clusgap(gaps)
Com a execução do Gap Statics é possível perceber que o melhor valor para o K é 5. Logo, assumindo assim esse valor, executamos o algoritmo do k-means.
set.seed(12345)
n_clusters = 5
cluster = m_transformado %>%
select(bilheteria_log, avaliacao_scaled) %>%
kmeans(centers = n_clusters, nstart = 20)
agrupado = cluster %>%
augment(m_transformado)
p1 = agrupado %>%
ggplot(aes(x = avaliacao, y = bilheteria, color = .cluster, label=filme)) +
geom_point(size = 3)+
scale_y_log10()
ggscatter(agrupado, x="avaliacao", y="bilheteria", color=".cluster")+
stat_chull(aes(fill = .cluster), alpha=0.3, geom="polygon")+
xlab("Avaliação")+
ylab("Bilheteria")
ggplotly(p1)
Podemos perceber a presença de 5 grupos de filmes da atriz Julia Roberts, vamos chama-lós de:
Bem avaliados e bem faturados: Grupo em cor vermelho, número 1. Aqui neste grupo temos os filmes com as melhores avaliações e também as maiores bilheterias. São filmes de muito sucesso que são caracterizados pelo drama e ação.
Comédia Romântica Fracassadas: Grupo em cor mostarda, número 2. Os filmes neste grupo são todos do gênero comédia romântica. Eles não são bem sucedidos, pois um deles possui a pior avaliação em comparação com os demais, além disso a bilheteria foi muito baixa.
Romance: Grupo em verde, número 3. Os filmes neste grupo são caracterizados pelo romance. Possuem bilheteria entre 50 e 120. Não foram muito bem avaliados.
Comédia e Drama: Grupo em azul, número 4. Os filmes deste grupo tiveram avaliação bem parecidas entre 60 e 70, e bilheteria muito baixa, menor que 50. Não foram bem vendidos, mas são ótimos filmes.
Avaliados na média: Grupo em rosa, número 5. Aqui neste grupo os filmes tiveram avaliação na média, acredito que agradaram a metade do público e a outra metade não.