Objetivo é executar alguns testes afim de identificar relações entre a variável de interesse e as variáveis observadas (independentes) com o intuito de verificar quais dessas variáveis independentes são fatores para apreciação das musicas no Spotify ,para isso foi utilizado um banco de dados “data.csv” contendo 14 variáveis com 195 observações , que possui informações sobre a recomendação de músicas no Spotify. Para esse análise foi utilizado exclusivamente o software Rstudio/Markdown .
Primeiramente vamos carregar os pacotes que serão utilizados para executar as devidas análises em nosso banco de dados
library(dplyr)
library(car)
library(plotly)
library(rstatix)
library(gplots)
library(corrplot)
require(MASS)
require(dplyr)
library(gplots)
require(MASS)
require(dplyr)
library(corrplot)
library(gmodels)
library(ggpubr)
library(tidyverse)
library(gridExtra)
library(gt)
library(tidyverse)
library(gridExtra)
require(knitr)
library(questionr)
Antes de chamar nosso banco de dados , vamos utilzar a função “setwd()” para especificar o nosso diretório de trabalho
setwd("E:/document/OneDrive/Documentos")
Como o nosso banco de dados está no formato .csv utilizaremos a função “read.csv” para consiguir abrir o nosso banco de dados , entretanto , para que o banco rode corrretamente temos que identificar o modo em que as variáveis estão separadas no nosso banco de dados . No nosso casso, as variáveis estão separados por apenas “virgula”,logo, utilizaremos a função “sep=”,”” para ler corretamente nosso banco de dados
dados<-read.csv("C:/Users/josef/Documents/data.csv",header = T, sep = ",")
View(dados)
Para observar os tipos das variáveis presentes em nosso banco de dados ,utilizaremos a função “str()”
str(dados)
## 'data.frame': 195 obs. of 14 variables:
## $ danceability : num 0.803 0.762 0.261 0.722 0.787 0.778 0.666 0.922 0.794 0.853 ...
## $ energy : num 0.624 0.703 0.0149 0.736 0.572 0.632 0.589 0.712 0.659 0.668 ...
## $ key : int 7 10 1 3 1 8 0 7 7 3 ...
## $ loudness : num -6.76 -7.95 -27.53 -6.99 -7.52 ...
## $ mode : int 0 0 1 0 1 1 0 1 0 1 ...
## $ speechiness : num 0.0477 0.306 0.0419 0.0585 0.222 0.125 0.324 0.171 0.0498 0.447 ...
## $ acousticness : num 0.451 0.206 0.992 0.431 0.145 0.0404 0.555 0.0779 0.143 0.263 ...
## $ instrumentalness: num 7.34e-04 0.00 8.97e-01 1.18e-06 0.00 0.00 0.00 3.96e-05 2.24e-03 0.00 ...
## $ liveness : num 0.1 0.0912 0.102 0.123 0.0753 0.0912 0.114 0.175 0.0944 0.104 ...
## $ valence : num 0.628 0.519 0.0382 0.582 0.647 0.827 0.776 0.904 0.308 0.745 ...
## $ tempo : num 96 151.3 75.3 89.9 155.1 ...
## $ duration_ms : int 304524 247178 286987 208920 179413 224029 146053 161800 247460 165363 ...
## $ time_signature : int 4 4 4 4 4 4 4 4 4 4 ...
## $ liked : int 0 1 0 1 1 1 1 1 0 1 ...
Temos variáveis do tipo númericas e variáveis do tipo inteiras no nosso banco de dados.
vamos falar um pouco sobre cada tipo das variáveis ,além de plotar um gráfico afim de nos auxiliar nas análise , em alguns casos fui adicionado a curva da normalidade (distribuição normal),com o propósito de identificar visualmente um comportamento de normalidade dos dados ou não .
A capacidade de dança descreve como uma faixa é adequada para dançar com base em uma combinação de elementos musicais, incluindo tempo, estabilidade do ritmo, força da batida e regularidade geral. Um valor de 0,0 é menos dançável e 1,0 é mais dançante. Tipo da variável : númerica /continua .
s4<-dados$danceability
f1<- qplot(s4,
main = "Histograma daçabilidade",
xlab = "valores",
ylab = "frequencias",
fill=I("Navy blue"),
col=I("red"),
fill="green",
alpha= .9) +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Energia é uma medida de 0,0 a 1,0 e representa uma medida perceptual de intensidade e atividade. Normalmente, as faixas energéticas parecem rápidas, altas e barulhentas. Por exemplo, death metal tem alta energia, enquanto um prelúdio de Bach tem pontuação baixa na escala. As características perceptivas que contribuem para este atributo incluem faixa dinâmica, intensidade percebida, timbre, taxa de início e entropia geral.
Tipo da variável : númerica,contínua .
ss<-dados$energy
f2<- qplot(dados$energy,
main = "Histogram energy",
xlab = "valores",
ylab = "frequencias",
fill=I("orange"),
col=I("black") ,
col="red",
fill="green",
alpha= .9) +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
A chave(key) em que a trilha está. Os inteiros mapeiam os tons usando a notação padrão de classe de tom. Por exemplo, 0 = C(dó), 1 = C♯(dó sustenido) / D ♭(ré bemol), 2 = D(ré) e assim por diante.
Tipo da variável : númerica /inteira
ss<-dados$key
f3<- qplot(dados$key,
main = "Histogram key",
xlab = "valores",
ylab = "frequencias",
fill=I("green"),
col=I("black") ,
col="blue",
fill="blue",
alpha= .4,ylim=c(0,20),xlim = c(0,10)) +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f3)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 10 rows containing non-finite values (stat_bin).
## Warning: Removed 10 rows containing non-finite values (stat_density).
O volume geral de uma faixa em decibéis (dB). Os valores de sonoridade são calculados em toda a trilha e são úteis para comparar a sonoridade relativa das trilhas. Loudness é a qualidade de um som que é o principal correlato psicológico da força física (amplitude). Os valores típicos variam entre -60 e 0 db.
Tipo da variável : númerica/ contínua
f4<- qplot(dados$loudness,
main = "Histogram loudness",
xlab = "valores",
ylab = "frequencias",
fill=I("blue"),
col=I("black") ,
col="blue",
fill="red",
alpha= .4,ylim=c(0,10),xlim = c(-60,0)) +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f4)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Modo indica a modalidade (maior ou menor) de uma faixa, o tipo de escala da qual seu conteúdo melódico é derivado. Maior é representado por 1 e menor é 0.
Tipo da variável : númerica/ inteira
f5<-ggplot(dados,aes(dados$mode)) +geom_bar(
fill="gold")+ theme_dark() +
labs(title = "gráfico para variável mode",
x="mode", y=" frequencia")
ggplotly(f5)
## Warning: Use of `dados$mode` is discouraged. Use `mode` instead.
A fala detecta a presença de palavras faladas em uma faixa.
Tipo de variável : númerica/contínua
f6<-qplot(dados$speechiness,
main = "Histogram speechiness",
xlab = "valores",
ylab = "frequencias",
fill=I("green"),
col=I("black") ,
col="blue",
fill="red",
alpha= .4,xlim = c(0,1)) + theme_dark() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f6)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Uma medida de confiança de 0,0 a 1,0 para saber se a faixa é acústica. 1.0 representa alta confiança de que a faixa é acústica.
Tipo da variável : númerica/ contínua
f7<- qplot(dados$acousticness,
main = "Histogram acousticness",
xlab = "valores",
ylab = "frequencias",
fill=I("blue"),
col=I("black") ,
col="blue",
fill="red",
alpha= .4,ylim=c(0,12),xlim = c(0,1)) + theme_dark() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f7)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Prevê se uma faixa não contém vocais. Os sons “Ooh” e “aah” são tratados como instrumentais neste contexto.
Tipo da variável : númerica/ contínua
f8<-qplot(dados$instrumentalness,
main = "Histograma instrumentalidade ",
xlab = "valores",
ylab = "frequencias",
fill=I("Navy blue"),
col=I("black") ,
col="red",
fill="red",
alpha= .5,ylim=c(0,15),xlim = c(0,1)) + theme_dark() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f8)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Detecta a presença de um público na gravação.
Tipo da variável : númerica/ contínua
l <-qplot(dados$liveness,
main = "Histograma liveness ",
xlab = "valores",
ylab = "frequencias",
fill=I("purple"),
col=I("black") ,
col="red",
fill="red",
alpha= .5,ylim=c(0,15),xlim = c(0,1)) + theme_dark() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(l)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Uma medida de 0,0 a 1,0 que descreve a positividade musical transmitida por uma faixa.
Tipo da variável : númerica/ contínua
f10<-qplot(dados$valence,
main = "Histograma valence ",
xlab = "valores",
ylab = "frequencias",
fill=I("Turquoise"),
col=I("black") ,
col="red",
fill="red",
alpha= .5,ylim=c(0,15),xlim = c(0,1)) + theme_dark() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f10)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
O tempo estimado geral de uma faixa em batidas por minuto (BPM)
Tipo da variável : númerica/ contínua
lk<- ggplot(data=dados, aes(dados$tempo)) +
labs(title = "histograma tempo", x="valores",y= "frequencia")+
theme_dark() +
geom_histogram(breaks=seq(60,180, by=4),
col="red",
aes(fill=..count..)) +
geom_density(col=2) +
scale_fill_gradient("Count", low="green", high="red")
ggplotly(lk)
## Warning: Use of `dados$tempo` is discouraged. Use `tempo` instead.
## Warning: Use of `dados$tempo` is discouraged. Use `tempo` instead.
A duração da faixa em milissegundos
Tipo da variável : númerica/ inteira
options(scipen=999)
f11 <-qplot(dados$duration_ms,
main = "Histograma duration_ms ",
xlab = "valores",
ylab = "frequencias",
fill=I("Violet"),
col=I("black") ,
col="red",
fill="red",
alpha= .5,ylim=c(0,15),xlim = c(70200,666000)+geom_count(alpha=0.5)) + theme_dark() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f11)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Talvez seja interessante transformar essa variável , pois cada minuto temos 60.000 milesegundos .
Uma estimativa de fórmula de compasso geral de uma faixa.
Tipo da variável : númerica/ inteira
si<-dados$time_signature
f12<-qplot(si,
main = "Histogram time_signature",
xlab = "valores",
ylab = "frequencias",
fill=I("blue"),
col=I("black") ,
col="red",
fill="red",
alpha= .5) + theme_replace() +
geom_density(col=2)+ theme(legend.position="none")
ggplotly(f12)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Essa é a nossa variável de interesse, onde
1 para músicas favoritas, 0 para músicas não gostadas
f5<-ggplot(dados,aes(dados$liked)) +geom_bar(
fill="steelblue1")+ theme_dark() +
labs(title = "gráfico para variável liked",
x="liked", y=" frequencia")
ggplotly(f5)
## Warning: Use of `dados$liked` is discouraged. Use `liked` instead.
Em nosso banco de dados a variável liked está como númerica/inteira , mas na verdade ela é uma variável do tipo categorica .
para nossos tipos de variáveis os teste mais indicados são os testes T independente e o teste de Wilcoxon .
O teste t de Studente (ou simplesmente teste t) compara duas médias e mostra se as diferenças entre essas médias são significativas. Em outras palavras, permite que você avalie se essas diferenças ocorreram por um mero por acaso ou não. A necessidade de determinar se duas médias de amostras são diferentes entre si é uma situação extremamente frequente em pesquisas científicas.
Por exemplo se um grupo experimental difere de um grupo controle, se uma amostra difere da população, se um grupo difere antes de depois de um procedimento. Nessas diversas situações, um método bastante comum é a comparação das médias da medida de interesse.
Os tipos de teste T são : teste T para uma amostra,teste T Independente e o teste T pareado .
O teste Wilcoxon de amostras pareadas (também conhecido como teste de postos sinalizados de Wilcoxon) é uma alternativa não paramétrica ao teste t pareado usado para comparar dados pareados. É usado quando seus dados não são normalmente distribuídos.
Desenvolvido por F. Wilcoxon em 1945, o teste de Wilcoxon pareado baseia-se nos postos das diferenças intrapares. Este teste não-paramétrico, usado para comparar amostras relacionadas, é uma alternativa para o teste t-Student quando as amostras não seguem distribuição normal.Portanto, o teste de Wilcoxon é usado para testar se as medianas das amostras são iguais nos casos em que a suposição de normalidade não é satisfeita ou quando não for possível checar essa suposição.
A base do processo utilizado no teste de postos de wilcoxon é o principio de que, se duas amostras são extraídas de populações idênticas e os escores são dispostos em uma sequência única, combinada, de valores, então os postos altos e os postos baixos devem situar-se justamente entre duas amostras. Se os postos baixos predominam em uma amostra, e os postos altos predominam na outra, então suspeitamos que as populações não sejam idêntica
Suposições: 1. temos duas amostras independentes. 2. estamos testando a hipótese nula, de que as duas amostras independentes provem da mesma distribuição; a hipótese alternativa é a afirmação de que as duas distribuições apresentem alguma diferença. 3. cada uma das duas amostras tem mais de 10 escores, ou valores. Não exige que as populações sejam distribuídas normalmente .
Nesse relatório será utilizado o teste de Wilcoxon-Mann-Whitney.
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
boxplot (dados$danceability ~ dados$liked,
main = "Boxplot para dançabilidade e prefiridas ",
xlab = "danceability",
ylab = "liked",
las = 1,
col = c ("violetred", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$danceability ,dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Com base nas estatísticas descritivas percebe-se que a mediana da variável liked é maior que a mediana da variável daçabilidade , mas por qual motivo isso acontece? bom, vale lembrar que a variável liked está entre os números inteiro de 0 a 1 , em quanto os valores está nos números racionais entre 0 e 1 por isso que a mediana de liked foi maior,entrentanto , não é concretizado que as duas tenha associação , para fazer a verificação vamos utilizar os seguintes testes :
l<-dados%>% group_by(liked) %>%
get_summary_stats(danceability, type="common")
l %>%
gt()%>%
tab_header(
title = md("**Medianas danceability por grupos**"))
| Medianas danceability por grupos | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| liked | variable | n | min | max | median | iqr | mean | sd | se | ci |
| 0 | danceability | 95 | 0.13 | 0.909 | 0.463 | 0.420 | 0.510 | 0.227 | 0.023 | 0.046 |
| 1 | danceability | 100 | 0.45 | 0.946 | 0.786 | 0.136 | 0.757 | 0.114 | 0.011 | 0.023 |
library(dplyr)
dados<- dados %>% arrange(dados$danceability)
#View(dados)
#data3 <- data[rowSums(is.na(dados2) == 0, ]
danc0<- rep("0.130-0.705",98)
danc1<- rep("0.706-0.946",97)
danc0<-as.matrix(danc0, ncol=1)
danc1<-as.matrix(danc1, ncol=1)
dancy<-rbind(danc0,danc1)
library(dplyr)
dados$dancy<-dancy
library(questionr)
#str(dados$dancy)
library(knitr)
library(shiny)
library(gt)
library(gmodels)
CrossTable(dados$dancy,dados$liked,
expected = F, prop.r = F, prop.c = F, prop.t = T, prop.chisq = F, format = "SPSS")
##
## Cell Contents
## |-------------------------|
## | Count |
## | Total Percent |
## |-------------------------|
##
## Total Observations in Table: 195
##
## | dados$liked
## dados$dancy | 0 | 1 | Row Total |
## -------------|-----------|-----------|-----------|
## 0.130-0.705 | 70 | 28 | 98 |
## | 35.897% | 14.359% | |
## -------------|-----------|-----------|-----------|
## 0.706-0.946 | 25 | 72 | 97 |
## | 12.821% | 36.923% | |
## -------------|-----------|-----------|-----------|
## Column Total | 95 | 100 | 195 |
## -------------|-----------|-----------|-----------|
##
##
Como podemos observar na tabelas de frequencia 36.92 % aproximadamente dos usuários(observações) presentes em nosso banco de dados, preferem músicas onde a dancabilidade está na faixa entre 0.706-0.946 , além disso , 35.897% dos usuários não gostam de músicas onde a dançabilidade está entre 0.130-0.705. Com isso, quanto maior a dançabilidade, mais os usuários gostam das musicas e quanto menor a dançabilidade ,ps usuários gostam menos das músicas.
Vamos testar a normalidade das variáveis para a aplicação dos testes indicados
Vamos testar as normalidades das variáveis através do teste shapiro wilk , caso não haja normalidade entre as variáveis devemos utilizar o teste Wilcoxon, para executar o teste Shapiro Wilk vamos utilizar o comando “shapiro.test()”
h0 \(=\) distribuição dos dados \(=\) normal , para Pvalor \(>\) 0,05
h1\(=\) distribuição dos dados \(\neq\) normal , para pvalor \(\le\) 0,05
#options(scipen = 999)
dados$diferenaliked<-dados$liked-dados$danceability
shapiro.test(dados$diferenaliked)
##
## Shapiro-Wilk normality test
##
## data: dados$diferenaliked
## W = 0.91007, p-value = 0.00000000165
Como o Pvalor \(<\) 0,05 ,rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
para executar o testde de wilcoxon vamos chamar a função “wilcox.test” em relação ao nosso banco de dados “dados” unsando a correção”correct”
wilcox.test(dados$danceability~dados$liked, data=dados,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$danceability by dados$liked
## W = 1774.5, p-value = 0.00000000000004268
## alternative hypothesis: true location shift is not equal to 0
h0 \(=\) Mediana das diferênças \(=\) 0 , para Pvalor \(>\) 0,05
h1\(=\) mediana dos diferênças \(\neq\) 0 , para pvalor \(\le\) 0,05
Como estamos comparando dois grupos de medianas , ou seja , grupo A e grupo B , quando a mediana das diferênças forem iguais a 0 isso significa que a mediana do grupo A \(=\) mediana do grupo B e quando a mediana das diferenças forem diferente de 0 isso significa que a mediana do grupoA \(\neq\) mediana do grupo B.
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo , a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, podemos afirmar que existe associação significativa entre as variáveis .
Desse modo , existe relação entre as variáveis “danceability” e “liked”.
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
c<-dados%>% group_by(liked) %>%
get_summary_stats(instrumentalness, type="median_iqr")
c %>%
gt()%>%
tab_header(
title = md("**Medianas instrumentalness por grupos**"))
| Medianas instrumentalness por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | instrumentalness | 95 | 0.261 | 0.866 |
| 1 | instrumentalness | 100 | 0.000 | 0.000 |
#knitr::kable(c ,caption = "*Medianas instrumentalness por grupos*")
Como podemos observar a diferêça das medianas das duas vareáveis deu diferente de zero , entretanto não podedos afirmar se existe relação entre as variáveis .
library(tidyverse)
library(gridExtra)
boxplot (dados$instrumentalness ~ dados$liked,
main = "Boxplot para instrumentalidade e prefiridas ",
xlab = "liked",
ylab = "instrumentalidade",
las = 1,
col = c ("palegoldenrod", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$danceability ,dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pelo gráfico de boxplot é perceptível que existe uma leve diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que instrumentalness(instrummentalidade) é um fator de apreciação(liked), para isso , vamos executar os seguintes testes:
dados$diferenalike<-dados$instrumentalness-dados$liked
shapiro.test(dados$diferenalike)
##
## Shapiro-Wilk normality test
##
## data: dados$diferenalike
## W = 0.77113, p-value = 0.0000000000000003744
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
#wilcox.test(dados$liked,dados$instrumentalness,paired = TRUE)
wilcox.test(dados$instrumentalness~dados$liked, data=dados,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$instrumentalness by dados$liked
## W = 8490, p-value < 0.00000000000000022
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo , a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, podemos afirmar que existe associação significativa entre as variáveis .
O teste Qui-quadrado é um teste não-paramétrico utilizado, basicamente, para três finalidades específicas, que são:
Verificar as distribuições de probabilidades de cada categoria de uma variável em relação a um valor teórico esperado (aderência),
Verificar se as distribuições das categorias são as mesmas para diferentes subpopulações de interesse (homogeneidade)
Verificar se duas variáveis categóricas são independentes (independência).
Apesar das diferenças em relação às perguntas de pesquisa, o sistema matemático é o mesmo.
h0 \(=\) não há asociação entre as vareiáveis instrumentalness e liked , para Pvalor \(>\) 0,05
h1\(=\) há asociação entre as vareiáveis instrumentalness e liked, para pvalor \(\le\) 0,05
Antes temos que transformar a varíavel instrumentalness em intervalo :
dados1<-data.frame(dados$liked,dados$instrumentalness)
dados1<- dados1 %>% arrange(dados1$dados.instrumentalness)
view(dados1)
#considerando o intervalo de 0-0.00000405 = fr baixa
# e considerando o intervalo de 0.00000406-0.96900000 como fr alta
#fr=frequencia
int3<-rep("fr baixa",94)
int4<- rep("fr alta",101)
int3<-as.matrix(int3, ncol=1)
int4<-as.matrix(int4, ncol=1)
instru2<-rbind(int3,int4)
## adicionando a variável ao nosso banco de dados
dados1$instru2<-instru2
Agora vamos tranformar a variável liked
dados1<- dados1 %>% arrange(dados1$dados.liked)
view(dados1)
liked01<-rep("não gostadas",95)
liked1<-rep("gostadas",100)
liked01<-as.matrix(liked01, ncol=1)
liked1<-as.matrix(liked1, ncol=1)
like<-rbind(liked01,liked1)
## adicionando a variável ao nosso banco de dados
dados1$like<-like
Organizar os fatores é importante para que quandos nos plotarmos o gráfico os valores saiam na ordem desejada
dados1$instru2 <- factor(dados1$instru2,
levels = c("fr baixa", "fr alta"))
dados1$like <- factor(dados1$like,
levels = c("não gostadas", "gostadas"))
chisq.test(dados1$instru2,dados1$like)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: dados1$instru2 and dados1$like
## X-squared = 85.743, df = 1, p-value < 0.00000000000000022
Podemos perceber que o valor de ambos os testes após a transformação da variável que representa a instrumentalidade deu o mesmo valor , logo , existe relação entre as variáveis “instrumentalness” e “liked”
# Balloon plot
teste<-table(dados1$like,dados1$instru2)
library(gplots)
balloonplot(t(teste),
main = "gráfico de associação", xlab = "","" ,ylab = "", label = T, show.margins = T)
Podemos perceber que 81 das pessoas do total de 195 gostam de musicas com menos intrumentalidade ,além disso , 82 pessoas não gostam das músicas com mais intrumentalidade
chisq_tes <- chisq.test(dados1$like,dados1$instru2)
chisq_tes
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: dados1$like and dados1$instru2
## X-squared = 85.743, df = 1, p-value < 0.00000000000000022
library(corrplot)
corrplot(chisq_tes$residuals, is.cor = FALSE)
Pode-se observar no gráfico que , as pessoas preferem as musicas que tem menos intrumentalidade ,logo , curtem musicas com menores quantidades de vocais
Sim , para isso usaremos a função “CrossTable()” do pacote “gmodels”. Essa função irá calcular o qui-quadrado os residuos e nos mostrará uma tabela de frequência onde terá as porcentagens
Observação
Quamdo não é possél executar o qui-quadrado , a função com os seguintes argumentos a baixo executa o teste exato de fisher
O Teste Exato de Fisher é utilizado em tabelas de contingência 2x2 para comparar 2 grupos de duas amostras independentes, em outras palavras, tem como objetivo testar se a variável da linha e a variável da coluna são independentes.
Agora vamos executar o camando “CrossTable()” com os seguintes argumentos a baixo para obtermos oque desejavamos :
library(gmodels)
CrossTable(dados1$like,dados1$instru2,
expected = T, prop.r = F, prop.c = F, prop.t = T, prop.chisq = F,
chisq = T, fisher = T,
format = "SPSS")
##
## Cell Contents
## |-------------------------|
## | Count |
## | Expected Values |
## | Total Percent |
## |-------------------------|
##
## Total Observations in Table: 195
##
## | dados1$instru2
## dados1$like | fr baixa | fr alta | Row Total |
## -------------|-----------|-----------|-----------|
## não gostadas | 13 | 82 | 95 |
## | 45.795 | 49.205 | |
## | 6.667% | 42.051% | |
## -------------|-----------|-----------|-----------|
## gostadas | 81 | 19 | 100 |
## | 48.205 | 51.795 | |
## | 41.538% | 9.744% | |
## -------------|-----------|-----------|-----------|
## Column Total | 94 | 101 | 195 |
## -------------|-----------|-----------|-----------|
##
##
## Statistics for All Table Factors
##
##
## Pearson's Chi-squared test
## ------------------------------------------------------------
## Chi^2 = 88.41845 d.f. = 1 p = 0.000000000000000000005297451
##
## Pearson's Chi-squared test with Yates' continuity correction
## ------------------------------------------------------------
## Chi^2 = 85.74289 d.f. = 1 p = 0.00000000000000000002049194
##
##
## Fisher's Exact Test for Count Data
## ------------------------------------------------------------
## Sample estimate odds ratio: 0.03815835
##
## Alternative hypothesis: true odds ratio is not equal to 1
## p = 0.0000000000000000000002467435
## 95% confidence interval: 0.01591792 0.08511858
##
## Alternative hypothesis: true odds ratio is less than 1
## p = 0.0000000000000000000001894685
## 95% confidence interval: 0 0.07608403
##
## Alternative hypothesis: true odds ratio is greater than 1
## p = 1
## 95% confidence interval: 0.01822052 Inf
##
##
##
## Minimum expected frequency: 45.79487
Como podemos ver esse comando nos dá várias informações como : resultado do teste qui-quadrado, tabela de frequências ,porcentagens , o valor da estatística dos testes e seus graus de liberdade,entre outras .
Pode-se observar que cerca de 42.051% não gostava de musicas com muita intrumentalidade e outros 41.538% gostava(gosta) de musicas com menos instrumentalidade além disso , segundo os resultados , apenas 9,74 % dos usuários que estão em nossa observação gostava de musicas com mais intrumentalidade .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
c<- dados%>% group_by(liked) %>%
get_summary_stats(valence, type="median_iqr")
c%>%
gt()%>%
tab_header(
title = md("**Medianas valence por grupos**")
)
| Medianas valence por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | valence | 95 | 0.334 | 0.620 |
| 1 | valence | 100 | 0.584 | 0.258 |
library(gridExtra)
boxplot (dados$valence ~ dados$liked,
main = "Boxplot para valence e liked(preferidas) ",
xlab = "valence",
ylab = "liked",
las = 1,
col = c ("light green", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$valence , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pelo gráfico de boxplot é perceptível que existe uma leve diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que valence é um fator de apreciação(liked), para isso , vamos executar os seguintes testes:
Como valence é referente a positividade passada em uma faixa , ou seja, em uma música , vamos ver se tem relação com o liked
dados$vals<-dados$liked-dados$valence
shapiro.test(dados$vals)
##
## Shapiro-Wilk normality test
##
## data: dados$vals
## W = 0.94766, p-value = 0.000001492
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
wilcox.test(dados$valence~dados$liked, data=dados,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$valence by dados$liked
## W = 3303.5, p-value = 0.0002417
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo , a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, podemos afirmar que existe associação significativa entre as variáveis .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
c<- dados%>% group_by(liked) %>%
get_summary_stats(acousticness, type="median_iqr")
c%>%
gt()%>%
tab_header(
title = md("**Medianas acousticness por grupos**")
)
| Medianas acousticness por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | acousticness | 95 | 0.231 | 0.758 |
| 1 | acousticness | 100 | 0.206 | 0.334 |
library(gridExtra)
boxplot (dados$acousticness ~ dados$liked,
main = "Boxplot para acousticness e prefiridas ",
xlab = "acousticness",
ylab = "liked",
las = 1,
col = c ("orange", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$acousticness, dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pelo gráfico de boxplot e a tabela é perceptível que as medianas estão bem próximas ,mas será que não existe relação significatva enter elas? para isso , vamos executar os seguintes testes:
dados$acoust<-dados$liked-dados$acousticness
shapiro.test(dados$acoust)
##
## Shapiro-Wilk normality test
##
## data: dados$acoust
## W = 0.90886, p-value = 0.00000000137
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
wilcox.test(dados$acousticness~dados$liked, data=dados,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$acousticness by dados$liked
## W = 4901, p-value = 0.7024
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(>\) 0,05, não rejeita-se a hipótese nula ,logo , a médiana da diferênça dos valores é realmente igual a zero , nesse caso, podemos afirmar que não existe associação significativa entre as variáveis .
dados$ener<-dados$liked-dados$energy
shapiro.test(dados$ener)
##
## Shapiro-Wilk normality test
##
## data: dados$ener
## W = 0.89006, p-value = 0.00000000008998
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
wilcox.test(dados$energy~dados$liked, data=dados,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$energy by dados$liked
## W = 4337.5, p-value = 0.2956
## alternative hypothesis: true location shift is not equal to 0
como o Pvalor \(>\) 0,05, não rejeita-se a hipótese nula ,logo , a médiana da diferênça dos valores é realmente igual a zero . Nesse caso, não existe associação significativa entre as variáveis
k<-dados%>% group_by(liked) %>%
get_summary_stats(energy, type="median_iqr")
k %>%
gt()%>%
tab_header(
title = md("**Medianas Energy por grupos**"))
| Medianas Energy por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | energy | 95 | 0.639 | 0.550 |
| 1 | energy | 100 | 0.669 | 0.228 |
#require(knitr)
#knitr::kable(k ,caption = "**Medianas Energy por grupos**")
boxplot (dados$energy ~ dados$liked,
main = "Boxplot para energy e liked ",
xlab = "energy",
ylab = "liked",
las = 1,
col = c (" salmon1", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$energy , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pela tabela e pelo gráfico de boxplot é perceptível que existe uma leve diferença entre as médianas ,embora haja diferença entre as medianas, a variável Energy(energia) não seja um fator determinante para apreciação .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
j<-dados%>% group_by(liked) %>%
get_summary_stats(loudness, type="median_iqr")
j %>%
gt()%>%
tab_header(
title = md("**Medianas loudness por grupos**"))
| Medianas loudness por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | loudness | 95 | -9.211 | 6.618 |
| 1 | loudness | 100 | -6.916 | 3.090 |
###### gráfico
boxplot (dados$loudness ~ dados$liked,
main = "Boxplot para loudness e liked ",
xlab = "loudness",
ylab = "liked",
las = 1,
col = c (" red", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$loudness , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pela tabela das medianas e pelo gráfico de boxplot é perceptível que existe diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que loudness é um fator de apreciação(liked), para isso , vamos executar os seguintes testes
Pela quantidade de Outliers presente no boxplot , percebemos que o teste T independente não é o mais indicado para essa análise , mas por questões de didática vamos executar o teste de normalindade:
dados$loud<-dados$liked-dados$loudness
shapiro.test(dados$loud)
##
## Shapiro-Wilk normality test
##
## data: dados$loud
## W = 0.708, p-value < 0.00000000000000022
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
wilcox.test(dados$loudness~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$loudness by dados$liked
## W = 2470.5, p-value = 0.000000007227
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo , a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, podemos afirmar que existe associação significativa entre as variaveis .
Antes de seguir para o procedimento do teste, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
jo<-dados%>% group_by(liked) %>%
get_summary_stats(speechiness, type="median_iqr")
jo %>%
gt()%>%
tab_header(
title = md("**Medianas speechiness por grupos**"))
| Medianas speechiness por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | speechiness | 95 | 0.060 | 0.051 |
| 1 | speechiness | 100 | 0.222 | 0.198 |
###### gráfico
boxplot (dados$speechiness ~ dados$liked,
main = "Boxplot para speechiness e liked ",
xlab = "speechiness",
ylab = "liked",
las = 1,
col = c (" Khaki", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$speechiness , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pela tabela e pelo gráfico de boxplot é perceptível que existe uma diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que speechiness é um fator de apreciação(liked), para isso , vamos executar os seguintes testes
Pela quantidade de Outliers presente no boxplot , percebemos que o teste T independente não é o mais indicado para essa análise , mas por questões de aprendizado vamos executar o teste de normalindade:
dados$spee<-dados$liked-dados$speechiness
shapiro.test(dados$spee)
##
## Shapiro-Wilk normality test
##
## data: dados$spee
## W = 0.79461, p-value = 0.00000000000000278
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$speechiness~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$speechiness by dados$liked
## W = 1254.5, p-value < 0.00000000000000022
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo ,a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, existe associação significativa entre as variaveis .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
j1<-dados%>% group_by(liked) %>%
get_summary_stats(speechiness, type="median_iqr")
j1 %>%
gt()%>%
tab_header(
title = md("**Medianas speechiness por grupos**"))
| Medianas speechiness por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | speechiness | 95 | 0.060 | 0.051 |
| 1 | speechiness | 100 | 0.222 | 0.198 |
###### gráfico
boxplot (dados$duration_ms ~ dados$liked,
main = "Boxplot para duration_ms e liked(apreciadas) ",
xlab = "duration_ms",
ylab = "liked",
las = 1,
col = c ("Green", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$duration_ms , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pela tabela e pelo gráfico de boxplot é perceptível que existe uma diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que duration_ms é um fator de apreciação(liked), para isso , vamos executar os seguintes testes :
Pela quantidade de Outliers presente no boxplot , percebemos que o teste T independente não é o mais indicado para essa análise , mas por questões de aprendizado vamos executar o teste de normalindade:
dados$dura<-dados$liked-dados$duration_ms
shapiro.test(dados$dura)
##
## Shapiro-Wilk normality test
##
## data: dados$dura
## W = 0.85546, p-value = 0.000000000001223
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$duration_ms~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$duration_ms by dados$liked
## W = 7915, p-value = 0.0000000000000009471
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo ,a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, existe associação significativa entre as variáveis .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
###### gráfico
boxplot (dados$mode ~ dados$liked,
main = "Boxplot para mode e prefiridas ",
xlab = "mode",
ylab = "liked",
las = 1,
col = c (" Turquoise", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$mode , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
a primeira vista pode parecer meio estranho esse gráfico , mas podemos perceber com facilidade que ambas medianas são iguais ,logo , não há associação entre a variável mode e liked(apreciada) .
Com tudo , vamos prosseguir com o teste afim de provar que realmenete não existe associação entre as variáveis
g<- dados%>% group_by(liked) %>%
get_summary_stats(mode, type="median_iqr")
g%>%
gt()%>%
tab_header(
title = md("**Medianas mode por grupos**")
)
| Medianas mode por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | mode | 95 | 1 | 1 |
| 1 | mode | 100 | 1 | 1 |
podemos perceber pela tabela que a mediana da variável mode para 0(não gostadas) e para 1 (gostadas) são iguais , mas será que não teremos associação entre as variáveis ?
Prosseguindo com os teste:
dados$mod<-dados$liked-dados$mode
shapiro.test(dados$mod)
##
## Shapiro-Wilk normality test
##
## data: dados$mod
## W = 0.80572, p-value = 0.000000000000007604
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$mode~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$mode by dados$liked
## W = 4637.5, p-value = 0.7419
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(>\) 0,05, não rejeita-se a hipótese nula do teste de Wilcoxon ,logo ,a médiana da diferênça dos valores é realmente igual a zero . Nesse caso, não existe associação significativa entre as variáveis .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
###### gráfico
boxplot (dados$time_signature ~ dados$liked,
main = "Boxplot para time_signature e liked ",
xlab = "time_signature",
ylab = "liked",
las = 1,
col = c (" Turquoise", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$time_signature , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
como a variável time_signature está bastante conecetrada em seus valores entre 4 , por isso que o boxplot ficou com essa aparência
j<- dados%>% group_by(liked) %>%
get_summary_stats(time_signature, type="median_iqr")
j%>%
gt()%>%
tab_header(
title = md("**Medianas time_signature por grupos**")
)
| Medianas time_signature por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | time_signature | 95 | 4 | 0 |
| 1 | time_signature | 100 | 4 | 0 |
Pela tabela das medianas do grupos ,temos que os valores das medianas obtidos são iguais ,mas será que realmente não exista associação entre as viáveis ?
dados$sigo<-dados$liked-dados$time_signature
shapiro.test(dados$sigo)
##
## Shapiro-Wilk normality test
##
## data: dados$sigo
## W = 0.72857, p-value < 0.00000000000000022
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$time_signature~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$time_signature by dados$liked
## W = 4028.5, p-value = 0.001609
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo ,a médiana da diferênça dos valores é realmente diferente de zero , nesse caso, existe associação significativa entre as variáveis .
Mesmo as medianas da médiana sendo iguais , o teste de wilcoxon provou que existe a associação entre o tempo de compasso(time_signature) e apreciação(liked), isso acontece pelo motivo do teste de wilcoxon Mann-Whitney ser influenciado pelo formato da distribuição, ou seja , existe diferença entre as distribuições .
##vamos plotar os Histogramas dessas distribuições
#par(mfrow=c(1,3))
#hist(dados$time_signature[dados$liked == "0"],
# ylab="Frequência", xlab="Nota", main="Grupo Frente")
library(ggplot2)
library(gridExtra)
plot1<-qplot(dados$time_signature[dados$liked == "0"],
main = "Histogram time_signature",
xlab = "não gostadas",
ylab = "frequencias",
fill=I("blue"),
col=I("black") ,
col="red",
fill="red",
alpha= .4) + theme_replace() +
geom_density(col=2)+theme(legend.position="none")
plot2<-qplot(dados$time_signature[dados$liked == "1"],
main = "Histogram time_signature",
xlab = "gostadas",
ylab = "frequencias",
fill=I("blue"),
col=I("black") ,
col="red",
fill="red",
alpha= .4) + theme_dark() +
geom_density(col=6)+ theme(legend.position="none")
grid.arrange(plot1, plot2, ncol=1, nrow = 2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Pode-se perceber que realmente existe diferça entre as duas distribuições .
vamos ver se tranformando a variável time_signature em intervalo os valores das medianas iram mudar :
dados<- dados %>% arrange(dados$time_signature)
#view(dados)
time1<-rep("1-3",19)
time2<-rep("4-5",176)
time1<-as.matrix(time1, ncol=1)
time2<-as.matrix(time2, ncol=1)
signat<-rbind(time1,time2)
dados$signat<-signat
dados$signat<-as.factor(dados$signat)
boxplot (dados$time_signature , dados$liked,
main = "Boxplot para time_signature e liked ",
xlab = "time_signature",
ylab = "liked",
las = 1,
col = c (" Turquoise", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$time_signature , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Após a transformação é perceptível que a relação entre as medianas mudou , agora fica evidente que reamente existe diferença entre as duas medianas , vamos testar a associação pelo teste qui-quadrado e verificar se tem alguma diferença em relação ao teste de wilcoxon :
Lembrando que signat é a nossa variável time_signature convertida em intervalo e transformada em “factor” :
chisq.test(dados$signat,dados$liked,correct=T)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: dados$signat and dados$liked
## X-squared = 9.0988, df = 1, p-value = 0.002558
Como o Pvalor \(<\) 0,05, rejeitamos a hipótese nula em favor da hipótese alternativa ,logo ,existe realmete associação significativa entre as variáveis .
Como podemos ver tanto o teste de Wilcoxon o Qui-quadrado após a transformação da variável time_signature deram que existe associação significativa entre as variáveis com uma pequena diferença no Pvalor.
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
###### gráfico
boxplot (dados$key ~ dados$liked,
main = "Boxplot para key e liked ",
xlab = "key",
ylab = "liked",
las = 1,
col = c (" Violet", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$time_signature , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
A primeira vista pode parecer meio estranho esse gráfico , mas podemos perceber com facilidade que ambas medianas são iguais ,mas será que não há realmente associação entre a variável key e liked(apreciada) ?
i<- dados%>% group_by(liked) %>%
get_summary_stats(key, type="median_iqr")
i%>%
gt()%>%
tab_header(
title = md("**Medianas key por grupos**")
)
| Medianas key por grupos | ||||
|---|---|---|---|---|
| liked | variable | n | median | iqr |
| 0 | key | 95 | 6 | 6 |
| 1 | key | 100 | 6 | 6 |
Podemos observar pela tabela das medianas que as medianas são iguais , mas será que realmente não exista associação entre as variáveis ?
dados$ke<-dados$liked-dados$key
shapiro.test(dados$ke)
##
## Shapiro-Wilk normality test
##
## data: dados$ke
## W = 0.9294, p-value = 0.00000004166
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$key~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$key by dados$liked
## W = 4977, p-value = 0.5633
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(>\) 0,05, não rejeita-se a hipótese nula,logo ,a médiana da diferênça dos valores é realmente igual de zero , nesse caso, não existe associação significativa entre as variáveis .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
###### gráfico
boxplot (dados$tempo ~ dados$liked,
main = "Boxplot para tempo e liked(prefiridas) ",
xlab = "tempo",
ylab = "liked",
las = 1,
col = c (" green", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$tempo , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pelo gráfico de boxplot é perceptível que existe uma leve diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que tempo é um fator de apreciação(liked), para isso , vamos executar os seguintes testes:
dados$te<-dados$liked-dados$tempo
shapiro.test(dados$te)
##
## Shapiro-Wilk normality test
##
## data: dados$te
## W = 0.97887, p-value = 0.004825
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$tempo~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$tempo by dados$liked
## W = 2517, p-value = 0.00000001449
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(<\) 0,05, rejeita-se a hipótese nula,logo ,a médiana da diferênça dos valores é realmente igual de zero , nesse caso, existe associação significativa entre as variáveis .
Antes de seguir para o procedimento do teste no R, será feito uma breve análise descritiva dos dados,com o intuito de verificar visualmente se as medianas possuem diferença.
h<-dados%>% group_by(liked) %>%
get_summary_stats(liveness, type="common")
h %>%
gt()%>%
tab_header(
title = md("**Medianas liveness(vivacidade) por grupos**"))
| Medianas liveness(vivacidade) por grupos | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| liked | variable | n | min | max | median | iqr | mean | sd | se | ci |
| 0 | liveness | 95 | 0.033 | 0.633 | 0.102 | 0.094 | 0.150 | 0.116 | 0.012 | 0.024 |
| 1 | liveness | 100 | 0.048 | 0.554 | 0.112 | 0.085 | 0.147 | 0.097 | 0.010 | 0.019 |
###### gráfico
boxplot (dados$liveness ~ dados$liked,
main = "Boxplot para liveness(vivacidade) e apreciadas ",
xlab = "liveness",
ylab = "liked",
las = 1,
col = c (" purple", "steelblue1"),
names = c("não gostadas", "gostadas")
)
meanval <- by(dados$liveness , dados$liked, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
Analisando pelo gráfico de boxplot é perceptível que existe uma leve diferença entre as médianas ,embora haja diferença entre as medianas, não podemos afirmar que liveness é um fator de apreciação(liked), para isso , vamos executar os seguintes testes :
dados$le<-dados$liked-dados$liveness
shapiro.test(dados$le)
##
## Shapiro-Wilk normality test
##
## data: dados$le
## W = 0.78437, p-value = 0.000000000000001137
Como o Pvalor \(<\) 0,05 , não rejeita-se a hipótese nula . Nesse sentido , temos que não existe normalidade entre as variáveis testadas , Logo ,o teste T independente não é o mais indacado , assim vamos utilizar o teste Wilcoxon:
options(scipen = 999)
wilcox.test(dados$liveness~dados$liked,correct=T)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dados$liveness by dados$liked
## W = 4356.5, p-value = 0.3184
## alternative hypothesis: true location shift is not equal to 0
Como o Pvalor \(>\) 0,05, não rejeita-se a hipótese nula,logo ,a médiana da diferênça dos valores é realmente igual de zero , nesse caso, não existe associação significativa entre as variáveis .
Como vimos durante as análises executadas, mesmos quando as medianas das variáveis possuiam igualdade , em alguns casos, os testes davam significativo ,mostrando que há relação entre essas variáveis . Em outros casos, mesmo tendo uma pequena diferença entre as medianas ,os resltudados obitidos nos mostraram que não há associação entre algumas dessas variáveis , isso nos mostra a importância de executar os testes não paramétricos e parametricos .
Segundo os testes realizados , foi possível identificar associação entre as variáveis nas quais são fatores de apreciação (liked ), essas variáveis são : (danceability,instrumentalness,valence ,loudness,speechiness ,duration_ms,time_signature ,tempo)
Além disso , obtivemos que as seguintes variáveis não possuem associação significativa com liked, essas variáveis são : (mode,liveness,key,energy,acoustiness).
http://rstudio-pubs-static.s3.amazonaws.com/408638_6679293d4c7a415eaebe00faa3aea0cb.html
https://rstudio-pubs-static.s3.amazonaws.com/508076_7f62a14b367e4f55a154ef166fc4860b.html
http://lea.estatistica.ccet.ufrn.br/tutoriais/teste-de-wilcoxon-pareado.html
https://bookdown.org/luisfca/docs/qui-quadrado.html
link para o material da UFPR : http://www.leg.ufpr.br/lib/exe/fetch.php/disciplinas:ce001:wilcoxon_1_.pdf