Find an english version of this README file here.
O Spotify é o serviço de streaming mais popular do ocidente, com mais de 270 milhões usuários ativos em 79 países. A plataforma, junto de suas competidoras, impactaram drasticamente o funcionamento da indústria musical nos últimos anos.
A empresa disponibiliza em Spotify Charts dados diários e semanais das 200 músicas com mais streams, permitindo filtrar por região.
Este repositório consolida os dados diários de 2019 para o mercado brasileiro, ou seja, extrai o Top 200 de todos os dias de 2019 e os converte em um único dataframe contendo as músicas, suas estatísticas de acesso e suas características técnicas e subjetivas (BPM, duração, tom, modo, dançabilidade, etc.).
Também foi feita uma rápida modelagem de previsões para o parâmetro Popularidade. Os resultados se mostraram iguais ou piores à previsão por média, com conversão dos modelos à mesma.
A análise seria impossível sem o pacote spotifyr, que permite a extração de informações sobre as músicas através do API oficial do Spotify.
Também é necessário ressaltar que o código para scraping foi quase que inteiramente baseado no trabalho de Nathaniel Lao.
install.packages("spotifyr") # Allows for extracting metadata for songs
install.packages("dplyr") # DF manipulation
install.packages("readr") # Fil reading
install.packages("stringr") # For string manipulation
install.packages("ggplot2") # Plotting
install.packages("ggdark") # Plotting themes
A análise foi dividida em três partes (arquivo markdown):
- Spotify Scraping: extração dos dados de Spotify Charts, manipulação do dataframe e extração das informações sobre as músicas através do API do Spotify
- Spotify Objective Analysis: análise sobre características objetivas das músicas, tais como posição no Top 200, tom, modo, duração, BPM, etc.
- Spotify Subjective Analysis: curta análise sobre características subjetivas das músicas, tais como dançabilidade, energia, acusticidade, etc.
Foram utilizados modelos de Redes Neurais Artificiais (ANN), regressão linear (LM), support vector machines (SVM) e floresta aleatória (RF) para prever a popularidade das músicas. Os modelos estão disponíveis na pasta Modelos, porém os resultados não são 100% reproduzíveis já que a divisão amostral é aleatória.
A popularidade foi regressada contra todos os parâmetros numéricos disponíveis na API do Spotify, e p estimador utilizado foi o Erro Quadrático Médio Mean Squared Error. Abaixo, é possível ver que os modelos não se saíram melhores do que a previsão por média. Apenas o de redes neurais teve um resultado similar, porém justamente pelo fato do modelo começar a convergir as previsões para a média.
Mean | ANN | LM | SVM | RF | |
---|---|---|---|---|---|
MSE | 398 | 396 | 413 | 415 | 427 |
Dois são os motivos para um resultado tão pífio:
- Pequena amostra: o dataframe de teste continha menos de 300 linhas, o que dificulta a previsão pelos modelos;
- A baixa explicabilidade da popularidade das músicas pelos parâmetros obtidos pelo API, o que já havia sido constatado na análise subjetiva.
É muito difícil um fator ser completamente determinante para o sucesso de uma música, sendo este o resultado de diversas variáveis, muitas delas dificilmente quantificáveis, como fatores culturais, estratégias de marketing, tendências locais, etc.
De qualquer forma, a análise nos permite verificar algumas das principais tendências do mercado musical brasileiro. Abaixo é possível conferir gráficos gerados.