Prevendo Resultados no Futebol - Parte 3

Introdução

Neste último post da série de Previsão de Resultados, vamos apresentar a Distribuição de Poisson. Desta vez, vamos fazer algo diferente: explicaremos o que é a Distribuição de Poisson e o passo a passo de como prever qual será o placar de uma partida.

A distribuição de Poisson

A distribuição de Poisson é uma distribuição de probabilidade discreta que expressa a probabilidade de ocorrência de um determinado número de eventos em um intervalo fixo de tempo ou espaço. Ele pressupõe que esses eventos ocorram com uma taxa média conhecida e independentemente do tempo decorrido desde o último evento.

A fórmula da distribuição de Poisson.

O lado esquerdo da fórmula da distribuição de Poisson, P(X = k), representa a probabilidade de ocorrência de exatamente k eventos em um intervalo fixo. Aqui, X é o número de eventos e k é o número específico no qual estamos interessados.

O numerador do lado direito, e λk, tem duas partes. λk mostra a probabilidade de ocorrência de k eventos com base na taxa média λ. O e é responsável pela aleatoriedade dos eventos, garantindo que a probabilidade diminua à medida que o número de eventos se desvia da taxa esperada.

O denominador do lado direito, k! ajusta a quantidade de maneiras pelas quais os eventos x podem ocorrer. A notação fatorial calcula o número de arranjos possíveis, garantindo que a probabilidade reflita o fato de que a ordem dos eventos não importa.

Como usar no futebol?

Antes de tudo, é necessário esclarecer uma coisa: Existem diversos modelos de previsão de gols com distribuição de poisson, mas nós vamos utilizar o mais simples, que utiliza apenas o histórico de partidas das duas equipes. Modelos mais complexos podem levar em conta outras variáveis, como qualidade do gramado, histórico de disputas entre as equipes, entre outros.

Para começar, precisamos decidir que jogos queremos prever: pra esse post vamos tentar prever o número de gols de um clássico Fla-Flu (com o Fluminense como Mandante) em 2023, utilizando os dados dos dois times da temporada 2022 do Brasileirão.

Preparando a tabela

Utilizamos os resultados de todas as partidas do Brasileirão 2022, extraídos do site FBREF. Os dados no site vem com diversas informações, mas só vamos usar o resultado de cada partida. Para realizar os passos seguintes, foi necessário separar os dados em “Mandante”, “Visitante”, “Gols do Mandante” e “Gols do Visitante”.

Calcular a Capacidade Ofensiva e Defensiva do Campeonato

Para prever o número de gols de um time, primeiro devemos calcular a Capacidade Ofensiva e a Capacidade Defensiva dos times do Brasileirão, baseando-se na última temporada.

A Capacidade Ofensiva é a média dos gols marcados por cada equipe, tanto em casa como fora. Ou seja, a conta é a seguinte:

  • Total de gols marcados em casa/número de jogos
  • Total de gols marcados fora/número de jogos


Na temporada 2022 do Brasileirão, houve 534 gols em casa e 371 fora. Divididos pelo número de jogos (380), temos a Média de Gols Marcados em Casa como 1,405 e a Média de Gols Marcados Fora de Casa como 0,976.

Já a Capacidade Defensiva é a média dos gols sofridos por cada equipe, ou seja, o inverso da Capacidade Ofensiva, já que o número de gols marcados pelo time da casa é igual ao número de gols sofridos pela equipe visitante. Então a Média de Gols Sofridos em Casa é 0,976, e a Média de Gols Sofridos Fora de Casa é 1,405.

Agora nós podemos utilizar essas médias da liga para calcular as capacidades dos times que desejamos estudar.

Prever os gols do Fluminense

Para calcular a Capacidade Ofensiva do Fluminense, precisamos pegar o número de gols marcados em Casa pelo Flu na temporada 2022 (39) e dividir pelo número de jogos em Casa (19) = 2,052. Então pegamos esse valor e dividimos pela Média de Gols Marcados em Casa na liga (1,405), obtendo uma Capacidade Ofensiva de 1,460.

Agora precisamos calcular a Capacidade Defensiva do Flamengo, para assim prever o número de gols do Fluminense. Para isso, pegamos o número de gols sofridos Fora de Casa pelo Flamengo (24) e dividimos isso pelo número de jogos fora (19) = 1,263. Então dividimos esse valor pela Média de Gols Sofridos Fora de Casa na liga (1,405), obtendo uma Capacidade Defensiva de 0,898.

Agora podemos fazer o seguinte cálculo para chegar no número provável de gols que o Fluminense marcará: Multiplicamos a Capacidade Ofensiva do Fluminense (1,460) pela Capacidade Defensiva do Flamengo (0,898) e a Média de Gols marcados em Casa (1,405).

1.460 × 0.898 × 1.405 = 1.845

Prever os gols do Flamengo

Para calcular o número de gols que o Flamengo pode marcar, é só utilizar as fórmulas acima, mas substituindo o número médio de gols marcados em casa pelo número médio de gols marcados fora de casa.

  • Capacidade Ofensiva do Fla: (23/19) / 0.976 = 1.239
  • Capacidade Defensiva do Flu: (20/19) / 0.976 = 1.078


Então, multiplicamos esses valores com a Média de Gols marcados Fora de Casa:

1.239 × 1.078 × 0.976 = 1.305

Utilizar a Distribuição de Poisson

Como nenhum jogo termina de 1,845 a 1,305, agora nós podemos usar esses números junto com a Distribuição de Poisson para distribuir 100% da probabilidade em um intervalo de gols marcados para cada equipe. Nós queremos prever a chance de cada time marcar um certo número de gols na partida (no nosso caso, de 0 a 5) -o número de ocorrências do evento-, e pra isso utilizaremos a probabilidade de gols que calculamos (1,845 para o Flu e 1,305 para o Fla) -as ocorrências esperadas.

Podemos fazer isso facilmente com Python utilizando o comando:

1
poisson.pmf(NumOcorrencias, OcorrenciasEsp)


Calculando isso 6 vezes para cada time, chegamos no seguinte vetor:
gols Fluminense Flamengo
0 gols 15.80% 27.11%
1 gols 29.15% 35.39%
2 gols 26.90% 23.09%
3 gols 16.54% 10.05%
4 gols 7.63% 3.28%
5 gols 2.82% 0.86%
Uma vez que esses resultados são independentes, o resultado esperado da partida seria 1x1, já que a maior possibilidade para os dois times é marcar um gol. Multiplicando as probabilidades de cada time marcar um gol, conseguimos a probabilidade de um resultado 1x1 = 0,1031.

0.2915 × 0.3539 = 0.1031

Utilizando o comando np.outer com esses dois vetores, conseguimos a probabilidade de cada combinação de resultado para a partida.

Somando as probabilidades acima da linha diagonal (Fluminense ganha) chegamos na probabilidade do Fluminense vencer: 48,96%
Somando as probabilidades da diagonal chegamos a chance de um empate: 22,75%
Somando as probabilidades abaixo da linha diagonal (Flamengo ganha) chegamos na probabilidade do Flamengo vencer: 26,91%

Conclusion

Tivemos 3 empates, 2 vitórias do Flamengo e 1 vitória do Fluminense. Em jogos que o Fluminense foi mandante, tivemos dois empates e uma vitória do Fluminense.

A partir desse resultado podemos comparar com o primeiro confronto dos times no ano de 2023, que foi realizado na última rodada da taça guanabara em que o placar foi 2x1 para o time do Fluminense. O resultado do jogo é o segundo mais provável segundo o nosso modelo, o que indica que o jogo foi dentro da tendência esperada pelo desempenho ofensivo e defensivo dos times na temporada anterior.

Além disso, não foram utilizados os dados dos jogos anteriores do Campeonato Carioca de 2023, que geram valores de capacidade ofensiva e defensiva mais atualizados e consequentemente uma nova distribuição de probabilidades.

Com essa análise encerramos nossa série de posts, na qual mostramos alguns modelos de previsão aplicados ao futebol e como podemos usá-los para entender melhor o esporte.



Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Predicting Match Results in Football - Part 3
  • Prevendo Resultados no Futebol - Parte 2
  • Predicting Match Results in Football - Part 2
  • Predicting Match Results in Football - Part 1
  • São Garrafa Niterói 2024 – Analyzing 10 different runners