Efeito da ausência de torcida nos jogos do Brasileirão

  • Escrito por William e Julio em Análises
  • 05/03/2021

Motivação

Será que a ausência de torcida nos jogos de futebol causada pela pandemia tem algum efeito no desempenho dos times mandantes?

Para responder essa pergunta, o Julio e eu investigamos os resultados da era de pontos corridos da Série A do Brasileirão.

Acerte o seu aí que eu arredondo o meu aqui. Está valendo! - Silvio Luiz, narrador esportivo brasileiro

Os dados

Os dados utilizados na análise abaixo estão no pacote {brasileirao}. O pacote está disponível neste repositório e se você quiser saber mais sobre como usar, confira este post.

head(brasileirao::matches)
##   season       date        home score        away
## 1   2003 2003-03-29 Atlético PR   2x0      Grêmio
## 2   2003 2003-03-29     Guarani   4x2       Vasco
## 3   2003 2003-03-30 Corinthians   0x3 Atlético MG
## 4   2003 2003-03-30       Goiás   2x2    Paysandu
## 5   2003 2003-03-30    Criciúma   2x0  Fluminense
## 6   2003 2003-03-30    Cruzeiro   2x2 São Caetano

Arrumando

Antes de iniciar a análise, precisamos dar aquele famoso tapa na base. A partir da coluna score, que tem seus valores no estilo gols_mandante x gols_visitante, construímos as seguintes variáveis de interesse:

  • result: que indica se o resultado foi vitória do mandante, empate ou derrota do mandante;

  • pontos: que indica o número de pontos feitos pelo mandante na partida.

Também criamos um variável torcida, que indica como sem_torcida a temporada de 2020 e como com_torcida as demais.

library(tidyverse)
library(lubridate)

tab_resul_mandante <- brasileirao::matches %>% 
  dplyr::filter(season <= 2020) %>% 
  separate(
    score, 
    c("home_score", "away_score"), 
    sep = "x", 
    convert = TRUE
  ) %>% 
  mutate(
    home_win = home_score > away_score,
    result = case_when(
      home_score > away_score ~ "Vitória do mandante",
      home_score == away_score ~ "Empate",
      home_score < away_score ~ "Derrota do mandante"
    ),
    pontos = case_when(
      home_score > away_score ~ 3,
      home_score == away_score ~ 1,
      home_score < away_score ~ 0
    ),
    torcida = ifelse(season == 2020, "sem_torcida", "com_torcida")
  ) 

Algumas visualizações

A nossa primeira investigação foi sobre a proporção de vitórias dos mandantes, comparando a temporada de 2020 com as demais.

O gráfico abaixo mostra a proporção de vitórias, empates e derrotas dos mandantes em cada temporada. Vemos que:

  • A proporção de vitórias dos mandantes no Brasileirão de pontos corridos varia de 44% a 55%.

  • 2020, com 45%, foi a temporada com a segunda menor proporção de vitórias dos mandantes, perdendo para 2017 (44%).

tab_grafico <- tab_resul_mandante %>% 
  count(season, torcida, result) %>% 
  group_by(season, torcida) %>% 
  mutate(prop = n/sum(n)) %>% 
  ungroup() 

tab_grafico %>% 
  ggplot(aes(x = season, y = prop, fill = result)) +
  geom_col(aes(colour = torcida), position = "stack") +
  geom_hline(yintercept = .5, linetype = 2, colour = 2, size = 1) +
  geom_label(
    aes(label = scales::percent(prop, accuracy = 1), y = prop / 2),
    size = 3,
    color = "white",
    data = filter(tab_grafico, result == "Vitória do mandante")
  ) +
  theme_minimal(14) +
  scale_colour_manual(values = c("transparent", "black")) +
  guides(colour = FALSE) +
  theme(
    legend.position = "bottom",
    plot.title = element_text(hjust = 0.5),
    plot.subtitle = element_text(hjust = 0.5),
    legend.text = element_text(size = 10)
  ) +
  scale_fill_viridis_d(begin = .8, end = .2) +
  scale_y_continuous(labels = scales::percent) +
  labs(
    title = "Desempenho dos mandantes",
    subtitle = "por temporada",
    x = "Temporada",
    y = "Proporção",
    fill = ""
  )

Em vez de olhar a proporção dos resultados, poderíamos olhar diretamente a quantidade de pontos somados pelos mandantes em cada temporada.

O gráfico a seguir mostra que o número de pontos por temporada tende a permanecer entre 650 e 700, com algumas exceções para mais e para menos. Novamente, 2020 foi a temporada com o segundo menor número de pontos feitos pelos mandantes (621, contra 604 da temporada 2017).

tab_resul_mandante %>% 
  filter(season >= 2006) %>% 
  group_by(season) %>% 
  summarise(total_pontos = sum(pontos)) %>% 
  ggplot(aes(x = season, y = total_pontos)) +
  geom_line(color = viridis::viridis(1, begin = 0.2)) +
  geom_label(aes(label = total_pontos), color = viridis::viridis(1, begin = 0.2)) +
  theme_minimal(14) +
  labs(
    x = "Temporada",
    y = "Número de pontos do mandante"
  )

Por fim, podemos investigar o efeito para cada time. A tabela a seguir mostra o número de pontos como mandante conquistados por cada time na temporada de 2020 contra a média de pontos como mandante nas últimas 3 temporadas (2017, 2018 e 2019).

library(reactable)

tab_resul_mandante %>% 
  filter(season %in% c(2017:2020)) %>% 
  mutate(home = brasileirao::fix_names(home)) %>% 
  group_by(season, torcida, home) %>% 
  summarise(total_pontos = sum(pontos)) %>% 
  group_by(torcida, home) %>% 
  summarise(media_pontos = mean(total_pontos)) %>% 
  ungroup() %>%
  pivot_wider(
    id_cols = home,
    names_from = torcida, 
    values_from = media_pontos,
    names_prefix = "pts_"
  ) %>%
  filter(!is.na(pts_sem_torcida)) %>% 
  mutate(
    diferenca_rel = (pts_sem_torcida - pts_com_torcida) / pts_com_torcida
  ) %>% 
  arrange(desc(diferenca_rel)) %>% 
  mutate(
    pts_com_torcida = round(pts_com_torcida, 1),
    diferenca_rel = scales::percent(diferenca_rel, accuracy = 0.1)
  ) %>% 
  reactable(
    pagination = FALSE,
    compact = TRUE,
    style = "margin-bottom: 1px;",
    columns = list(
      home = colDef(
        name = "Time"
      ),
      pts_com_torcida = colDef(
        name = "Média últimas 3 temporadas",
        na = "—",
        align = "center"
      ),
      pts_sem_torcida = colDef(
        name = "Pontos como mandante em 2020",
        align = "center"
      ),
      diferenca_rel = colDef(
        name = "Diferença percentual",
        na = "—",
        align = "center"
      )
    )
  )

Conclusões

Existe efeito da ausência de torcida no desempenho dos mandantes? Como bons cientistas, não sabemos.

Descritivamente, os dados indicam que, se o efeito existe, parece ser pequeno. Pelo menos menor do que o senso comum esperaria. Embora a proporção de vitórias e número de pontos dos mandantes tenho sido abaixo da média, não foi o pior ano e não foi tão diferente das outras temporadas abaixo da média.

Olhando por time, vimos queda no desempenho de alguns times que mantiveram ou reforçaram o elenco nos últimos anos, como Palmeiras e Flamengo. Outros times que não apresentaram muita variação de elenco, como São Paulo e Internacional, mantiveram a média dos últimos anos.

Pessoalmente, juntando o que vi nos dados e nos jogos, eu acredito na existência de um efeito de torcida, mas acho muito difícil estudá-lo isoladamente. As interações com time, estádio, adversário, posição na tabela, entre outros fatores, podem ser muito importantes e, olhando só a média simples, veríamos um efeito muito menor. Além disso, existe o efeito pandemia, que mudou alguns aspectos do jogo (como as 5 substuições e o calendário ainda mais apertado) e trouxe mais ruídos (como os surtos de COVID-19 que aconteceram em vários times).

Assim, deixo as seguintes perguntas:

  • O que aconteceu em 2017?

  • Com os dados disponíveis, é possível testar (estatisticamente) o efeito da torcida? Quais seriam as suposições e limitações?

  • E você? Acredita no efeito da torcida?

É isso! Dúvidas, sugestões e críticas, mande aqui nos comentários.

Até a próxima!

comments powered by Disqus