Noções básicas sobre propensão de pontuação: uma abordagem de modelo misto para avaliar jogadores da NBA

Abhijit Brahme Blocked Unblock Seguir Seguindo 13 de janeiro

"Quem é o melhor artilheiro da NBA?" É uma pergunta que surge muito durante conversas com meus amigos. Nomes como LeBron James, James Harden e Steph Curry sempre aparecem.

Muitas vezes é difícil chegar a uma única resposta; a questão torna-se mais sutil quando as distinções são feitas dentro dos marcadores. Como distinguimos talentos ao contextualizar as diferentes situações em que os jogadores pontuam?

Por exemplo, como podemos comparar dois jogadores assim:

Steph CurryLeBron James

Ambos os jogadores são criadores de tiro prolífico, mas ambos pontuam de maneiras diferentes. Como podemos colocá-los em um terreno comum?

* Nota: Para esta análise eu não estarei usando taxa de lance livre e / ou porcentagem. Um melhor título para isso seria o melhor "shot maker", dado que eles não são sujos. *

Uma abordagem simples: pontos por tiro

Ingenuamente, nosso primeiro argumento para "melhor marcador" pode depender do uso de pontos por tiro (PPS) como meio de análise. Afinal, quem marcar mais pontos por tentativa deve teoricamente ser o melhor marcador. Há desvantagens nessa abordagem, mas abordaremos isso mais tarde.

Coletando dados da temporada da NBA 2014-2015 da kaggle.com , podemos começar algumas análises iniciais. Se nós agregarmos jogadores e fizermos a média de pontos por tentativa, poderemos ver quem são os mais bem sucedidos e menos bem sucedidos.

Top 10 PPS (2014–2015)

Da lista à esquerda, podemos ver que os marcadores mais eficientes são os homens grandes que capturam lobs (Jordan / Chandler). Misturados, são atiradores de elite de 3 pontos como Korver e Babbitt.

Se fôssemos ingênuos, simplesmente concluiríamos que esses foram os melhores “atiradores” da liga. No entanto, a partir do nosso conhecimento de basquete, sabemos que os tiros mais próximos da borda (ou seja, os dunks e lobs que Jordan / Chandler recebem) são muito mais fáceis de fazer do que tiros mais distantes. Além disso, também sabemos que tiros mais abertos são mais fáceis de fazer do que tiros altamente contestados. Vamos testar nossa intuição com a validação de dados para nos certificar de que estamos no caminho certo.

Shot Distance vs Def Distance (amarelo indica make, púrpura indica falta)

Se olharmos para o gráfico de dispersão acima, podemos ver que os jogadores estão mais propensos a perder, pois estão mais longe da cesta. Quando eles estão mais perto da cesta e os defensores estão mais longe, eles muito raramente perdem. Podemos imaginar isso como uma oportunidade de layup / dunk de transição. Nossa intuição está correta e podemos prosseguir com uma análise mais sutil.

Uma abordagem ligeiramente melhor: regressão logística

A fim de explicar esses vários fatores (distância percorrida, distância defensiva), podemos construir um modelo de regressão logística simples para prever se um tiro entrou ou não. Os recursos incluem um termo de interceptação, a distância do disparo e a distância do defensor. A regressão logística assume que o processo de geração de erros é o mesmo para cada amostra. Mantenha essa suposição em mente enquanto passamos por essa abordagem.

Geração de Modelos

Apenas construindo um modelo simples, podemos ver que adivinhar cegamente sobre conversão de tomadas nos daria 55% de precisão. O modelo faz uma melhoria de cerca de 5%. Com mais ajustes de hiper-parâmetros, tenho certeza que poderíamos fazer melhor, mas não incrivelmente.

Examinar os resíduos mostra que o modelo não é exatamente adequado (não está centrado em 0 e ligeiramente inclinado). Isso poderia indicar violação da suposição iid mencionada anteriormente.

Resíduos do Ajuste

A violação pode ser devido ao fato de que o modelo é cego para os jogadores. Talvez existam diferentes processos geradores de erros para cada jogador. Essencialmente, cada jogador pode ter um efeito diferente sobre se um tiro vai entrar ou não, com base em algum nível de habilidade latente implícito.

Para resolver esse problema, poderíamos fazer uma de três coisas:

  • Adicionar jogadores usando uma representação de codificação de um hot ao modelo de regressão logística existente
  • Construa um modelo separado para cada jogador
  • De alguma forma, combine as estratégias acima

Na primeira abordagem, não estamos realmente tratando cada tentativa de tiro de diferentes jogadores de maneira única. Ainda estamos presumindo que cada tomada vem do mesmo processo de geração de dados, portanto nossa suposição ainda será violada, embora nossa precisão possa melhorar.

Na 2ª abordagem, iremos certamente explicar diferentes erros para diferentes jogadores, mas acabamos por construir muitos modelos!

A terceira abordagem, que é minha abordagem preferida, combina as estratégias acima em um modelo. É chamado Modelagem Linear Hierárquica.

Um modelo não perfeito, mas muito melhorado: HLMMs

Modelos mistos lineares hierárquicos (HLMMs) são modelos destinados a lidar com dados agrupados com estrutura hierárquica clara. Por exemplo, esses modelos foram usados para estudar o efeito de diferentes distritos escolares nos resultados do SAT dos alunos.

No nosso caso, queremos ver o efeito de diferentes jogadores nos resultados de tiro. Nossos dados (tentativas de captura) podem ser agrupados das seguintes maneiras:

  • Por jogo
  • Por equipe
  • Por jogador
  • Pelo defensor mais próximo
  • Por trimestre

Cada um desses agrupamentos diferentes serve para explicar algumas das variações nos dados. Outra maneira de pensar sobre isso é que cada um dos grupos acima tem um efeito diferente sobre o resultado de um tiro. Por exemplo, talvez a maior parte da variação nos dados (ou seja, fazer ou errar) seja determinada pelo grupo "Player". Esses tipos de agrupamentos são denominados “efeitos aleatórios”.

HLMMs consistem em efeitos fixos e aleatórios (daí o “misto” no nome). Efeitos fixos são variáveis que, acredita-se, afetam todos os grupos igualmente. Por exemplo, no nosso caso, a distância do disparo pode ser considerada como um efeito fixo.

Esses modelos também representam desequilíbrios nos agrupamentos. Por exemplo, digamos que, de 10000 tiros, temos apenas 6 pontos de dados para um jogador de banco, já que esse jogador normalmente não joga muito. Se usássemos nossa primeira abordagem, esses 6 pontos de dados seriam um pouco insignificantes para determinar o valor desse jogador. Se usássemos nossa segunda abordagem e construíssemos um modelo separado para cada jogador, o impacto desse jogador seria severamente excessivo. Imagine se esse jogador fizesse todos os 6 tiros; o modelo o consideraria altamente, mas poderia não ser responsável por sua sorte.

Os HLMMs encontram um meio feliz entre essas duas abordagens. Simplificando, se um membro de um grupo não tiver muitos dados, seu efeito estará mais próximo da média de todos os membros do grupo. Se ele fizer isso, seu efeito será mais distante. Isso é chamado de "encolhimento". Se você estiver interessado em aprender mais sobre modelos mistos, esse link deve fornecer um bom ponto de partida.

Aplicação de HLMMs a dados de captura

Vamos revisitar nossa análise de pontos por tiro. Antes, mostrávamos apenas os pontos dos jogadores por tiro, mas não mostramos quantas tentativas de tiro eles fizeram. Incluindo esta informação pode mostrar se um jogador foi "azarado".

À esquerda, podemos ver que há uma enorme discrepância no número de tentativas de tiro entre os jogadores. Pegue a diferença entre Stephen Curry e Hedo Turkoglu. Ambos têm o mesmo PPS, mas Steph tem 9x mais tentativas! A intuição nos diz que a informação de Steph é mais confiável, mas podemos definitivamente dizer que Steph é um melhor criador de tiros do que Turkoglu usando apenas essa informação?

Acontece que podemos tentar, usando testes de hipóteses, mas isso pressupõe que tanto Stephen quanto Hedo tenham os mesmos tipos exatos de tiros. Como isso é altamente improvável, ignoramos essa rota.

O que podemos fazer é construir um HLMM e interpretar os coeficientes do modelo.

Especificação HLMM

Acima está como um modelo misto é especificado. Os termos beta são os coeficientes dos efeitos fixos “X” e “u” são os coeficientes dos efeitos aleatórios “Z”. Observe que o modelo é linear; um valor positivo de coeficientes sugere que um aumento no preditor associado (quando outros valores são mantidos constantes) coincide com um aumento apropriado no valor previsto, "y".

Em termos de basquete, podemos ver como o coeficiente de um jogador se relaciona com o valor previsto, o resultado do tiro. Um melhor atirador teria um coeficiente mais positivo.

Construindo o HLMM: Usando Métodos Bayesianos

Vamos revisitar nossos dados.

Quadro de dados para dados de tiro

Vamos procurar possíveis agrupamentos em nossos dados que possam introduzir variação. Alguns que vêm à mente:

  • Jogador
  • Defensor do Jogador
  • ID do jogo
  • Equipa do Jogador
  • Oponente do jogador
  • Trimestre

Agora, podemos procurar por efeitos que possam ser fixados em populações:

  • Início / Fora do jogo
  • Distância do tiro
  • Distância Defensor
  • Número de Dribles
  • Hora do toque
  • Tempo restante no trimestre
  • Relógio de tiro

Normalmente, ao usar a metodologia Bayesiana, gostaríamos de encaixar o “ modelo máximo ”. O que isto significa é, se alguém pretende, no nosso caso, confirmar ou negar uma hipótese (ou seja, quem é o melhor fabricante de tiro), devemos especificar a estrutura de efeito aleatório máximo. O que isso significa?

Considere nossos recursos acima. Poderíamos definir os efeitos fixos como tal e especificar uma interceptação aleatória para cada grupo. No entanto, intuitivamente, sabemos que a distância do tiro, a distância do defensor e os dribles antes do tiro afetam cada jogador de forma diferente. Portanto, poderíamos postular uma estrutura que incluísse uma inclinação aleatória para cada um dos recursos mencionados anteriormente, bem como uma interceptação aleatória. Além disso, podemos postular que a distância do defensor afeta cada defensor de forma diferente, e inclui uma inclinação aleatória para isso.

Usando o pacote brms do R, posso ajustar um modelo com “estrutura máxima” e interpretar os resultados. Observe que isso vai demorar um pouco, dependendo do número de iterações e correntes que você executa.

Analisando os resultados do modelo

O modelo que acabei encaixando teve essa formulação em R.

FGM ~ Intercept + LOCATION + CLOSE_DEF_DIST + (1 + SHOT_DIST + DRIBBLES | Player) + (1 | CLOSEST_DEFENDER)

O que isto significa é que a resposta (FGM) é uma função dos efeitos fixos (home / away e defensor de distância) + intercepta para o mais próximo_defender e jogador + os efeitos de inclinação aleatória do jogador multiplicados pela distância de tiro e dribles tirados. A resposta, FGM, é uma resposta binária 0/1; isto significa que os coeficientes devem ser interpretados na escala de log desde que os efeitos sejam transformados usando uma função de link logit.

Para capturar o efeito de um determinado jogador em relação a outros jogadores, temos que fazer um pouco de matemática. Lembre-se de que os coeficientes medem uma resposta se os outros preditores forem mantidos constantes. Em nosso modelo especificado, temos várias variáveis para manter constante:

  • Localização (Casa / Fora)
  • Distância Defensor
  • Distância do tiro
  • Dribles
  • Defensor

Como eu dimensionei os valores de distância de defesa, distância de tiro e número de dribles, eles devem ter o valor mediano 0. Usaremos isso como nossa constante para facilitar nossos cálculos. Por simplicidade, vamos supor que cada jogador está em casa. Em seguida, devemos fixar um valor defensivo; vamos usar o valor mediano. Efeitos aleatórios são especificados com um Normal (média = 0, variância = sigma), então o valor mediano deve ser 0! Isso torna nosso cálculo final muito fácil.

Calculando o efeito do jogador

O link logit realiza a seguinte transformação:

ln (p / (1-p)) = ?X + Zu

Lembre-se de que "Z" e " ? " são os coeficientes dos efeitos aleatórios e fixos, respectivamente. "P" é o valor da probabilidade do resultado bem-sucedido (feito no tiro, no nosso caso).

No nosso caso (já que usamos valores medianos de 0), isso se divide em:

ln (p / (1-p)) = Intercept + Home + Jogador

Vou chamar o RHS da equação o linear_predictor. Agora, resolvendo para p, obtemos:

p = e ^ (linearpreditor) / (1 + e ^ (linearpreditor))

Agora podemos comparar o efeito do jogador na conversão de tiro em termos de probabilidade!

Desde que fomos Bayesian, isso não é tudo que podemos fazer. Podemos realmente olhar para a distribuição de probabilidade dos efeitos de cada jogador usando as amostras geradas. Isso é muito melhor do que usar um único valor, já que podemos comparar as incertezas nas estimativas.

Ilustrarei com um exemplo abaixo, revisitando o caso de Stephen Curry e Hedo Turkoglu. Lembre-se de Stephen e Hedo tinha PPS equivalente, mas Stephen tinha 9x mais as tentativas de tiro.

Efeitos do Jogador

Na laranja, temos a distribuição dos valores de conversão de tiro para o Turkoglu e, no azul, temos o mesmo para o Curry.

Algumas coisas para tirar:

  • A distribuição para o Turkoglu está mais espalhada. Isso significa que temos menos certeza sobre o efeito dele. Isso faz sentido, já que tivemos apenas 100 tentativas de tiro dele. Consequentemente, a distribuição de Curry é mais rigorosa, o que implica que o modelo é mais certo sobre o seu efeito.
  • O pico da distribuição de Turkoglu é deslocado para a esquerda de Curry. Isso indica que o modelo estima que Curry provavelmente tem um efeito maior sobre a conversão de tiros do que o Turkoglu! No entanto, podemos observar a interseção das distribuições para ver com que frequência Curry possui um efeito maior. Nós simplesmente tomamos a média de quantas vezes o valor de "x" de Curry é maior que o de Turkoglu. A partir da distribuição acima, é determinado pela amostra ser 91,875%. É cerca de 92% provável que Steph possua um melhor efeito de conversão do que o Turkoglu.

Podemos repetir este processo para todas as combinações de jogadores e fazer comparações, mas é mais útil pensar em como um jogador aumenta a probabilidade de um tiro entrar, comparado a outros. Não falarei em distribuições; em vez disso, usarei apenas o valor mediano das amostras.

Podemos então subtrair a mediana de conversão para todos os jogadores dos efeitos de cada jogador, e olhar para a probabilidade de conversão acima da substituição para cada jogador.

20 principais conversores de tomadas

Podemos ver a lista à esquerda dos 20 principais e 20 conversores de fundo da temporada 2014-2015. O que percebemos? O que se destaca? Como podemos interpretar esses resultados em termos do modelo que construímos? Por que vemos certos jogadores acima dos outros?

Conversores de Tiro Inferior 20

Considerações finais

Os dados são um pouco ruidosos. O close_defender pode ser apenas um jogador que estava ajudando, e não um que realmente contestou o tiro. Os dados não têm o tipo de tiro que um jogador fez (arremesso, enterrada, tiro com gancho). Os dados também não têm a densidade em torno de um jogador quando ele levou o tiro (a pista estava congestionada ou estava bem claro com apenas um defensor). Notamos que os homens grandes são penalizados bastante pesadamente; eles estão freqüentemente na parte inferior do gráfico de nível de substituição. Isso pode acontecer porque esses jogadores frequentemente se envolvem em dicas que geralmente não são convertidas na primeira tentativa. Mais uma vez, ter dados mais granulares (incluindo pontuação diferencial para eliminar os jogadores de “embreagem”) seria benéfico. Deixe seus comentários abaixo. Lembre-se que isso é apenas para a temporada 2014-2015, mas o processo também pode ser aplicado aos dados de hoje.

Agradecimentos

Gostaria de agradecer a Alex Hayes pela sua assistência na compreensão da estrutura de variância-covariância de Modelos Mistos em um cenário Bayesiano. Gostaria de agradecer também aos meus amigos que se envolvem continuamente em debates acalorados e me dão a inspiração para enfrentar os debates analiticamente. Eu também gostaria de agradecer a Stephen Curry por sua grandeza.