Todos nós sabemos que música é uma linguagem universal!
Encontrada em todas as tribos, culturas e regiões do mundo, a música sempre traz a quebra das barreiras etnico-raciais, religiosas, aquisitivas e une diferentes grupos em prol do bem estar. A música passou por diversos períodos da história e sofreu modificações ao longo do tempo, seja pela cultura na qual foi originada e adaptada, ou pelas tecnologias que existem atualmente e permitem uma evolução cada vez mais exponencial da elaboração de novas batidas, melodias e complementos visuais em forma de clipes para passar a mensagem com ainda mais impacto.
Todos temos aquela música preferida do momento, aquela música chiclete que não sai da cabeça, a música triste para os dias chuvosos e aquela batida que faz nosso corpo se animar!
E foi a partir dessa e outras curiosidades que nos propusemos a analisar essa base de dados com as top 50 músicas mais tocadas do Spotify no ano de 2019.
Gostaria de parabenizar o empenho, didática e iniciativa do professor Esteven Dutt Ross em trazer um curso amplo, com relação ao campo de estudo, porém pouco almejado. Inserir o R no estudo estatistico e quebrar a dinâmica de “gravar formulas e aplica-las com fim em uma média” foi bem mais proveitoso e acredito que tenha sido prazeroso ver a evolução dos alunos, ainda que remotamente. Obrigado pelas aulas e espero que continue tendo sucesso com suas pesquisas!
Neste projeto, tentaremos responder a algumas dessas questões. Nosso foco se atentará aos seguintes objetivos:
https://www.kaggle.com/leonardopena/top50spotify2019
Gráficos de Barra
Gráfico de Dispersão
Boxplot
Testes de Hipóteses
Teste de Fisher
Teste de Shapiro Wilk
Teste de Spearman
Teste de Wilcoxon
library(readr)
top50 <- read_csv("C:/Users/ferre/Desktop/estatisticas/Spotify/top50 concertado.csv",
col_types = cols(n = col_character()))
library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)
library(corrplot) corrplot 0.88 loaded
library(knitr)summary(top50) n sexo grupo_ou_solo nome_da_trilha
Length:50 Length:50 Length:50 Length:50
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
artista genero_da_faixa batidas_por_minuto energia
Length:50 Length:50 Min. : 85.0 Min. :32.00
Class :character Class :character 1st Qu.: 96.0 1st Qu.:55.25
Mode :character Mode :character Median :104.5 Median :66.50
Mean :120.1 Mean :64.06
3rd Qu.:137.5 3rd Qu.:74.75
Max. :190.0 Max. :88.00
dançabilidade volume_db ao_vivo valencia
Min. :29.00 Min. :-11.00 Min. : 5.00 Min. :10.00
1st Qu.:67.00 1st Qu.: -6.75 1st Qu.: 8.00 1st Qu.:38.25
Median :73.50 Median : -6.00 Median :11.00 Median :55.50
Mean :71.38 Mean : -5.66 Mean :14.66 Mean :54.60
3rd Qu.:79.75 3rd Qu.: -4.00 3rd Qu.:15.75 3rd Qu.:69.50
Max. :90.00 Max. : -2.00 Max. :58.00 Max. :95.00
duração acustica discurso popularidade
Min. :115.0 Min. : 1.00 Min. : 3.00 Min. :70.00
1st Qu.:176.8 1st Qu.: 8.25 1st Qu.: 5.00 1st Qu.:86.00
Median :198.0 Median :15.00 Median : 7.00 Median :88.00
Mean :201.0 Mean :22.16 Mean :12.48 Mean :87.50
3rd Qu.:217.5 3rd Qu.:33.75 3rd Qu.:15.00 3rd Qu.:90.75
Max. :309.0 Max. :75.00 Max. :46.00 Max. :95.00
knitr::kable(resumo <-top50 %>% summarise(media_bpm=mean(batidas_por_minuto),
media_energia=mean(energia),
media_danca=mean(dançabilidade),
media_volume=mean(volume_db),
media_duracao=mean(duração),
media_pularidade=mean(popularidade),
media_discurso=mean(discurso)))| media_bpm | media_energia | media_danca | media_volume | media_duracao | media_pularidade | media_discurso |
|---|---|---|---|---|---|---|
| 120.06 | 64.06 | 71.38 | -5.66 | 200.96 | 87.5 | 12.48 |
knitr::kable(resumo <-top50 %>% summarise(dp_bpm=sd(batidas_por_minuto),
dp_energia=sd(energia),
dp_danca=sd(dançabilidade),
dp_volume=sd(volume_db),
dp_duracao=sd(duração),
dp_pularidade=sd(popularidade),
dp_discurso=sd(discurso)))| dp_bpm | dp_energia | dp_danca | dp_volume | dp_duracao | dp_pularidade | dp_discurso |
|---|---|---|---|---|---|---|
| 30.89839 | 14.23191 | 11.92988 | 2.056448 | 39.14388 | 4.491488 | 11.1616 |
ggplot(top50) +
aes(x = grupo_ou_solo, fill = grupo_ou_solo) +
geom_bar() +
scale_fill_manual(values = list(
Grupo = "#0D0887", Solo = "#E0BA29")) +
labs(x = "grupo ou solo", y = "quantidade", title = "Relação entre Grupos e Artistas Solo") +
theme_minimal() +
theme(plot.title = element_text(size = 20L, face = "bold", hjust = 0.5), axis.title.y = element_text(size = 14L,
face = "bold"), axis.title.x = element_text(size = 14L, face = "bold"))table(top50$sexo)
Feminino Masculino
10 40
ggplot(top50) +
aes(x = sexo, fill = sexo) +
geom_bar() +
scale_fill_hue(direction = -1) +
labs(x = "sexo",
y = "Quantidade", title = "Relação entre o sexo dos artistas", subtitle = "Feminino/Masculino") +
theme_minimal() +
theme(plot.title = element_text(size = 14L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
hjust = 0.5), axis.title.y = element_text(size = 14L, face = "bold"), axis.title.x = element_text(size = 12L,
face = "bold"))ggplot(top50) +
aes(x = sexo, fill = genero_da_faixa) +
geom_bar(position = "dodge") +
scale_fill_hue(direction = 1) +
labs(
x = "Sexo",
y = "Quantidade",
title = "Afinidade entre Artista e Gênero Musical",
fill = "Gênero Musical"
) +
theme_minimal() +
theme(
plot.title = element_text(
size = 16L,
face = "bold",
hjust = 0.5
),
axis.title.y = element_text(
size = 12L,
face = "bold"
),
axis.title.x = element_text(
size = 12L,
face = "bold"
)
)summary(top50$popularidade) Min. 1st Qu. Median Mean 3rd Qu. Max.
70.00 86.00 88.00 87.50 90.75 95.00
- Pop e dance pop são músicas mais populares entre os gêneros?
- Tfw rap e reggaeton flow são gêneros menos populares?
library(ggplot2)
ggplot(top50) +
aes(x = genero_da_faixa, fill = genero_da_faixa, weight = popularidade) +
geom_bar() +
scale_fill_hue(direction = 1) +
labs(x = "Gênero da Faixa", y = "Popularidade", title = "Popularidade por Gênero Musical") +
coord_flip() +
theme_minimal() +
theme(plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
axis.title.y = element_text(size = 12L, face = "bold"), axis.title.x = element_text(size = 12L, face = "bold"))Conclui-se que os gêneros musicais mais populares são: pop e dance pop, conforme a hipótese em questão. Entretanto, não muito atrás desses gêneros damos destaque para música latina que alcançou um alto nível de popularidade entre as amostras coletadas.
Entre os gêneros não populares temos porcentagens quase idênticas entre: trap music, boy band, big room, australian pop e atl hip hop.
Logo, conclui-se que Pop e Dance Pop são as mÚusicas mais populares entre os gêneros e que OS GÊNEROS Fw e Reaggaeton flow não são os gêneros menos populares, como questionado nas hipóteses de pesquisa.
top50 %>%
filter(!(genero_da_faixa %in% c("trap music", "escape room", "pop house", "australian pop",
"atl hip hop", "big room", "boy band", "r&b en espanol", "brostep"))) %>%
ggplot() +
aes(
x = genero_da_faixa,
y = popularidade,
fill = genero_da_faixa
) +
geom_boxplot(shape = "circle") +
scale_fill_hue(direction = 1) +
labs(
x = "Gênero Musical",
y = "Quantidade",
title = "Popularidade Por Gênero Musical",
subtitle = "Boxplot"
) +
theme_minimal() +
theme(
plot.title = element_text(
size = 16L,
face = "bold",
hjust = 0.5
),
plot.subtitle = element_text(
face = "bold",
hjust = 0.5
)
)Por meio do gráfico, é possível concluir que:
A variáveis não possuem outliers além dos seus valores máximos e mínimos de Popularidade. Além disso, seus valores encontram-se próximos uns dos outros, embora haja algumas especificidades como:
Canadian hip hop
- Mínimo – 70.00
- 1° Quartil - 72.25
- Median - 74.50
- 3° Quartil – 76.75.00
- Máximo – 79.00
- O gráfico é simétrico
Canadian Pop
- Mínimo – 88.00
- 1° Quartil – 89.00
- Median – 90.00
- Mean – 89.67
- 3° Quartil – 91.00
- Máximo – 92.00
- O gráfico é assimétrico e possui uma variabilidade maior entre a mediana e o terceiro quartil.
EDM – Eletronic Dance Music
- Mínimo – 84.00
- 1° Quartil – 85.00
- Median – 88.00
- Mean – 86.00
- 3° Quartil – 88.00
- Máximo – 88.00
- O gráfico é assimétrico, pois o seu terceiro quartil encontrasse junto da mediana, o que mostra um padrão de variabilidade muito baixo nessa área em comparação ao primeiro quartil.
- Alem disso, demais variáveis da base de dados foram excluidas do boxplot por serem análises com classificações de raridade no campo de análise interpretativa.
ggplot(top50) +
aes(
x = genero_da_faixa,
fill = genero_da_faixa,
weight = discurso
) +
geom_bar() +
scale_fill_hue(direction = 1) +
labs(
x = "Gênero Musical",
y = "Discurso",
title = "Gênero Musical com mais diversidade de palavras"
) +
coord_flip() +
theme_minimal() +
theme(
plot.title = element_text(
size = 16L,
face = "bold",
hjust = 0.5
),
axis.title.y = element_text(
size = 12L,
face = "bold"
),
axis.title.x = element_text(
size = 12L,
face = "bold"
)
)Por meio do gráfico concluímos que o “dance pop” possui 2 vezes mais diversidade de palavras em comparação ao “electropop”, “latin” e “pop”. Além disso, possui 5 vezes mais palavras diferentes do que gêneros musicais, como “canadian hip hop” e “dfl rap”.
Gêneros musicais com menor variedade de palavras são: “pop house”, “boy band” e “big room”, enquanto os gêneros de maior diversidade são: “dance pop”, “latin”, “electropop” e “pop”.
ggplot(top50) +
aes(x = grupo_ou_solo, y = popularidade) +
geom_boxplot(shape = "circle", fill = "orange") +
labs(x = "Sexo",
y = "Popularidade",
title = "Relação entre a Popularidade de Grupos e Artistas Solo") +
theme_minimal() + theme(plot.title = element_text(
size = 16L,face = "bold",hjust = 0.5),
axis.title.y = element_text(size = 12L,face = "bold"),
axis.title.x = element_text(size = 12L,face = "bold"))O gráfico traz uma informação importante: existem 10 vezes mais artistas solo na amostra coletada do que grupos, o que nos faz supor que a popularidade e aceitabilidade de artistas solo é maior do que de grupos.
Há um questionamento que permeia a realidade do porquê de existirem poucos grupos na classificação e a resposta pode ser simples: existem poucos grupos no top 50 em comparação à artistas solo pois há poucos grupos no mercado musical comparativamente à artistas individuais. Talvez o gráfico seja representativo do que acontece no universo de artistas do mundo todo.
Outra possibilidade é a aceitação de grupos pelo público consumidor de música, que pode associar um sucesso musical com apenas uma voz em evidência. Será que existe baixa aceitação para grupos musicais no mundo todo ou apenas em países que dominam e alimentam a classificação da plataforma analisada, o Spotify?
ggplot(top50) +
aes(x = sexo, y = discurso) +
geom_boxplot(shape = "circle", fill = "#28CBB6") +
labs(x = "Sexo",
y = "Discurso",
title = "Relação entre Sexo e Discurso") +
theme_minimal() + theme(plot.title = element_text(
size = 16L,face = "bold",hjust = 0.5),
axis.title.y = element_text(size = 12L,face = "bold"),
axis.title.x = element_text(size = 12L,face = "bold"))O gráfico possui uma demonstração muito clara e representativa: Mulheres precisam de mais palavras em seu discurso. Levando em consideração que estamos olhando para o top 50 da maior plataforma de música do mundo, fica claro que para serem ouvidas mulheres precisam expor quase 3 vezes mais palavras em suas letras para que sejam entendidas, aceitas e apreciadas.
Em relação aos cantores do sexo masculino, que fazem uso de um terço de palavras em seu discurso do que mulheres, fica o questionamento e curiosidade de: quais são as palavras e mensagens que os levaram a estar nesse pódio?
Destaca-se os 5 outliers do sexo masculino que fogem do comum e apresentam uso de até mais palavras que a maior parte das cantoras presentes da classificação. Além de se comportarem de forma diferente que a maior parte dos homens avaliados na pesquisa, esses outliers podem ser justificados talvez pelo gênero musical que fazem parte ou por uma faixa musical específica que necessita do uso de mais palavras em seu discurso, sendo necessário uma análise individual para conclusões mais exatas.
Os outliers do grupo masculino abarcam os gêneros Latin, reggaeton (sendo repetidos duas vezes cada) e o trap music que geralmente usam um alto discurso para rimar.
ggplot(top50) +
aes(
x = genero_da_faixa,
fill = genero_da_faixa,
weight = dançabilidade
) +
geom_bar(position = "dodge") +
scale_fill_hue(direction = 1) +
labs(
x = "Gênero Musical",
y = "Dançabilidade",
title = "Dançabilidade por Gênero Musical"
) +
coord_flip() +
theme_minimal() +
theme(
plot.title = element_text(
size = 16L,
face = "bold",
hjust = 0.5
),
axis.title.y = element_text(
size = 12L,
face = "bold"
),
axis.title.x = element_text(
size = 12L,
face = "bold"
)
)Os gêneros musicais que mais se destacam são: dance pop, pop, latin e um pouco de canadian hip hop. as demais musicas variam entre valores abaixo de 200 pontos de dançabilidade.
Em contrapartida mostram-se não dançantes em destaque os gêneros de “pop house”, “big room” e “boy band”.
A respeito deste gráfico os resultados foram surpreendentes, pois de acordo com as hipóteses levantadas e o senso comum, percebeu-se que 3 gêneros encontram-se muito à frente dos outros, quase como uma sentença de que apenas esses são gêneros dançantes. São eles: “pop”, “dance pop” e “latin”.
Com isso, conclui-se que, o Eletro pop não é mais dançavel do que músicas latinas e Country Rap é ligeiramente mais popular do que DFW Rap.
par(bg="#d2faf8")
plot(top50$batidas_por_minuto, top50$popularidade, pch=19,
col="blue",
main = "Quanto mais Batidas por Minuto maior a popularidade?",
xlab="Batidas Por Minuto",ylab = "Popularidade")
abline(lsfit(top50$batidas_por_minuto, top50$popularidade), col="red", lwd=3)par(bg="white")
library(ggplot2)
ggplot(top50) +
aes(x = batidas_por_minuto, y = popularidade, colour = genero_da_faixa, size = batidas_por_minuto) +
geom_point(shape = "circle") +
scale_color_hue(direction = 1) +
labs(x = "Batidas Por Minuto", y = "Popularidade",
title = "Quanto Mais BPM Maior a Popularidade?", subtitle = "BPM/Popularidade", color = "Gênero",
size = "BPM") +
theme_minimal() +
theme(plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 12L, face = "bold", hjust = 0.5), axis.title.y = element_text(size = 12L,
face = "bold"), axis.title.x = element_text(size = 12L, face = "bold"))cor(top50$batidas_por_minuto, top50$popularidade)[1] 0.1960969
De acordo com os gráficos de dispersão apresentados, as menores batidas analisadas giram em torno de 85 BPM, como a música You Need To Calm Down da cantora solo, feminina, Taylor Swift do gênero dance pop e a música Akeaway do grupo musical masculino The Chainsmokers do gênero EDM. Percebe-se que com relação as músicas com menos batidas, existe uma variabilidade grande, sem um padrão definido.
library(ggplot2)
par(bg="#d2faf8")
plot(top50$energia, top50$dançabilidade, pch=19,
col="blue",
main = "Quanto Maior a Energia Marior a Dançabilidade??",
xlab="Energia",ylab = "Dançabilidade")
abline(lsfit(top50$energia, top50$dançabilidade), col="red", lwd=3)par(bg="white")
ggplot(top50) +
aes(x = energia, y = dançabilidade, colour = genero_da_faixa, size = energia) +
geom_point(shape = "circle") +
scale_color_hue(direction = 1) +
labs(x = "Energia", y = "Dançabilidade", title = "Energia por Dançabilidade",
subtitle = "Quanto Maior a Energia Marior a Dançabilidade?") +
theme_minimal() +
theme(legend.position = "top",
plot.title = element_text(size = 16L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "bold", hjust = 0.5), axis.title.y = element_text(size = 12L, face = "bold"), axis.title.x = element_text(size = 12L,
face = "bold"))cor(top50$energia, top50$dançabilidade)[1] 0.01825358
De acordo com os gráficos de dispersão apresentados, a maior concentração apresentada encontra-se acima do 60 pontos de ambas as variáveis.
par(bg="#d2faf8")
plot(top50$discurso, top50$popularidade, pch=19,
col="blue",
main = "Quanto Maior o Discurso Marior a Popularidade?",
xlab="Discurso",ylab = "Popularidade")
abline(lsfit(top50$batidas_por_minuto, top50$popularidade), col="red", lwd=3)par(bg="white")
ggplot(top50) + aes(
x = discurso,
y = popularidade,
colour = genero_da_faixa,
size = discurso
) +
geom_point(shape = "circle") +
scale_color_hue(direction = 1) +
labs(
x = "Discurso",
y = "Popularidade",
title = "Discurso por Popularidade",
subtitle = "Quanto Maior o Discurso Marior a Popularidade?"
) +
theme_minimal() +
theme(
legend.position = "top",
plot.title = element_text(
size = 16L,
face = "bold",
hjust = 0.5
),
plot.subtitle = element_text(
size = 12L,
face = "bold",
hjust = 0.5
),
axis.title.y = element_text(
size = 12L,
face = "bold"
),
axis.title.x = element_text(
size = 12L,
face = "bold"
)
)cor(top50$discurso, top50$popularidade)[1] 0.238553
De acordo com os gráficos de dispersão apresentados, a maior concentração apresentada encontra-se acima do 85 pontos de Popularidade e entre 3 e 15 pontos de Discurso.
par(bg="#d2faf8")
plot(top50$valencia, top50$dançabilidade, pch=19,
col="blue",
main = "Quanto mais positivo o clima da musica mais dançavel?",
xlab="Valência",ylab = "Dançabilidade")
abline(lsfit(top50$valencia, top50$dançabilidade), col="red", lwd=3)par(bg="white")
library(ggplot2)
ggplot(top50) +
aes(x = valencia, y = dançabilidade, colour = genero_da_faixa, size = valencia) +
geom_point(shape = "circle") +
scale_color_hue(direction = 1) +
labs(x = "Valência (positividade)",
y = "Dançabilidade", title = "Valência por Dançabilidade",
subtitle = "Quanto mais positivo o clima da musica mais dançavel?", color = "gênero da faixa", size = "valência (positividade)") +
theme_minimal() +
theme(plot.title = element_text(size = 16L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "bold", hjust = 0.5), axis.title.y = element_text(size = 12L, face = "bold"), axis.title.x = element_text(size = 12L,
face = "bold"))cor(top50$valencia, top50$dançabilidade)[1] 0.172829
De acordo com os gráficos de dispersão apresentados, não é perceptível uma concentração grande no gráfico, mas há presença de mais indicadores no centro do grafico quando comparado as extremidades.
library(readxl)
library(dplyr)
library(corrplot)
library(knitr)
variavel_quantit <- top50%>%select(batidas_por_minuto,popularidade,energia,discurso,dançabilidade,duração)
cor(variavel_quantit) batidas_por_minuto popularidade energia discurso
batidas_por_minuto 1.00000000 0.19609692 0.04375559 0.55705188
popularidade 0.19609692 1.00000000 -0.08029497 0.23855303
energia 0.04375559 -0.08029497 1.00000000 -0.08985967
discurso 0.55705188 0.23855303 -0.08985967 1.00000000
dançabilidade -0.09418289 -0.07141325 0.01825358 -0.10347192
duração -0.13928840 -0.08763886 0.22467681 0.04675526
dançabilidade duração
batidas_por_minuto -0.0941828916 -0.1392883997
popularidade -0.0714132526 -0.0876388589
energia 0.0182535758 0.2246768064
discurso -0.1034719217 0.0467552609
dançabilidade 1.0000000000 -0.0001852976
duração -0.0001852976 1.0000000000
knitr::kable(cor(variavel_quantit))| batidas_por_minuto | popularidade | energia | discurso | dançabilidade | duração | |
|---|---|---|---|---|---|---|
| batidas_por_minuto | 1.0000000 | 0.1960969 | 0.0437556 | 0.5570519 | -0.0941829 | -0.1392884 |
| popularidade | 0.1960969 | 1.0000000 | -0.0802950 | 0.2385530 | -0.0714133 | -0.0876389 |
| energia | 0.0437556 | -0.0802950 | 1.0000000 | -0.0898597 | 0.0182536 | 0.2246768 |
| discurso | 0.5570519 | 0.2385530 | -0.0898597 | 1.0000000 | -0.1034719 | 0.0467553 |
| dançabilidade | -0.0941829 | -0.0714133 | 0.0182536 | -0.1034719 | 1.0000000 | -0.0001853 |
| duração | -0.1392884 | -0.0876389 | 0.2246768 | 0.0467553 | -0.0001853 | 1.0000000 |
Com base na Matriz de Correlação apresentada, torna-se mais visível a congruência positiva ou negativa de correlação entre as variáveis qualitativas da base de dados. - A maior correlação(sem levar em conta as correlações lineares das variáveis com elas mesmas) se estabeleceria entre as Batidas por Minuto e o Discurso, com valor de 0.5570519, e a menor correlação seria entre duração e BPM com valor de -0.1392884.
Foi utilizado como teste de hipótese o Teste de Fisher, pois os pressupostos do teste Qui-Quadrado não foram atendidos.
Por conta da violação dos pressupostos, pelas celulas possuirem valor esperado menor que cinco e pela categoria artistas
ter mais de duas categorias em uma variável o teste de fisher foi o mais indicado para as demonstrações.
As variáveis qualitativas utilizadas foram: Sexo, Grupo ou Solo e Artistas.
tabela<-table (top50$sexo,top50$grupo_ou_solo)
fisher.test(top50$sexo,top50$grupo_ou_solo)
Fisher's Exact Test for Count Data
data: top50$sexo and top50$grupo_ou_solo
p-value = 0.571
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.000000 6.313003
sample estimates:
odds ratio
0
H0: Não há associação entre as variáveis
H1: Há associação entre as variáveis
alpha: 0.05
pvalor menor que alpha - Rej H0
pvalor maior que alpha - Não Rej H0
tabela<-table (top50$sexo,top50$grupo_ou_solo)
fisher.test(top50$sexo,top50$grupo_ou_solo)
p-value = 0.571
- A partir do teste de hipótese descobriu-se que o p-valor é maior do que alfa.
- Logo esta se pode afirmar que não há associação entre as variáveis.
tabela2<-table (top50$grupo_ou_solo,top50$artista)
fisher.test(top50$grupo_ou_solo,top50$artista)
Fisher's Exact Test for Count Data
data: top50$grupo_ou_solo and top50$artista
p-value = 0.1038
alternative hypothesis: two.sided
H0: Não há associação entre as variáveis
H1: Há associação entre as variáveis
alpha: 0.05
pvalor menor que alpha - Rej H0
pvalor maior que alpha - Não Rej H0
tabela2<-table (top50$grupo_ou_solo,top50$artista)
fisher.test(top50$grupo_ou_solo,top50$artista)
p-value = 0.1038
- A partir do teste de hipótese descobriu-se que o p-valor é maior do que alfa.
- Logo, esta se pode afirmar que não há associação entre as variáveis.
shapiro.test(top50$batidas_por_minuto)
Shapiro-Wilk normality test
data: top50$batidas_por_minuto
W = 0.85803, p-value = 2.572e-05
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$batidas_por_minuto)
p-value = 0.00002572
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Batidas por minuto, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
shapiro.test(top50$energia)
Shapiro-Wilk normality test
data: top50$energia
W = 0.9547, p-value = 0.05339
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$energia)
p-value = 0.05339
- A partir do teste de normalidade descobriu-se que o p-valor é maior do que alfa.
- Logo, esta variável Energia, na base de dados Top 50, segue uma distribuição normal em formato de sino.
- Não rejeito H0
shapiro.test(top50$dançabilidade)
Shapiro-Wilk normality test
data: top50$dançabilidade
W = 0.9065, p-value = 0.000793
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$dançabilidade)
p-value = 0.000793
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Dançabilidade, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0.
shapiro.test(top50$volume_db)
Shapiro-Wilk normality test
data: top50$volume_db
W = 0.92276, p-value = 0.002972
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$volume_db)
p-value = 0.002972
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável volume Db, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0
shapiro.test(top50$ao_vivo)
Shapiro-Wilk normality test
data: top50$ao_vivo
W = 0.71606, p-value = 1.626e-08
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$ao_vivo)
p-value = 0.00000001626
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Ao vivo, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0
shapiro.test(top50$valencia)
Shapiro-Wilk normality test
data: top50$valencia
W = 0.97733, p-value = 0.4458
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
options(scipen = 999)
shapiro.test(top50$valencia)
p-value = 0.4458
- A partir do teste de normalidade descobriu-se que o p-valor é maior do que alfa.
- Logo, esta variável Valência, na base de dados Top 50, segue uma distribuição normal em formato de sino.
- Não rejeito H0
shapiro.test(top50$ duração)
Shapiro-Wilk normality test
data: top50$duração
W = 0.95187, p-value = 0.04073
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$ duração)
p-value = 0.04073
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Duração, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0
shapiro.test(top50$acustica)
Shapiro-Wilk normality test
data: top50$acustica
W = 0.87567, p-value = 8.292e-05
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$acustica)
p-value = 0.00008292
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Acústica, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0
shapiro.test(top50$discurso)
Shapiro-Wilk normality test
data: top50$discurso
W = 0.78375, p-value = 3.778e-07
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$discurso)
p-value = 0.0000003778
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Discurso, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0
shapiro.test(top50$popularidade)
Shapiro-Wilk normality test
data: top50$popularidade
W = 0.89305, p-value = 0.0002855
H0: os dados seguem uma distribuição normal
H1: os dados não seguem uma distribuição normal
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$popularidade)
p-value = 0.0002855
- A partir do teste de normalidade descobriu-se que o p-valor é menor do que alfa.
- Logo, esta variável Popularidade, na base de dados Top 50, não segue uma distribuição normal em formato de sino.
- Rejeito H0
cor.test(top50$batidas_por_minuto,top50$popularidade, method = "spearman")
Spearman's rank correlation rho
data: top50$batidas_por_minuto and top50$popularidade
S = 16306, p-value = 0.1301
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.2170018
H0: rho = 0
H1: rho != 0 existe associação
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
cor.test(top50$batidas_por_minuto,top50$popularidade, method = "spearman")
p-value = 0.1301
- A partir do teste de correlação obtido, p-valor é maior do que alfa. Logo, Não rejeito H0.
- Com isso, afirmo que a correlação entre BPM e Popularidade mostram que existe associação linear entre as variáveis.
- Corroborando o gráfco de dispersão acima, quanto maior o valor das Batidas Por Minutos, maior a Popularidade
cor.test(top50$energia,top50$dançabilidade, method = "spearman")
Spearman's rank correlation rho
data: top50$energia and top50$dançabilidade
S = 21843, p-value = 0.736
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
-0.04888964
H0: rho = 0
H1: rho != 0
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
cor.test(top50$energia,top50$dançabilidade, method = "spearman")
p-value = 0.736
- A partir do teste de correlação obtido, p-valor é maior do que alfa, logo, Não rejeito H0.
- Com isso, afirmo que a correlação entre Energia e Dançabilidade mostram que não existe associação linear entre as variáveis.
- Logo, o valor da Energia nas músicas não altera o nível de Dançabilidade.
cor.test(top50$discurso,top50$popularidade, method = "spearman")
Spearman's rank correlation rho
data: top50$discurso and top50$popularidade
S = 17380, p-value = 0.2509
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.165431
H0: rho = 0
H1: rho != 0
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
cor.test(top50$discurso,top50$popularidade, method = "spearman")
p-value = 0.2509
- A partir do teste de correlação obtido, p-valor é maior do que alfa, logo, Não rejeito H0.
- Com isso, afirmo que a correlação entre Discurso e Popularidade mostram que existe associação linear entre as variáveis.
- Quanto maior o valor ddo Discurso nas músicas, maior a Popularidade.
cor.test(top50$valencia,top50$dançabilidade, method = "spearman")
Spearman's rank correlation rho
data: top50$valencia and top50$dançabilidade
S = 17601, p-value = 0.283
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.1548206
H0: rho = 0
H1: rho != 0
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
cor.test(top50$valencia,top50$dançabilidade, method = "spearman")
p-value = 0.283
- A partir do teste de correlação obtido, p-valor é maior do que alfa, logo, Não rejeito H0.
- Com isso, afirmo que a correlação entre Valência e Dançabilidade mostram que existe associação linear entre as variáveis.
- Quanto mais positivo o clima das músicas, maior a Popularidade.
Os pressupostos analisados a seguir não possuem uma distribuição normal, pois violam esse parâmetro, logo, serão feitos procedimentos não paramétricos.
shapiro.test(top50$popularidade)
Shapiro-Wilk normality test
data: top50$popularidade
W = 0.89305, p-value = 0.0002855
wilcox.test(top50$popularidade~top50$grupo_ou_solo)
Wilcoxon rank sum test with continuity correction
data: top50$popularidade by top50$grupo_ou_solo
W = 67.5, p-value = 0.3879
alternative hypothesis: true location shift is not equal to 0
H0:Os dois grupos (grupo e solo) tem a mesma distribuição de desempenho
H1:Os dois grupos (grupo e solo) tem distribuições diferentes
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$popularidade)
p-value = 0.0002855
wilcox.test(top50$popularidade~top50$grupo_ou_solo)
p-value = 0.3879
- A partir do teste, p-valor é maior do que alfa, logo, NÃO rejeito H0.
- Com isso, afirmo que os dois grupos tem a mesma distribuição de dados.
- A Popularidade independe de ser um grupo ou um artista solo.
shapiro.test(top50$popularidade)
Shapiro-Wilk normality test
data: top50$popularidade
W = 0.89305, p-value = 0.0002855
wilcox.test(top50$popularidade~top50$sexo)
Wilcoxon rank sum test with continuity correction
data: top50$popularidade by top50$sexo
W = 222, p-value = 0.5999
alternative hypothesis: true location shift is not equal to 0
H0:Os dois grupos (Masculino e Feminino) tem a mesma distribuição de desempenho
H1:Os dois grupos (Masculino e Feminino) tem distribuições diferentes
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
shapiro.test(top50$popularidade)
p-value = 0.0002855
wilcox.test(top50$popularidade~top50$sexo)
p-value = 0.5999
- A partir do teste, p-valor é maior do que alfa, logo, NÃO rejeito H0.
- Com isso, afirmo que os dois grupos tem a mesma distribuição de dados.
- A Popularidade independe do Sexo dos artistas analisados.
#3 Grupos ou mais
kruskal.test(top50$popularidade~top50$genero_da_faixa)
Kruskal-Wallis rank sum test
data: top50$popularidade by top50$genero_da_faixa
Kruskal-Wallis chi-squared = 29.513, df = 20, p-value = 0.07814
H0:Os gêneros musicais tem a mesma distribuição de desempenho popularidade
H1:Os Existe pelo menos um gênero com distribuição diferente
alpha: 0,05
pvalor menor que 0,05 - Rej H0
pvalor maior que 0,05 - Não Rej H0
kruskal.test(top50$popularidade~top50$genero_da_faixa)
p-value = 0.07814
A partir do teste, p-valor é maior do que alfa, logo, NÃO rejeito H0.
Com isso, afirmo que os dois grupos tem a mesma distribuição de dados.
Os gêneros mais populares do top 50 músicas mais ouvidas do spotifi (2019), como o pop dance, tem tanta possibilidade de ser popular quanto os demais gêneros lista.
De acordo com as análises realizadas podemos concluir e sugerir melhorias à respeito do do cenário musical como:
1- Sugere-se a produção de mais artistas mulheres com recursos e visibilidade superior ao que já existe, buscando abrir mais espaço feminino no topo das paradas musicais. É necessário dar mais voz a essas artistas, tanto pela visibilidade quanto pela equidade entre os artistas no mercado da músical.
2- Os gráficos mostraram que existem muitos gêneros musicais que podem ser mais explorados e desenvolvidos. Um bom ponto seria a produção de mais músicas com batidas por minuto elevadas, uma vez que foi possível enxergar a correlação entre popularidade e batidas por minuto.
3- Ainda que exista bastante diferença entre grupos e artistas solo presentes no top 50, essa amostra não representa todo o mercado da música, assim como não representa o ano de 2021, no qual esse projeto foi elaborado. Em 2021 grandes grupos musicais como, BTS, KDA e grupos musicais brasileiros estão ganhando visibilidade. O periodo de transição e visibilidade de grupos com diferentes representatividades e caracteristicas podem possibilitar uma alavancagem no sucesso e no crescimento de mais grupos. Além disso, trazer mais de um integrante para o grupo pode contribuir com a valência, o que seria positivo já que quanto mais positivo o clima das músicas, maior a popularidade do grupo ou artista solo, como demonstrado anteriormente.
4- Diante das possibilidades e sugestões apresentadas, conclui-se que a pesquisa cumpriu seu objetivo principal de analisar as músicas e artistas presentes no top50 do Spotify e encontrar padrões de aceitabilidade e sucesso que levam essas músicas à popularidade. Sugerem-se estudos mais específicos de gênero entre sucesso de artistas musicais, visto que essa variável apresentou uma grande diferenciação nas pesquisas realizadas.
Grupo ou solo - Classificação de artistas em grupos musicais ou artistas solo;
Nome da trilha - Nome da Música e feats (parcerias) dos artistas;
Nome do Artista - Nome do artista;
Gênero - Gênero musical da faixa;
BPM - Batidas por minuto ou ritmo musical;
Energia- A energia da música, quanto mais alto o valor, mais energética a música;
Dançabilidade - Quanto mais alto o valor, mais fácil é dançar essa música;
Volume dB- Unidade de medida decibel (dB) usada para medir a intensidade do som. Quanto mais alto o valor, mais alto o volume da música;
Ao Vivo - Quanto mais alto o valor, maior a probabilidade de a música ser uma gravação ao vivo
Valência- Quanto mais alto o valor, mais positivo será o clima da música;
Duração: Tempo de duração da música em segundos;
Acústica: Quanto mais alto o valor, mais acústica é a música;
Discurso: Quanto maior o valor, maior o número de palavras; usadas.
Popularidade: Quanto mais alto o valor, maior a popularidade ;
Big room- Subgênero de House music (música eletrônica);
BPM- Tempo de duração da música;
Country rap- Subgênero da música popular fundindo a música country com o estilo de hip hop;
Dfw Rap- Subgênero de RAP;
Pop house- Estilo musical vertente da música eletrônica surgido na cidade de Chicago;
Reggaeton flow- É um estilo musical que tem suas raízes na música latina, caribenha e europeia;
Trap music- Subgênero do rap que se originou na década de 2000 com DJ Paul no sul dos Estados Unidos;