EDIT: Desde que fiz este post, segui com um post adicional aqui .
Resumo do texto abaixo: Estou trabalhando em um modelo e tentei regressão linear, transformações de Box Cox e GAM, mas não progredi muito
Usando R
, Eu estou trabalhando atualmente em um modelo para prever o sucesso de jogadores menores de beisebol da liga no nível principal da liga (MLB). A variável dependente, carreira ofensiva vence acima da substituição (oWAR), é um proxy para o sucesso no nível da MLB e é medida como a soma das contribuições ofensivas para cada jogada em que o jogador está envolvido ao longo de sua carreira (detalhes aqui - http : // : //www.fangraphs.com/library/misc/war/) As variáveis independentes são variáveis ofensivas da liga menor pontuadas em z para estatísticas que são consideradas preditores importantes de sucesso no nível da liga principal, incluindo idade (jogadores com mais sucesso em uma idade mais jovem tendem a ser melhores perspectivas), taxa de strike out [SOPct ], taxa de caminhada [BBrate] e produção ajustada (uma medida global da produção ofensiva). Além disso, como existem vários níveis das ligas menores, incluí variáveis fictícias para o nível de jogo da liga menor (Duplo A, Alto A, Baixo A, Novato e Temporada Curta com Triplo A [o nível mais alto antes das principais ligas] como variável de referência]). Nota: redimensionei o WAR para ser uma variável que varia de 0 a 1.
O gráfico de dispersão variável é o seguinte:
Para referência, a variável dependente, oWAR, possui o seguinte gráfico:
Comecei com uma regressão linear oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeason
e obtive os seguintes gráficos de diagnóstico:
Existem problemas claros com a falta de imparcialidade dos resíduos e a falta de variação aleatória. Além disso, os resíduos não são normais. Os resultados da regressão são mostrados abaixo:
Seguindo o conselho de um tópico anterior , tentei uma transformação Box-Cox sem sucesso. Em seguida, tentei um GAM com um link de log e recebi esses gráficos:
Original
Novo gráfico de diagnóstico
Parece que os splines ajudaram a ajustar os dados, mas os gráficos de diagnóstico ainda mostram um ajuste inadequado. Edição: Eu pensei que estava olhando para os valores residuais vs valores ajustados originalmente, mas eu estava incorreto. A plotagem que foi originalmente mostrada está marcada como Original (acima) e a plotagem que enviei posteriormente é marcada como Nova plotagem de diagnóstico (também acima)
O do modelo aumentou
mas os resultados produzidos pelo comando gam.check(myregression, k.rep = 1000)
não são tão promissores.
Alguém pode sugerir um próximo passo para este modelo? Fico feliz em fornecer qualquer outra informação que você considere útil para entender o progresso que fiz até agora. Obrigado por qualquer ajuda que você pode fornecer.
Respostas:
Muito bom trabalho. Penso que esta situação é candidata ao modelo logístico ordinal semiparamétrico de probabilidades proporcionais. AY Y β Y Y
lrm
função norms
pacote R se ajustará ao modelo. Por enquanto, você pode querer arredondar para ter apenas 100-200 níveis. Em breve, uma nova versão do será lançada com uma nova função que permite eficientemente milhares de interceptações no modelo, ou seja, permite que seja totalmente contínuo [atualização: apareceu em 2014]. O modelo de chances proporcionais s é invariável à forma como é transformado. Isso significa que os quantis também são invariantes. Quando você deseja uma média prevista, presume-se que esteja na escala de intervalo adequada.Y β Y Yrms
orm
fonte
require(Hmisc); cut2(y, g=100, levels.mean=TRUE)
rms
será lançada em breve, você tem alguma idéia de quando isso pode acontecer?Eu acho que re-trabalhar a variável dependente e modelo pode ser proveitoso aqui. Olhando para os seus resíduos do
lm()
, parece que o principal problema está nos jogadores com um WAR de carreira alta (que você definiu como a soma de todos os WAR). Observe que o seu WAR mais alto previsto (em escala) é 0,15 de um máximo de 1! Eu acho que há duas coisas com essa variável dependente que estão exacerbando esse problema:No entanto, no contexto da previsão, incluir o tempo jogado explicitamente como controle (de qualquer forma, seja como peso ou como o denominador no cálculo da WAR média na carreira) é contraproducente (também suspeito que seu efeito também não seja linear). Portanto, sugiro tempo de modelagem um pouco menos explícito em um modelo misto usando
lme4
ornlme
.Com
lme4
, isso seria algo comolmer(sWAR ~ <other stuff> + (1|Player), data=mydata)
fonte