O Campeonato Brasileiro é a principal competição de futebol do Brasil e foi considerada, por diversos anos, uma das mais importantes do mundo. Neste relatório, afim de encontrar questões interessantes sobre os gols deste torneio, foram utilizadas técnicas estatísticas para analisar os dados disponíveis neste dataset, referentes a uma amostra dos gols marcados no Campeonato Brasileiro de 2013.
Os dados utilizados consistem em 973 observações de gols ocorridos no Campeonato Brasileiro de 2013 e possui as seguintes variáveis:
Antes de iniciar as análises, é necessario observar o formato geral dos dados e prepará-lo para os testes. Seguem abaixo uma breve visualização dos dados a partir do output da função “summary”.
library(dplyr, quietly = TRUE)
library(ggplot2, quietly = TRUE)
Sys.setlocale(locale = "pt_PT.UTF-8") #caso o enconding default não funcione
## [1] "pt_PT.UTF-8/pt_PT.UTF-8/pt_PT.UTF-8/C/pt_PT.UTF-8/en_IE.UTF-8"
brasileirao <- read.csv("brasileirao.txt", header = TRUE, sep = ";")
brasileirao <- filter(brasileirao, tempo_gol != "None")
brasileirao$tempo_gol <- as.integer(brasileirao$tempo_gol)
summary(brasileirao)
## id_jogo time_a time_b tempo_gol
## Min. : 1.00 Cruzeiro : 63 Vasco da Gama: 62 Min. : 1.00
## 1st Qu.: 90.75 Atlético/MG : 56 Criciúma : 61 1st Qu.:25.00
## Median :183.50 Atlético/PR : 56 Vitória : 60 Median :48.00
## Mean :187.02 Internacional: 54 Atlético/PR : 58 Mean :48.08
## 3rd Qu.:280.25 Fluminense : 52 Botafogo : 52 3rd Qu.:71.00
## Max. :380.00 Vitória : 52 Náutico : 52 Max. :90.00
## (Other) :603 (Other) :591
## time_gol placar_time_a placar_time_b
## Cruzeiro : 77 Min. :0.00 Min. :0.0000
## Atlético/PR : 65 1st Qu.:1.00 1st Qu.:0.0000
## Vitória : 59 Median :1.00 Median :1.0000
## Botafogo : 55 Mean :1.35 Mean :0.9103
## Internacional: 51 3rd Qu.:2.00 3rd Qu.:1.0000
## Santos : 51 Max. :6.00 Max. :5.0000
## (Other) :578
Dando início às análises, façamos um teste utilizando intervalos de confiança para investigar se há diferença significativa entre o momento (em minutos) em que ocorre gol no primeiro tempo e no segundo. Seguem abaixo o código e o gráficos resultantes.
#filtra os gols do primeiro e segundo tempo.
gols_primeiro_tempo <- brasileirao %>% filter(tempo_gol <= 45)
gols_segundo_tempo <- brasileirao %>% filter(tempo_gol > 45)
#subtraindo os primeiros 45 minutos
gols_segundo_tempo$tempo_gol <- gols_segundo_tempo$tempo_gol - 45
#Calculando os intervalos de confiança para o primeiro e segundo tempo.
ic_gols_primeiro_tempo <- t.test(gols_primeiro_tempo$tempo_gol, alternative = "two.sided", conf.int=TRUE)
ic_gols_segundo_tempo <- t.test(gols_segundo_tempo$tempo_gol, alternative = "two.sided", conf.int=TRUE)
ic_primeiro_tempo <- c(ic_gols_primeiro_tempo$conf.int[1], ic_gols_primeiro_tempo$conf.int[2])
ic_segundo_tempo <- c(ic_gols_segundo_tempo$conf.int[1], ic_gols_segundo_tempo$conf.int[2])
primeiro_segundo <- rbind(mutate(gols_primeiro_tempo, tempo="primeiro"),
mutate(gols_segundo_tempo, tempo="segundo"))
toPlot <- primeiro_segundo %>% group_by(tempo) %>% summarise(media = mean(tempo_gol, na.rm=TRUE))
toPlot <- mutate(toPlot, lower = ifelse(toPlot$tempo == "primeiro",ic_primeiro_tempo[1], ic_segundo_tempo[1]))
toPlot <- mutate(toPlot, upper = ifelse(toPlot$tempo == "primeiro", ic_primeiro_tempo[2], ic_segundo_tempo[2]))
toPlot
## Source: local data frame [2 x 4]
##
## tempo media lower upper
## 1 primeiro 23.59361 22.39325 24.79397
## 2 segundo 24.61245 23.39271 25.83219
ggplot(data=toPlot, aes(x= tempo, y=media, colour = tempo)) + geom_point() + geom_errorbar(aes(ymin=lower, ymax=upper), width=.1) + theme_bw()
A partir do resultado acima, pode-se concluir que não há indícios da existência de uma diferença significativa entre o tempo em que ocorrem os gols no primeiro e segundo tempo, visto que os gráficos dos intervalos de confiança se sobrepõem.
Em diversos campeonatos de futebol que possuem fases eliminatórias, é comum utilizar a chamada “regra do gol fora de casa” como método de desempate dos jogos. Esta regra diz que, se o resultado somado dos placares dos dois jogos der empate, vence o confronto o time que tiver marcado o maior número de gols fora de casa, ou seja, jogando como time visitante.
Pensando nisso, façamos uma investigação para determinar se existe alguma diferença entre a média de gols dos clubes jogando em casa e fora de casa, com o intuito de descobrir se este fato realmente pode influenciar na vitória de um time, utilizando intervalos de confiança. Seguem abaixo os gráficos obtidos.
#seleciona o instante que ocorre o ultimo gol de cada partida
jogos_resultados <- brasileirao %>% group_by(id_jogo) %>% filter(tempo_gol == max(tempo_gol))
summary(jogos_resultados)
## id_jogo time_a time_b tempo_gol
## Min. : 1.0 Atlético/PR: 19 Botafogo : 19 Min. : 1.00
## 1st Qu.: 94.5 Coritiba : 18 Criciúma : 19 1st Qu.:51.50
## Median :191.0 Criciúma : 18 Fluminense: 19 Median :73.00
## Mean :189.2 Cruzeiro : 18 Vitória : 19 Mean :66.05
## 3rd Qu.:284.5 Flamengo : 18 Cruzeiro : 18 3rd Qu.:84.50
## Max. :380.0 Fluminense : 18 Goiás : 18 Max. :90.00
## (Other) :234 (Other) :231
## time_gol placar_time_a placar_time_b
## Cruzeiro : 25 Min. :0.000 Min. :0.000
## Atlético/PR: 23 1st Qu.:1.000 1st Qu.:0.000
## Fluminense : 21 Median :1.000 Median :1.000
## Santos : 21 Mean :1.531 Mean :1.029
## Goiás : 20 3rd Qu.:2.000 3rd Qu.:2.000
## Grêmio : 20 Max. :6.000 Max. :5.000
## (Other) :213
ic_placar_time_casa <- t.test(jogos_resultados$placar_time_a, alternative = "two.sided", conf.int=TRUE)
ic_placar_time_visitante <- t.test(jogos_resultados$placar_time_b, alternative = "two.sided", conf.int=TRUE)
ic_casa <- data.frame(time="casa",lower=ic_placar_time_casa$conf.int[1], mean=mean(jogos_resultados$placar_time_a, na.rm=TRUE) ,upper=ic_placar_time_casa$conf.int[2])
ic_visitante <- data.frame(time="visitante",lower=ic_placar_time_visitante$conf.int[1], mean=mean(jogos_resultados$placar_time_b, na.rm=TRUE) ,upper=ic_placar_time_visitante$conf.int[2])
toPlot2 <- rbind(ic_casa, ic_visitante)
ggplot(data=toPlot2, aes(x=time, y=mean, colour=time)) + geom_point() +
geom_errorbar(aes(ymin=lower, ymax=upper), width=.1) + theme_bw()
A partir dos gráficos acima, é possivel concluir que EXISTE diferença significativa entre as médias de gols de clubes jogando em casa e fora de casa, visto que não houve sobreposição dos intervalos de confiança obtidos.
Jogos entre Vasco e Flamengo sao clássicos do futebol carioca e carregam o peso da grande rivalidade entre os times. Motivados por isso, façamos uma análise para determinar se existe diferença entre a média de gols marcados por partida entre Vasco e Flamengo, utilizando intervalos de confiança. Seguem abaixo os resultados obtidos.
#filtra os resultados dos times
jogos_flamengo <- jogos_resultados %>% filter(time_a == "Flamengo" || time_b == "Flamengo")
jogos_vasco <- jogos_resultados %>% filter(time_a == "Vasco da Gama" || time_b == "Vasco da Gama")
#pega os gols que cada time marcou em suas respectivas partidas
gols_flamengo <- jogos_flamengo %>% group_by(id_jogo) %>% summarise(gols = ifelse(time_a == "Flamengo", placar_time_a, placar_time_b))
gols_vasco <- jogos_vasco %>% group_by(id_jogo) %>% summarise(gols = ifelse(time_a == "Vasco da Gama",
placar_time_a, placar_time_b))
#calcula o IC dos times
ic_gols_flamengo <- t.test(gols_flamengo$gols, alternative="two.sided", conf.int = TRUE)
ic_gols_vasco <- t.test(gols_vasco$gols, alternative="two.sided", conf.int = TRUE)
ic_flamengo <- data.frame(time="flamengo", lower=ic_gols_flamengo$conf.int[1], mean=mean(gols_flamengo$gols, na.rm=TRUE), upper=ic_gols_flamengo$conf.int[2])
ic_vasco <- data.frame(time="Vasco da Gama", lower=ic_gols_vasco$conf.int[1], mean=mean(gols_vasco$gols, na.rm = TRUE), upper=ic_gols_vasco$conf.int[2])
ics_cariocas <- rbind(ic_flamengo, ic_vasco)
ggplot(data=ics_cariocas, aes(x=time, y=mean, colour=time)) + geom_point() +
geom_errorbar(aes(ymin=lower, ymax=upper), width=.1) + theme_bw()
A partir dos gráficos obtidos, pode-se concluir que NÃO existe diferença significativa entre a média de gols desses clubes nas partidas entre eles, visto que houve sobreposição entre os intervalos de confiança.
Uma curiosidade sobre esses jogos, é que o Flamengo apresenta uma maior variação no número de gols por partida do que o Vasco. Isso pode ser observado através do tamanho do gráfico de intervalo de confiança, sendo o gráfico do Flamengo mais aberto. Observe os histogramas abaixo, referentes aos gols por partida de Flamengo e Vasco, respectivamente, para uma visualização mais detalhada.
ggplot(data=gols_flamengo, aes(x=factor(gols))) + geom_histogram(binwidth = 0.5) + theme_bw()
ggplot(data=gols_vasco, aes(x=factor(gols))) + geom_histogram(binwidth = 0.5) + theme_bw()
Como esperado, a partir dos histogramas, é possível observar a maior variação de gols por partida do Flamengo, tendo o número de gols por partida variando de 0 a 4, enquanto o Vasco varia apenas de 0 a 3.