No decorrer da Primeira Divisão do Campeonato Brasileiro de Futebol Masculino o website Globoesporte.com, mais popular site de notícias esportivas do Brasil, tem o costume de promover entre seus comentaristas de futebol uma competição chamada Palpites do GE. Nesta competição, os comentaristas são apresentados antecipadamente aos jogos que serão disputados a cada rodada e fazem suas previsões entre os três resultados possíveis - vitória de um time, vitória do outro ou empate - para os dez jogos a serem disputados.
O campeonato Brasileiro de 2020 foi marcado por uma circunstância excepcional, pois devido à pandemia de COVID-19 foi proibida a presença de público nos estádios de todo o país.Tendo em conta que o mando de campo é unanimemente considerado como fator importante para a previsão do resultado, consideramos a oportunidade de analisar a precisão das previsões dos comentaristas quando os jogos se dão sem a influência direta das torcidas.
Para o campeonato de 2020, os comentaristas escolhidos pelo site para participar da competição foram: Alex Escobar (apresentador e narrador), André Rizek (Jornalista e Apresentador), Felipe Andreoli (repórter e humorista), Grafite (ex-jogador), Muricy Ramalho (ex-jogador e ex-técnico), Paulo Nunes (ex-jogador), Paulo Vinícius Coelho - ou PVC (Jornalista) e Renata Mendonça (Jornalista).
O objetivo principal do presente estudo é averiguar se o número de acertos obtidos por cada participante do “Palpites do GE” até a 24 rodada da primeira divisão do Campeonato Brasileiro está dentro de um valor esperado do que será aferido como um resultado aleatório.
Como objetivo secundário, se buscará averiguar a evolução do desempenho dos participantes ao longo das rodadas, de modo a observar se os palpites dos comentaristas apresentam aumento na precisão conforme o campeonato de desenrola.
A base de dados foi montada a partir da compilação de dados dos palpites e resultados dos participantes do “Palpites do GE” até a 24a rodada da primeira divisão do Campeonato Brasileiro de Futebol. A escolha da captação dos dados até a 24a rodada se deu pela saída do participante Muricy Ramalho, que veio a se tornar diretor de futebol do São Paulo Futebol Clube. Muricy Ramalho era importante para a qualidade dos dados da pesquisa, pois era o único ex-técnico participante da competição do GE. Os dados estão disponibilizados no website Globoesporte.com
Variável quantitativa ordinal que indica a rodada do campeonato sobre a qual os palpites foram feitos. Os valores desta variável assumem valores entre 1 e 24.
Variável qualitativa nominal que indica o comentarista responsável pelos palpites.
Variável quantitativa discreta que indica o número de acertos obtidos por cada comentarista em cada rodada. Como cada rodada é composta por 10 jogos, os valores desta variável se situam entre 0 e 10.
A base de dados é ecomposta por 24 linhas que representam as 24 rodadas observadas no campeonato, totalizando 240 jogos.
Neste trabalho serão utilizados gráficos de barra, diagramas de dispersão com linhas de média e média móvel, gráficos de boxplot e testes binomiais bilaterais.
Será utilizado para visualizar a distribuição binomial, valor esperado, região crítica e resultado aobservado dos testes binomiais.
Será utilizado como base para visualização da média e média móvel de modo que será possível perceber a evolução da precisão dos palpites dos comentaristas.
Permite a visualizar as medianas, amplitudes dos dados, simetrias e outliers.
Realiza um teste de hipótese dentro dos parâmetros estabelecidos e retorna o resultado das hipóteseses nula e alternativa,a, p-valor, e intervalo de confiança dos parâmetros dados.
defaultW <- getOption("warn")
options(warn = -1)
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2 v purrr 0.3.4
## v tibble 3.0.4 v dplyr 1.0.2
## v tidyr 1.1.2 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(readxl)
library(janitor)
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library(tidyr)
library(dplyr)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(grid)
library(DT)
palpitesge <- read_excel("C:/Users/Che Guevara Jr/Documents/Bernardo/Estatistica/palpitesge.xlsx",
skip = 1) %>% clean_names()
palpitesge<-palpitesge[1:24,]
palpite_long<-palpitesge %>%
pivot_longer(!rodada,, names_to = "cometarista", values_to = "numero_acertos")
DT::datatable(palpite_long[1:192, c(1:3)], rownames = FALSE)
options(warn = defaultW)
par(cex=0.7)
boxplot(palpite_long$numero_acertos~palpite_long$cometarista,col="red", las=2, ylab="", xlab="", main="Acerto por Rodada", names =c("Escobar", "Rizek", "Andreoli", "Grafite", "Muricy", "Nunes", "PVC", "Renata"))
Como é possível observar pelo gráfico acima, todos os comentaristas apresentam grande variação do número de acertos por rodada, em especial André Rizek.No entanto, a mediana apresentada pelo gráfico, que divide o número de valores observados, é relativamente parecida entre todos, variando entre cerca de 3 e 4.
palpite_long$rodada_num<-as.numeric(palpite_long$rodada)
boxplot(palpite_long$numero_acertos~palpite_long$rodada_num,col="blue", ylab="Acertos por Rodada", xlab="Rodada", main="Evolução da Precisão dos Acertos por Rodada")
Pode-se observar neste gráfico que a precisão dos palpites não apresenta melhora conforme as rodadas se passam. Continua sendo possível observar grande variação no número de acertos por rodada até a 20ª rodada, por exemplo, com destaque para a Rodada 17. Inclusive o gráfico mostra grande oscilação na própria variação.Esse gráfico se mostra interessante, pois é de se esperar que com o desenrolar do campeonato, os comentaristas sejam capazes de obter mais informações através da observação dos jogos.
ggplot(palpite_long, aes(rodada_num, numero_acertos)) +
labs(y= "Número de Acertos", x = "Rodada", title = "Acertos por Rodada") +
geom_point(position=position_jitter(0.3,0.3), fill="orange", size=2) +
geom_line(aes(y=rollmean(numero_acertos, 7, na.pad=TRUE)), col = "blue", size=1.5) +
geom_hline(yintercept=mean(palpite_long$numero_acertos), col = "red", size=1.7)+
theme_bw()
## Warning: Removed 6 row(s) containing missing values (geom_path).
Este gráfico traz uma nova apresentação para os mesmos dados utilizados no gráfico anterior. Através da dispersão dos pontos juntamente com a linha de média (vermelho) e a média móvel (azul), pode-se perceber que, embora não haja uma tendencia visível de melhora na média dos acertos dos participantes, ao longo do campeonato essa média móvel parece convergir para a média. Isso indica que os comentaristas não ficam mais precisos, mas que talvez comecem a convergir em opinião durante o campeonato.
Os testes realizados a partir desta seção serão todos baseados no teste binomial exato, pois os dados obtidos para a base de dados aqui usada são referentes a 240 jogos com 3 resultados possíveis e propabilidade de sucesso de 1/3. A seguir segue um gráfico demonstrando a distribuição utilizada.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Distribuição") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
A linha cinza do gráfico marca o Valor Esperado (E=n x p) e o intervalo de confiaça (delimitado pela região entre as linhas pretas) no valor de 95% para que haja maior precisão na verificação da hipótese nula. Para cada comentarista será colocada uma linha amarela indicando o resultado observado.
Alex Escobar apresentou um total de 81 acertos em 240 possíveis, uma média de 3.375 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(81, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 81 and 240
## number of successes = 81, number of trials = 240, p-value = 0.8912
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.2779358 0.4011361
## sample estimates:
## probability of success
## 0.3375
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 89.12%, o que nos leva a acreditar que a hipóstese nula é aceitável (BUSSAB, MORETIN, 2000, p.341).
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Alex Escobar") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 81, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por Alex Escobar fica dentro do intervalo de confiança do teste o que, juntamente com o alto resultado do p-valor, leva a aceitação da hipótese de que seus palpites podem ser considerados aleatórios.
André Rizek apresentou um total de 101 acertos em 240 possíveis, uma média de 4.21 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(101, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 101 and 240
## number of successes = 101, number of trials = 240, p-value = 0.004905
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.3576151 0.4860318
## sample estimates:
## probability of success
## 0.4208333
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 0.5%, o que nos leva a considerar a hipóstese nula como não aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "André Rizek") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 101, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por André Rizek fica fora do intervalo de confiança do teste o que, juntamente com o baixo resultado do p-valor, leva a rejeição da hipótese de que seus palpites podem ser considerados aleatórios.
Felipe Andreoli apresentou um total de 90 acertos em 240 possíveis, uma média de 3.75 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(90, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 90 and 240
## number of successes = 90, number of trials = 240, p-value = 0.1714
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.3135543 0.4395749
## sample estimates:
## probability of success
## 0.375
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 17.14%, o que, quando comparado com nosso alpha usado (5%) nos leva a considerar a hipótese nula como aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Felipe andreoli") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 90, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por Felipe Andreoli fica dentro do intervalo de confiança do teste o que, juntamente com o resultado do p-valor maior do que alpha, leva a aceitação da hipótese de que seus palpites podem ser considerados aleatórios.
Grafite apresentou um total de 80 acertos em 240 possíveis, uma média de 3.33 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(80, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 80 and 240
## number of successes = 80, number of trials = 240, p-value = 1
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.2740034 0.3968401
## sample estimates:
## probability of success
## 0.3333333
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 100%, o que nos leva a considerar a hipótese nula como aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Grafite") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 80, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por Grafite fica dentro do intervalo de confiança do teste (sendo exatamente igual ao valor esperado) o que, juntamente com o alto resultado do p-valor (igual a 1), leva a aceitação da hipótese de que seus palpites podem ser considerados aleatórios.
Muricy Ramalho apresentou um total de 95 acertos em 240 possíveis, uma média de 3.96 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(95, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 95 and 240
## number of successes = 95, number of trials = 240, p-value = 0.0468
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.3335122 0.4607611
## sample estimates:
## probability of success
## 0.3958333
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 4.7%. Como o resultado é menor do que o alpha de 5%, considera-se a hipótese como aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Muricy Ramalho") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 95, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por Muricy Ramalho fica dentro do intervalo de confiança do teste, embora esteja muito próximo ao limite superior, juntamente com o resultado do p-valor menor (4.7%) do que o alpha de 5%, leva a aceitação da hipótese de que seus palpites podem ser considerados aleatórios.
Paulo Nunes apresentou um total de 88 acertos em 240 possíveis, uma média de 3.66 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(88, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 88 and 240
## number of successes = 88, number of trials = 240, p-value = 0.2739
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.3056046 0.4310672
## sample estimates:
## probability of success
## 0.3666667
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 27.4%. Como o resultado é menor do que o alpha de 5%, considera-se a hipótese como aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Paulo Nunes") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 88, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por Paulo Nunes fica dentro do intervalo de confiança do teste, embora esteja muito próximo ao limite superior, juntamente com o resultado do p-valor (27.4%), leva a aceitação da hipótese de que seus palpites podem ser considerados aleatórios.
Paulo Vinícius Coelho apresentou um total de 90 acertos em 240 possíveis, uma média de 3.75 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(90, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 90 and 240
## number of successes = 90, number of trials = 240, p-value = 0.1714
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.3135543 0.4395749
## sample estimates:
## probability of success
## 0.375
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 17.14%, o que, quando comparado com nosso alpha usado (5%) nos leva a considerar a hipótese nula como aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "PVC") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 90, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por PVC fica dentro do intervalo de confiança do teste o que, juntamente com o resultado do p-valor maior do que alpha, leva a aceitação da hipótese de que seus palpites podem ser considerados aleatórios.
Renata Mendonça apresentou um total de 97 acertos em 240 possíveis, uma média de 3.75 por rodada. Com esses dados temos o seguinte teste com nível de confiança de 95% e H0:igual a 1/3 e H1: diferente de 1/3:
binom.test(97, 240, p = 0.3333, alternative = c("two.sided"), conf.level = 0.95)
##
## Exact binomial test
##
## data: 97 and 240
## number of successes = 97, number of trials = 240, p-value = 0.02363
## alternative hypothesis: true probability of success is not equal to 0.3333
## 95 percent confidence interval:
## 0.3415281 0.4692029
## sample estimates:
## probability of success
## 0.4041667
O resultado da probabilidade de significância (p-valor) mostra que, tendo a probabilidade aleatória de 1/3 de acerto, a chance de se encontrar o valor observado em 240 amostras é de 2.63% o que leva a considerar-se a hipótese nula como não aceitável.
n=240
p=0.33333333
x=seq(0, n, 1)
px= dbinom(x, n, p)
dat=data.frame(x, px)
ggplot(dat, aes(x = x, y = px)) +
geom_bar(stat = "identity",col = "firebrick", fill = "firebrick")+
xlim(45, 120) +
labs(y= "", x = "Total de acertos", title = "Renata Mendonça") +
geom_vline(xintercept = 80, col = "grey", size = 1.5)+
geom_vline(xintercept = 97, col = "yellow", size = 1.5)+
geom_vline(xintercept = 64.8, col = "black", size = 1.5)+
geom_vline(xintercept = 95.28, col = "black", size = 1.5)+
theme_bw()
## Warning: Removed 165 rows containing missing values (position_stack).
## Warning: Removed 2 rows containing missing values (geom_bar).
Como é possível observar, O resultado apresentado por Renata Mendonça fica fora do intervalo de confiança do teste o que, juntamente com o baixo resultado do p-valor, leva a rejeição da hipótese de que seus palpites podem ser considerados aleatórios.
A partir da análise dos dados, podemos concluir que: 1. não existe melhora nos acertos dos palpites por rodada em geral no decorrer do campeonato 2. O decorrer do campeonato levou a uma maior padronização do número de acertos por rodada 3. Somente os comentaristas André Rizek e Renata Mendonça demonstraram maior proficiência em seus palpites, pois seus resultados estão fora do intervalo do é o aleatório.
É interessante notar, portanto, que nenhum dos profissionais que são mais intimamente ligados ao trabalho dentro das 4 linhas conseguiu um resultado diferente do aleatório.
MORETTIN, P. A.; BUSSAB, W. D. O. Estatística Básica. 5ª edição. Volume I e II. Editora: Makron Books, 2000.