Falha na regressão / previsão linear em um conjunto de dados reais

8

Eu tenho um conjunto de dados no qual estou tentando fazer regressão e falhando.

A situação:

  • Milhares de operadores de robôs de batalha estão travando batalhas entre si usando robôs de batalha.
  • Alguns robôs de batalha são fortes e poderosos, e outros são fracos; os fortes vencem com mais frequência e causam mais dano.
  • Os operadores de robôs variam em habilidade, com os mais qualificados ganhando com mais frequência e causando mais danos
  • Temos algumas informações resumidas sobre os resultados de suas batalhas, mas nem todos os detalhes.
  • Sabemos quais robôs de batalha eles usaram em suas batalhas e quantas vezes (incluindo quantas dessas batalhas venceram) e sabemos o dano total que causaram (de dois tipos, danoA e danoB) no total
  • Alguns robôs são melhores em infligir danoA, enquanto outros danificamB
  • Para operadores de robôs de batalha desconhecidos baseados apenas em quais robôs eles usaram em batalhas (e quantas vezes), gostaríamos de estimar quanto dano de cada tipo eles alcançariam e qual% de batalhas eles provavelmente venceram

Por exemplo:

  • John usou o Robô A por 4 batalhas e o Robô B por 2 batalhas, e causou 240 unidades no valor de DamageA
  • James usou o Robô A em 1 batalha e o Robô B em 10 batalhas, e causou 1010 unidades no valor de DamageA

Portanto, posso estimar que o Robô A provavelmente causa 10 unidades de Dano A por batalha, enquanto o Robô B causa 100 unidades de Dano A por batalha e, portanto, se for solicitado a estimar o Dano A causado por Matthew, que jogou apenas um dos dois robôs por 2 batalhas cada, serão estimadas em 220 == (10 * 2 + 100 * 2).

Infelizmente, os dados reais não são tão limpos e diretos, provavelmente porque:

  • Há uma variação significativa devido à habilidade do operador do robô, por exemplo, um bom operador pode causar 20 unidades de dano no Robô A, enquanto um mau apenas 5 unidades.
  • Há alguma variação aleatória devido aos oponentes sorteados no caso de uma amostra pequena (por exemplo, alguém atrai um oponente forte e perde apesar de ter um robô melhor do que o oponente), embora, eventualmente, ele se iguale
  • Pode haver algum pequeno viés de seleção, pois os melhores operadores de robôs conseguem escolher os melhores para entrar em batalha com mais frequência

O conjunto de dados reais está disponível aqui (630k entradas de resultados conhecidos do operador de batalha):

http://goo.gl/YAJp4O

O conjunto de dados está organizado da seguinte forma, com uma entrada de operador de robô por linha:

  • Coluna 1 sem rótulo - ID do operador
  • batalhas - total de batalhas em que este operador participou
  • vitórias - batalhas totais que esse operador venceu
  • derrotas - batalhas totais que esse operador perdeu
  • damageA - total de pontos A de dano infligido
  • damageB - total de pontos B de dano infligidos
  • 130 pares de colunas da seguinte maneira:
    • battle_ [robotID] - batalhas usando o robot [robotID]
    • victories_ [robotID] - vitórias obtidas usando o robot [robotID]

O que eu fiz até agora:

  • Tentei alguns modelos lineares usando o biglmpacote R , que cria uma fórmula damageA ~ 0 + battles_1501 + battles_4201 + ...para tentar obter os valores "esperados" ajustados para cada um dos robôs.
  • O mesmo, mas remover a interceptação de origem forçada ao não incluir 0 +na fórmula
  • Idem, mas também incluiu as victories_[robotID]variáveis ​​independentes
  • O mesmo de antes, mas apenas selecionando os operadores de robôs cujos números de vitória estão próximos dos números de derrota
  • Um modelo de regressão linear para damageA ~ 0 + battles_1501 + battles_non_1501onde battles_non_1501estão todas as batalhas em robôs que não sejam o modelo 1501. Em seguida, é repetido para todos os outros tipos de robôs.

Fiz verificações de sanidade olhando os valores previstos de dano A e dano B, bem como comparando a proporção de vitórias / batalhas com a proporção real de vitórias / batalhas que podemos calcular com precisão para cada um dos robôs.

Em todos os casos, embora os resultados não estivessem completamente desligados, eles estavam suficientemente desligados para ver que o modelo não está funcionando bem. Por exemplo, alguns robôs obtiveram números de danos negativos, o que realmente não deveria acontecer, pois você não pode causar danos negativos em uma batalha.

No caso em que eu também usei os victories_[robotID]valores conhecidos na fórmula, muitos dos battle_[robotID]coeficientes acabaram sendo números negativos um tanto grandes, então tentei estimar o operador "médio", battle_[robotID] + victories_[robotID] / 2mas isso também não deu resultados razoáveis.

Estou um pouco sem ideias agora.

james.taylor.1985
fonte
4
Parece que você não está ajustando um modelo de efeitos mistos, o que você deve fazer aqui para explicar a variação entre os operadores e (aninhados dentro disso?) Os robôs. Quanto ao problema com danos negativos, você pode contornar isso fazendo algum tipo de transformação
M. Berk
Obrigado pelo seu conselho, embora deva admitir que não sei como aplicar nenhuma das sugestões. Tentei conectar ao lmeinvés do meu biglm, mas obviamente preciso ler muito mais sobre isso para entender exatamente o que fornecer como parâmetros para ele.
precisa saber é o seguinte
1
É a única maneira de obter os dados? Seria melhor ter um conjunto de dados com uma observação para cada batalha, identificando os dois operadores, os dois robôs e o resultado. Se os dados tiverem que vir como informações resumidas, você pode obter informações resumidas diferentes ou é isso?
Bill
É isso, os dados são recebidos de um sistema externo pertencente a outra empresa e, infelizmente, essa é a extensão dos dados disponíveis. Eu tenho mais algumas variáveis ​​de resumo disponíveis que eu não mencionei aqui (você pode considerá-las DamageB, DamageC, etc ...), mas elas estão intimamente correlacionadas com DamageA & DamageB, então eu não acho que elas sejam úteis e eu não os mencionei para evitar confusão.
precisa saber é o seguinte
2
Por que você não faz uma classificação ELO para os operadores, máquinas ou alguma variante deles? Além disso, esses dados dizem que parece uma quantidade inacreditável de diversão.
RegressForward

Respostas:

1

Provavelmente, isso requer modelagem simultânea de equações , em vez de regressão linear.

A probabilidade de sucesso depende de duas equações separadas, uma medindo a qualidade do oponente, pessoa e máquina, a outra medindo a qualidade do eu, pessoa e máquina. Eles se opõem diretamente, mas apenas um resultado é observado. Sem fazer o SEM, acredito que seus coeficientes são tendenciosos, e pode ser por isso que eles são insignificantes. Isso é remanescente da estimativa das equações de oferta e demanda , que geralmente não geram nada, a menos que estejam bem preparadas.

RegressForward
fonte