segunda-feira, 7 de novembro de 2011

Previsões Brasileirão 2011 - Baseado em quê são calculadas as probabilidades de cada equipe

Continuando a série de perguntas e respostas, segue a resposta a mais uma das perguntas. Caso a resposta não tenha ficado suficientemente clara, gostaria do retorno de vocês para que a mesma fique mais completa, apontando os trechos onde se carece de mais explicação.

P: Baseado em quê são calculadas as probabilidades de cada equipe

R: Esta pergunta não possui uma resposta única, principalmente porque pessoas pensam de maneira diferente, vendo o problema de maneiras diferentes. Via de regra, mesmo pensando de maneiras diferentes. Hoje temos sites como o Chance de Gol, o departamento de Matemática da UFMG, um grupo da UFSCar, citando apenas 3 dos muitos que fazem trabalhos interessantes em probabilidades no esporte. Eles usam idéias muitas vezes diferentes, mas que chegam a resultados bastante próximos.

Mas via de regra, eles possuem uma coisa em comum: As probabilidades de vitória, empate e derrota. Uma partida de futebol não é um lançamento de uma moeda, tão pouco o lançamento de dados.

Se perguntarmos a 10 pessoas com conhecimentos variados de futebol, sobre qual será o resultado, por exemplo de Figueirense x Atlético/MG, que será realizado no próximo 12/11/2011 em Florianópolis, encontraremos as mais diversas opiniões. o Site chute certo (http://chutecerto.globo.com/palpites/estatistica/jogo/650) mostrava as 19:29 de hoje (6 de novembro), 65,7% para figueirense, 22,2% para empate e 12,1%  para Atlético-MG. São resultados factíveis? não sei. Mas são uma estimativa para um dos 50 jogos restantes.

Cada grupo ou site que divulga as probabilidades os faz baseado em algo que acreditam ser a melhor maneira de se estimar o resultado das partidas. Com certeza o fizeram por crer ser a melhor maneira. No caso dos cálculos feitos nesta série de explicações, optou-se por utilizar como critério de desempenho, o comportamento de cada uma das equipes nos últimos 10 jogos, baseado nos gols feitos e sofridos.

Para este objetivo, foi construída uma função no software estatístico R que produz os seguintes resultados quando executada com os dados da Série A de 2011 atualizados até 6 de Novembro de 2011:


> calculateMean(serie.A.2011)
          Equipe    mGP.m     mGC.m     mGP.v    mGC.v      mGP      mGC
1     América/MG 1.705882 1.4705882 0.8750000 2.062500 1.303030 1.757576
2    Atlético/GO 1.250000 0.7500000 1.2941176 1.647059 1.272727 1.212121
3    Atlético/MG 1.470588 1.1764706 1.0000000 1.812500 1.242424 1.484848
4    Atlético/PR 1.235294 1.0588235 0.7500000 2.000000 1.000000 1.515152
5           Avaí 1.470588 1.7647059 1.1875000 2.437500 1.333333 2.090909
6          Bahia 1.411765 1.1764706 0.9375000 1.500000 1.181818 1.333333
7       Botafogo 2.058824 0.9411765 0.8750000 1.375000 1.484848 1.151515
8          Ceará 1.687500 1.1875000 0.7058824 2.117647 1.181818 1.666667
9    Corinthians 1.750000 1.0625000 1.1176471 1.000000 1.424242 1.030303
10      Coritiba 2.250000 0.8125000 0.9411765 1.470588 1.575758 1.151515
11      Cruzeiro 1.437500 1.3125000 0.8823529 1.529412 1.151515 1.424242
12   Figueirense 1.312500 0.8750000 1.2941176 1.411765 1.303030 1.151515
13      Flamengo 1.705882 1.0588235 1.7500000 1.625000 1.727273 1.333333
14    Fluminense 1.812500 1.0000000 1.1176471 1.529412 1.454545 1.272727
15        Grêmio 1.750000 1.0000000 0.7058824 1.647059 1.212121 1.333333
16 Internacional 1.882353 1.3529412 1.3125000 1.062500 1.606061 1.212121
17     Palmeiras 1.352941 0.8823529 0.8750000 1.312500 1.121212 1.090909
18        Santos 1.705882 1.0588235 1.2500000 1.750000 1.484848 1.393939
19     São Paulo 1.375000 1.0000000 1.5294118 1.529412 1.454545 1.272727
20         Vasco 1.687500 0.6875000 1.2941176 1.529412 1.484848 1.121212


mGP = Média de Gols feitos (.m = mandante, .v = visitante)
mGC = Média de Gols sofridos (.m = mandante, .v = visitante)


Esta função foi codificada da seguinte forma:

calculateMean <- function(df) {

    G <- standings(df)

    mg <- data.frame(
        Equipe = G$Equipe,
        mGP.m = ifelse(G$J.m > 0, G$GP.m / G$J.m, 0),
        mGC.m = ifelse(G$J.m > 0, G$GC.m / G$J.m, 0),
        mGP.v = ifelse(G$J.v > 0, G$GP.v / G$J.v, 0),
        mGC.v = ifelse(G$J.v > 0, G$GC.v / G$J.v, 0),
        mGP = ifelse(G$J > 0, G$GP / G$J, 0),
        mGC = ifelse(G$J > 0, G$GC / G$J, 0)
    )

    return(mg)

}

Esta função na verdade fornece parâmetros para as distribuições de probabilidade utilizadas para gerar os resultados. Neste caso, está sendo adotada a premissa de que o número de gols feitos e sofridos por uma equipe seguem uma distribuição de probabilidades chamada Poisson. A média de gols é utilizada como parâmetro lambda desta distribuição.