Avaliando nosso modelo de Expected Goals.

 “All models are wrong, but some are more useful than others.”
– George E.P. Box

 

Antes de usar um modelo para fazer previsão/inferência, nós devemos checar se o modelo assumido está corretamente especificado. Na prática isso significa verificar se os dados não estão em conflito com as hipóteses feitas na construção do modelo.

Vamos verificar se o modelo de Expected Goals (xG) que usamos aqui no Soma Zero FC é um modelo razoável (bom?) para avaliar probabilidades de gol. Usei a palavra razoável, pois há diversos modelos sendo estimados por analistas e todos eles, inclusive o nosso, são incompletos e imperfeitos; no sentido de simplificação do mundo real. Mesmo assim, a literatura estatística nos dá ferramentas para avaliar o quão bem esses modelos se saem na prática. Há vários analistas estimando xG models mundo à fora. Por exemplo, veja os trabalhos de: Nils Mackay, do Mackay Analytics; o pessoal da Opta; o pessoal do Cartilage Free Capitain, o Five Thirty Eight, entre outros.

Modelos de xG descrevem a conversão de finalizações em gols. O modelo que usamos é um modelo Logit onde a variável dependente é a finalização. Essa variável é binária; toma valor 1 para finalização convertida em gol e 0, caso contrário. Podemos pensar na regressão logística como um caso especial de uma regressão linear – aquela regressão geralmente estimada por mínimos quadrados ordinários (MQO) -, quando a variável dependente é binária, e quando usamos os logaritmos das odds como variáveis dependentes. Entenda odds exatamente como você interpreta aquelas proporções nos sites de aposta. Colocando de maneira simples, o modelo prediz a probabilidade de ocorrência de um evento ajustando os dados a uma função logística. A equação do modelo segue a seguinte especificação:

logit
Especificação da equação logística. Essa é a especificação que utilizamos para estimar os parâmetros do nosso modelo de Expected Goals (xG).

A variável dependente não precisa ser normalmente distribuída, o que se torna uma vantagem; sabemos que os gols seguem uma distribuição Poisson. Se isso é novidade para você, vá correndo até a livraria mais próxima e adquira já um exemplar do livro “Os números do jogo”, de Chris Anderson e David Sally. Ou apenas dê um google com as palavras “gols” e “Poisson”. No nosso modelo, o vetor de variáveis explicativas, X, é composto por duas variáveis contínuas: distância do chute ao gol e ângulo do chute; e mais onze variáveis binárias: contra-ataque, lateral arremessado direto na área, pênalti, falta, escanteio, finalização com cabeça/pé, finalização gerada por um lançamento, finalização gerada por um cruzamento, finalização gerada de jogada pessoal, Big Chance (uma variável gerada pela Opta para classificar boas chances de gol), e, finalmente, finalização gerada por assistência intencional.

A base de dados que utilizamos para estima esse modelo é composta de mais de 1,7 mil jogos do Brasileirão. Esses jogos geram mais de 2,5 milhões de eventos, dos quais 42 mil são finalizações ao gol. Utilizando mais de 42 mil finalizações, os parâmetros do modelo são estimados pela maximização da verossimilhança, que gera odds referente às variáveis explicativas. Essas odds são escolhidas de forma a maximizar a probabilidade de gerar amostra observada. Essa é a essência da maximização da verossimilhança. Utilizamos esse método de estimação por um único motivo: não é possível aplicar MQO no modelo Logit. Eu sei, é uma pena, nós também adoramos o MQO.

Enfim, todos os parâmetros estimados são estatisticamente significativos a 1% de nível de significância. Depois de estimados os parâmetros do modelo, nós estamos prontos para avaliar a probabilidade de gol de cada finalização do campeonato brasileiro. Sim. Mas espere, precisamos ainda avaliar o quão bem esse modelo descreve os dados. Esse post é para isso.

A primeira avaliação que fazemos é comparar a Log Likelihood da especificação feita acima, com diversas outras especificações possíveis. Diferentes especificações significam diferentes variáveis no lado direito da equação. Nós testamos várias outras variáveis, sendo que a maior Log Likelihood encontrada foi a do modelo proposto, com as já descrita treze variáveis explicativas. Quanto maior a Log Likelihood, é mais provável que os dados tenham sido gerados pelos parâmetros do modelo estimado. O modelo com as treze variáveis, foi o que gerou a menor Log Likelihhod dentro de várias especificações.

Testamos a inclusão de várias outras variáveis – assim com a exclusão de algumas que estão na especificação atual. Por exemplo, testamos o número de toques na bola antes da finalização, o tempo – em segundos – que o time atacante ficou com a bola antes da finalização, entre outras. Elas foram descartadas pois apresentaram coeficientes sem significância estatística e diminuíram a Log Likelihhod do modelo. E para quem gosta de critérios de informação na seleção de modelos, a especificação acima apresentou o menor AIC.

O R^2 é uma estatística que nos dá a proporção da variância na variável dependente que é explicada pelas explanatórias. Contudo, diferentemente do caso de regressões lineares estimadas por MQO, o R^2 não é uma boa medida de ajuste do modelo, quando se trata de um Logit. Muitos modelos de xG têm sido avaliados usando R^2, mas essa não é uma boa ideia. Por isso, aqui nós vamos avaliar o modelo pelo pseudo-R^2 proposto por McFadden. Existem vários pseudo-R^2 disponíveis para avaliar o modelo Logit. Mas nós vamos usar a estatística proposta por McFadden por que ele lê este blog, e também, queremos dar crédito à sua pesquisa. Mentira, é só por que o pseudo-R^2 de McFadden é o mais popular.

O nosso modelo apresentou um pseudo-R^2 de 0,25. Várias outras especificações foram testadas, e nenhuma gerou um pseudo-R^2 tão alto. Antes que os críticos de plantão levantem suas vozes para difamar uma regressão com tão baixo R^2, eu lhes digo o que o próprio McFadden escreveu sobre sua estatística:

“While the R2 index is a more familiar concept to planner who are experienced in OLS, it is not as well behaved as the rho-squared measure, for ML estimation. Those unfamiliar with rho-squared should be forewarned that its values tend to be considerably lower than those of the R2 index…For example, values of 0.2 to 0.4 for rho-squared represent EXCELLENT fit.”

Quantitative Methods for Analyzing Travel Behaviour on Individuals: Some Recent Developments” (1977), Chapter 15. McFadden.

De fato, 0,25 é um número alto para os modelos de xG, veja por exemplo os testes feitos por Garry Gelade em seu site.

Analisamos também o Receiver operating characteristics (ROC) curve do modelo estimado. É um gráfico que relaciona a “true positive rate” (percentual de vezes em que o modelo previu um gol, e o gol realmente ocorreu) com a “false positive rate” (percentual de vezes em que o modelo previu um gol, mas a safada da bola não entrou). A ideia é que se o modelo prevê muito bem a ocorrência de gols – dado um certo threshold, que eu não vou explicar aqui -, então a ROC curve deveria ficar bem acima da reta de 45 graus. Eu levaria vários parágrafos entediantes para explicar essa estatística (como se este post já não estivesse), mas para simplificar, abaixo vai um gráfico explicativo, com bastante apelo intuitivo. Se não estiver satisfeito, apenas dê um google.

ROC_explicacao
Exemple de ROC curve para avaliar modelos. A área abaixo da curva nos dá uma medida de ajuste do modelo proposto.

A reta de 45 graus (azul), representa um modelo completamente não informativo. Um modelo com ROC curve como o da reta azul, acertaria os gols tanto quanto o lançamento de uma moeda (essa frase está estatisticamente errada, mas foi só para dar um exemplo). A reta de 45 graus é a total aleatoriedade. Quando a ROC curve vai se distanciando dos 45 graus, o modelo prevê cada vez melhor. O resultado para o nosso modelo de xG foi o seguinte:

ROC_model
ROC curve para o modelo de Expected Goals do Soma Zero FC. Os eixos (x,y) vão de 0 a 1. A AUC é a área abaixo da ROC curve (curva preta), e representa a habilidade do modelo na previsão dos resultados. Quanto AUC mais próximo de 1, melhor é a previsão do modelo. O gráfico mostra que nosso modelo de xG apresenta AUC=0,83.

O AUC, que nada mais é do que a área abaixo COR curve (curva preta), é de 0,83. Se o modelo fosse capaz de prever os gols perfeitamente, esse número seria 1. Novamente, o nosso modelo traz um bom AUC; os modelos de xG geralmente apresentam AUC entre 0,78 e 0,83. Volte lá na página do Garry Gelade e você verá. O nosso modelo está no lower bound. Isso indica um bom ajuste do modelo aos dados.

Outra forma de analisar o modelo é olhar para o a relação entre os resíduos e os valores previstos. Espera-se que na média, os resíduos sejam zero e que seu comportamento parece o mais aleatório possível (não demonstrar qualquer padrão). Como estamos trabalhando com um modelo Logit, olhamos para o bin dos resíduos baseado nos valores previstos. É o que chamamos de “Binned residual plot“.

residuos_model
Binned residual plt do modelo xG. Podemos ver que, na maioria dos casos, os resíduos encontram-se dentro do intervalo de confiança. Pelo menos 95% dos pontos estão dentro do intervalo.

Podemos ver que, na maioria dos casos, os resíduos encontram-se dentro do intervalo de confiança. Pelo menos 95% dos pontos estão dentro do intervalo. Isso é o que esperaríamos de um modelo bem especificado. Embora os ponto estejam agrupados, em sua maioria, entre 0 e 0,2 de Expected Value, isso é natural em um modelo que tenta prever gols. Os gols são algo bastante raro no futebol. Uma partida possui, em média, cerca de 1500 eventos; como passes, chutes, faltas, tomadas de bola, etc. Dentre esses 1500 eventos, em média, 1 ou dois deles são gols. Às vezes não há gols, várias partidas terminam em zero a zero. Fica claro que o gol é algo muito raro. O jogo precisa de cerca de 1500 ações para gerar um ou dois gols.  É difícil de “achar” o gol, os jogadores buscam o gol o tempo todo, mas ele é muito raro. Não foi à toa que Chris Anderson escreveu que “o gol é a donzela do futebol”. Portanto, é natural que a maioria das previsões do modelo fiquem próximas de zero, por que o gol é um evento muito raro.

Por último, utilizamos a maneira mais simples (e não necessariamente a mais correta, no caso de um Logit) de averiguar o ajuste do modelo: o  (RMSE), ou seja, a raiz quadrada da média da soma dos resíduos ao quadrado.

rmse

Os resíduos do modelo são a diferença entre a probabilidade de gol e a ocorrência ou não de gol em cada finalização. Nós elevamos isso ao quadrado e tiramos a média para todas as mais de 42 mil finalizações. Depois disso, só tiramos a raiz quadrada. Quanto menos o RMSE, melhor; ou seja, o modelo comete menos erros. Nosso modelo apresentou um RMSE = 0,25. Também é um resultado muito bom. Os modelos xG geralmente apresentam RMSE variando entre 0,25 a 0,3. Volte lá no site do Garry Gelade e confira.

Todos estes testes indicam que o modelo do Soma Zero FC é um modelo muito bom em nível preditivo.

Existe como complicar o modelo, testar mais variáveis explicativas, etc. Porém, a especificação atual que utilizamos aqui no blog, traz um resultado preditivo  muito bom comparado aos modelo concorrentes. Não sei se o custo de complicar ainda mais o modelo trará muitos benefícios preditivos.

Termino com uma frase de Garry Gelade que expõe de maneira clara minha opinião:

“Perhaps there is a substantial and irreducible degree of noise in goal scoring and we are in a region of diminishing returns where we can tinker a bit at the edges of our models without seeing much increase in fit”.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s