Na data em que esse artigo está sendo escrito, o Brasil já foi eliminado da copa do mundo do Qatar, para a tristeza de muitos brasileiros. Então, embora o Brasil fosse o favorito para vencer a competição, a realidade é que a Argentina está na final e irá jogar contra a França ou Marrocos. Nesse artigo tentaremos prever o vencedor da copa do Qatar utilizando estatística e, claro, python.
Essa copa do mundo fez muita gente perder dinheiro com apostas. Pois muitas seleções historicamente fortes foram eliminadas logo na fase de grupos. Exemplos dessas são Bélgica e Alemanha. Além disso, houveram derrotas muito improváveis, como a eliminação da Espanha pelo Marrocos nas oitavas de final, a eliminação de Portugal pelo Marrocos nas quarta de final a derrota da Argentina pela Arábia Saudita na fase de grupos.
Com base nisso, eu proponho uma experiência. Vamos tentar prever o vencedor dessa copa do mundo ignorando o histórico das seleções. Afinal, se o histórico importasse tanto assim, o Brasil não teria perdido para os Camarões e para a Croácia. Como diriam por aí, o futebol é inexplicável.
Fazer isso pode desconsiderar fatores muito importantes, e levar a erros grotescos. Mas como as previsões nessa copa do mundo erraram muito, vale sair da caixinha e ver o resultado, afinal, se a previsão estiver errada, iremos aprender que o histórico do país em copas era muito relevante e não deve ser desconsiderado. Se a previsão estiver certa, teremos uma bela história para contar para nossos netos.
Faremos a previsão com base nos jogos dessa copa mesmo. Vamos tentar avaliar as seleções que estão se saindo melhor nessa edição. A métrica de desempenho utilizada serão as médias de gols feitos e sofridos, nessa copa.
Prevendo vencedor da copa do Qatar: Modelo
Iremos utilizar a distribuição de Poisson para estimar a probabilidade de ocorrer uma quantidade x de gols feitos e sofridos de uma seleção em um jogo. A distribuição de Poisson tem a seguinte fórmula:
Nesse caso, X é a quantidade de gols marcados ou sofridos, P(X) é a probabilidade de uma seleção fazer ou sofrer X gols em um jogo,e lambda(esse símbolo) é a média de gols marcados/sofridos. Já o numero ‘e’ é a constante de Euler.
Prevendo vencedor da copa do Qatar: Código
Primeiro de tudo, iremos importar a biblioteca numpy, para operar com arrays, e definir a média de gols marcados e sofridos das seleções que ainda estão na competição.
import numpy as np
#definindo media de gols das seleçoes [media de gols pro, media de gols contra]
mediaArgentina = np.array([12/6, 4/6])
mediaCroacia = np.array([6/6, 6/6])
mediaMarrocos = np.array([5/5, 1/5])
mediaFranca = np.array([11/5, 5/5])
Após isso, iremos usar a função poisson para calcular as probabilidades do nosso espaço amostral. Nosso espaço será as possibilidades das seleções marcarem e sofrerem até 10 gols, então vamos calcular a probabilidade de cada caso.
Exemplo, vamos supor que estaremos calculando a probabilidade do placar ser 3 para a holanda e 2 para a argentina, e o valor dessa probabilidade foi igual a 0,1, então iremos somar 0,1 a uma variável scoreHolanda, pois nesse caso a holanda que ganhou. Depois de fazer isso para todos os casos, iremos decidir pelo maior score quem venceu a partida.
#%% importando modelo poisson
from scipy.stats import poisson
#funçao recebe arrays de medias de gols e retona o score de cada um
def vencedor(time1, time2):
#definindo score de cada time
prob1, prob2, probEm = 0,0, 0
#vamos analisar todos os casos, onde cada time pode fazer ate 10 gols
for i in range(0,10): #gols do time 1
for j in range(0,10): # gols do time 2
# p e a probabilidade do placar ser i x j
p = poisson.pmf(i,time1[0]*time2[1]) * poisson.pmf(j,time1[1]*time2[0])
if i>j:#time 1 ganhou
prob1+= p
if i<j: #time 2 ganhou
prob2+=p
if i==j:
probEm+=p
return prob1, prob2, probEm
Agora, basta tentar prever. Prevendo os vencedores dos próximos jogos, temos:
Jogo | Time 1 | Time 2 | Vencedor |
semifinal | Marrocos | França | Marrocos |
Terceiro Lugar | França | Croácia | França |
Final | Marrocos | Argentina | Marrocos |
Prevendo vencedor da copa do Qatar: Discussão dos resultados
Então, o nosso modelo diz que o Marrocos será o campeão da copa do mundo. Falar isso chega a ser até engraçado, mas devemos admitir que essa seleção já é uma campeã, afinal, é o primeiro país africano a chegar as semifinais de uma copa do mundo.
Claro que é improvável que o Marrocos seja o vencedor da copa do mundo. Esse resultado é devido a boa campanha que a seleção vem demonstrando nessa edição. O que esse resultado realmente nos diz é: Se essas seleções continuarem obtendo os mesmos resultados nas partidas, o Marrocos sairia vitorioso.
Isso porque ele só levou, até agora, um gol, em cinco partidas. A própria França, que é a favorita, sofreu cinco gols por partida, nas cinco partidas que jogou. Ou seja, nosso algoritmo levou em consideração que o Marrocos sofreu cinco vezes menos gols que a França. Por isso esse resultado.
Então, valeu a pena fazer esse experimento, mas ficamos com a lição de que devemos sempre procurar a maior quantidade de variáveis relevantes possíveis para fazer previsões e classificações. Confesso que estou ansioso para saber o real vencedor dessa edição e fazer a comparação com esses resultados. Até mais!
Referências
https://ge.globo.com/futebol/copa-do-mundo/2022/
Copa do mundo ícones criados por Guillem Rodriguez – Flaticon