O objetivo desta pesquisa é estudar o comportamento dos times já rebaixados no Campeonato Brasileiro de Futebol e também os fatores que influenciam um time ser rebaixado no Brasileirão. Em particular, buscamos investigar a validade da ideia tradicional de que alcançar a marca de “45 pontos” é suficiente para evitar o rebaixamento para a segunda divisão. Essa crença amplamente disseminada sugere que atingir essa pontuação pode ser uma garantia de permanência na elite do futebol nacional. No entanto, é crucial avaliar se essa hipótese se sustenta ao longo do tempo e se os fatores que determinam o rebaixamento são realmente refletidos nessa meta de pontos.
Para alcançar este objetivo, a pesquisa utilizará análise descritiva para identificar quais variáveis, como por exemplo, o número de gols marcados, gols sofridos, derrotas, empates e etc, têm maior impacto em um time ser rebaixado. Além disso, será realizada uma análise crítica sobre a relevância da meta dos “45 pontos”, comparando-a com as evidências observadas para determinar sua eficácia como indicador de segurança contra o rebaixamento.
library(ggplot2)
library(dplyr)
library(e1071)
library(kableExtra)
library(knitr)
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
brasileirao <- read.csv("brasileirao.csv", sep = ";")
brasileirao <- brasileirao %>%
filter(year >= 2006)
# Filtrando dataframe apenas com os times rebaixados
brasileirao_rebaixados <- brasileirao %>%
filter(position > 16, year >= 2006)
# Medidas Estatísticas
pontos <- brasileirao_rebaixados$points
media <- mean(pontos)
mediana <- median(pontos)
variancia <- var(pontos)
desvio_padrao <- sd(pontos)
assimetria <- skewness(pontos)
curtose <- kurtosis(pontos) # Correção na função de curtose
# Pontuação max e min de times rebaixados
min_pontos <- min(pontos)
max_pontos <- max(pontos)
# Criando o dataframe para as linhas do histograma
lines_df <- data.frame(
value = c(media, mediana),
Legenda = c("Média", "Mediana")
)
# Histograma
ggplot(brasileirao_rebaixados, aes(x = points)) +
geom_histogram(color = "white", fill = "black", binwidth = 1) +
scale_x_continuous(breaks = seq(from = min_pontos, to = max_pontos, by = 1)) +
geom_vline(data = lines_df, aes(xintercept = value, color = Legenda), linetype = "dashed", size = 1) +
labs(
title = "Histograma da pontuação dos times rebaixados entre 2006 - 2019",
x = "Quantidade de Pontos",
y = "Frequência"
) +
scale_color_manual(values = c("red", "blue")) + # Adicione as cores específicas
theme_classic()
# Criando a tabela com as estatísticas
estatisticas <- data.frame(
Estatísticas = c("Média", "Mediana", "Variância", "Desvio Padrão", "Assimetria", "Curtose"),
Valor = c(media, mediana, variancia, desvio_padrao, assimetria, curtose)
)
# Mostrar a tabela
kable(estatisticas, col.names = c("Estatísticas", "Valor"))
| Estatísticas | Valor |
|---|---|
| Média | 35.9464286 |
| Mediana | 37.0000000 |
| Variância | 42.0152597 |
| Desvio Padrão | 6.4819179 |
| Assimetria | -0.9637136 |
| Curtose | 0.4991345 |
O valor da assimetria é negativo, indicando que há uma concentração dos dados à direita. Isso sugere que a maior parte dos pontos está agrupada no intervalo de 35 a 45 pontos. Ademais, a curtose de aproximadamente 0.5 do histograma dos pontos dos times rebaixados indica que a distribuição é ligeiramente mais pontiaguda e com caudas um pouco mais pesadas do que uma distribuição normal. Isso sugere uma leve concentração dos dados em torno da média e algumas caudas mais pronunciadas, mas a diferença não é extrema.
Após a análise do histograma, observa-se que a maior pontuação já alcançada por um time rebaixado é de 45 pontos. No entanto, é importante destacar que essa situação foi uma exceção, ocorrendo apenas uma vez entre 2006 e 2019. É necessário estudar o histórico de pontos do 16º colocado, pois se trata do primeiro time fora da zona de rebaixamento.
brasileirao_pos16 = brasileirao %>%
filter(brasileirao$position == 16, brasileirao$year >= 2006)
ggplot(brasileirao_pos16, aes(x = points)) +
geom_histogram(color = "white", fill = "black", binwidth = 1 ) +
scale_x_continuous(breaks = seq(from = 39, to = 46, by=1)) +
labs(title = "Histograma de pontos do 16º colocado",
x = "Pontuação",
y = "Frequência") +
theme_classic()
Vejamos que, a frequência de times na 16º colocação com 45 pontos é de 4 observações. Dado que no histograma de pontuação dos times rebaixados entre 2006 e 2019 temos uma observação de ocorrência de 45 pontos. Concluímos que, das vezes nas quais um time terminou o campeonato com 45 pontos, 1 em 5 ele foi rebaixado. Tal feito foi realizado pelo Coritiba no Campeonato Brasileiro de 2009:
ultimoreb_2009 <- brasileirao_rebaixados %>%
filter(brasileirao_rebaixados$points == 45)
kable(ultimoreb_2009)
| year | position | team | points | games | victories | draws | losses | goals_scored | goals_against | goals_difference | perc_points_won |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 | 17 | Coritiba | 45 | 38 | 12 | 9 | 17 | 48 | 60 | -12 | 39 |
A crença tradicional de que atingir 45 pontos é uma garantia de permanência na elite do futebol nacional é parcialmente corroborada pelos dados, mas não é uma regra infalível. Embora a meta de 45 pontos seja frequentemente citada como um valor seguro para evitar o rebaixamento, a análise mostra que, de fato, um time pode ser rebaixado mesmo com 45 pontos. Entre 2006 e 2019, o Coritiba foi um exemplo notável desse cenário, ao ser rebaixado com 45 pontos em 2009. Isso sugere que, enquanto 45 pontos pode ser uma meta razoável, não é uma garantia absoluta de segurança.
cor_gols_marcados <- cor(brasileirao$points, brasileirao$goals_scored)
cor_gols_sofridos <- cor(brasileirao$points, brasileirao$goals_against)
cor_vitorias <- cor(brasileirao$points, brasileirao$victories)
cor_derrotas <- cor(brasileirao$points, brasileirao$losses)
cor_empates <- cor(brasileirao$points, brasileirao$draws)
brasileirao <- brasileirao %>%
mutate(Rebaixado = ifelse(position > 16, "Sim", "Não"))
ggplot(brasileirao, aes(x = victories, y = points)) +
geom_jitter(aes(color = Rebaixado), size = 2) +
scale_color_manual(values = c("Sim" = "red", "Não" = "green")) + # Define as cores
labs(title = "Dispersão: Vitórias vs Pontos",
x = "Vitórias",
y = "Pontos") +
theme_minimal()
print(cor_vitorias)
## [1] 0.9780552
ggplot(brasileirao, aes(x = losses, y = points)) +
geom_jitter(aes(color = Rebaixado), size = 2) +
scale_color_manual(values = c("Sim" = "red", "Não" = "green")) + # Define as cores
labs(title = "Dispersão: Derrotas vs Pontos",
x = "Derrotas",
y = "Pontos") +
theme_minimal()
print(cor_derrotas)
## [1] -0.9182298
ggplot(brasileirao, aes(x = draws, y = points)) +
geom_jitter(aes(color = Rebaixado), size = 2) +
scale_color_manual(values = c("Sim" = "red", "Não" = "green")) + # Define as cores
labs(title = "Dispersão: Empates vs Pontos",
x = "Empates",
y = "Pontos") +
theme_minimal()
print(cor_empates)
## [1] -0.03068457
ggplot(brasileirao, aes(x = goals_scored, y = points)) +
geom_jitter(aes(color = Rebaixado), size = 2) +
scale_color_manual(values = c("Sim" = "red", "Não" = "green")) + # Define as cores
labs(title = "Dispersão: Gols Marcados vs Pontos",
x = "Gols Marcados",
y = "Pontos") +
theme_minimal()
print(cor_gols_marcados)
## [1] 0.7363492
ggplot(brasileirao, aes(x = goals_against, y = points)) +
geom_jitter(aes(color = Rebaixado), size = 2) +
scale_color_manual(values = c("Sim" = "red", "Não" = "green")) + # Define as cores
labs(title = "Dispersão: Gols Sofridos vs Pontos",
x = "Gols Sofridos",
y = "Pontos") +
theme_minimal()
print(cor_gols_sofridos)
## [1] -0.7186629
A análise identificou que os principais fatores que influenciam o rebaixamento são, em ordem de relevância: número de vitórias, derrotas, gols marcados e gols sofridos. O número de empates, embora relevante, não possui uma influência tão significativa quanto os outros fatores.
Para ilustrar, vejamos os times que terminaram o Campeonato Brasileiro de Futebol de 2014 com 8 empates:
campeonato_2014 <- brasileirao %>%
filter(draws == 8, year == 2014)
kable(campeonato_2014)
| year | position | team | points | games | victories | draws | losses | goals_scored | goals_against | goals_difference | perc_points_won | Rebaixado |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2014 | 1 | Cruzeiro | 80 | 38 | 24 | 8 | 6 | 67 | 38 | 29 | 70 | Não |
| 2014 | 9 | Santos | 53 | 38 | 15 | 8 | 15 | 42 | 35 | 7 | 46 | Não |
| 2014 | 12 | Goiás | 47 | 38 | 13 | 8 | 17 | 38 | 40 | –2 | 41 | Não |
| 2014 | 13 | Figueirense | 47 | 38 | 13 | 8 | 17 | 37 | 47 | –10 | 41 | Não |
| 2014 | 17 | Vitória | 38 | 38 | 10 | 8 | 20 | 37 | 54 | –17 | 33 | Sim |
Isso implica que, para evitar o rebaixamento, é mais crucial focar em melhorar o número de vitórias e reduzir as derrotas e gols sofridos, além de aumentar a quantidade de gols marcados.