2009-10-20 17 views
5

Ho i seguenti giocatori, ogni valore corrisponde a un risultato in percentuale di risposte giuste in un dato gioco.Algoritmo per trovare buoni, giocatori affidabili

$players = array 
(
    'A' => array(0, 0, 0, 0), 
    'B' => array(50, 50, 0, 0), 
    'C' => array(50, 50, 50, 50), 
    'D' => array(75, 90, 100, 25), 
    'E' => array(50, 50, 50, 50), 
    'F' => array(100, 100, 0, 0), 
    'G' => array(100, 100, 100, 100), 
); 

Voglio essere in grado di raccogliere i migliori giocatori ma voglio anche di prendere in considerazione quanto è affidabile un giocatore è (meno entropia = più affidabile), finora mi è venuta in mente la seguente formula :

average - standard_deviation/2 

Tuttavia non sono sicuro se questa è una formula ottimale e mi piacerebbe sentire i vostri pensieri su questo. ho pensato un po 'di più su questo problema e mi è venuta in mente una formula leggermente diversa, qui è la versione rivista:

average - standard_deviation/# of bets 

Questo risultato sarebbe quindi la ponderazione per il prossimo voto imminente quindi, ad esempio, una nuova scommessa dal giocatore C conta solo come una mezza puntata.

Non posso andare nello specifico qui, ma questo è un progetto relazione con la Wisdom of Crowds theory e la Delphi method e il mio obiettivo è quello di prevedere nel miglior modo possibile i prossimi risultati ponderazione scommesse passati da diversi giocatori.

Apprezzo tutti gli input, grazie.

+2

cercando di scegliere la migliore squadra di calcio fantasy? :) – Kip

+0

@Kip: non del tutto, ma vicino. =) –

+1

Re la tua (in grassetto) idea aggiuntiva. Congratulazioni, hai quasi reinventato l'errore standard della media! Se hai usato la media - 2 * stdev/sqrt (numBets), avresti il ​​limite inferiore dell'intervallo di confidenza del 95% attorno alla media. Quel valore è un modo non del tutto irragionevole per selezionare i migliori predittori. – Harlan

risposta

3

Prima di tutto, non userei la deviazione standard se gli array di dati hanno solo poche voci. Utilizzare misure statistiche più robuste come la Deviazione assoluta mediana (MAD), allo stesso modo si potrebbe voler testare l'utilizzo della mediana anziché della media.

Questo è dovuto al fatto che, se la tua "conoscenza" delle scommesse dei giocatori è limitata a pochi campioni, i tuoi dati saranno dominati da valori anomali, cioè il giocatore è fortunato/sfortunato. I mezzi statistici possono essere del tutto inappropriati in tali circostanze e potresti voler utilizzare qualche forma di approccio euristico.

Suppongo inoltre dal tuo link, che non si in realtà intenzione di scegliere il miglior giocatore, ma piuttosto in base ai giocatori prossima serie di risposte "A" vuole prevedere il corretto set di risposte "C" pesando " Un "basato sul precedente track record dei giocatori.

Naturalmente se ci fosse una buona soluzione a questo problema, si potrebbe fare un'uccisione in borsa ;-) (Il fatto che nessuno lo faccia, dovrebbe essere un'indicazione sull'esistenza di tale soluzione) .

Ma tornando alla classifica dei giocatori. Il tuo problema principale è che tu (devi?) Prendere la percentuale di risposte giuste distribuite equamente da 0 a 100%. Se il test contiene più domande questo non è certamente il caso. Guarderei cosa un giocatore "R" del tutto casuale segna sul test e costruisci un numero di confidenza relativo basato su quanto sia meglio/peggio di "R" un dato giocatore reale.

Dire, per ogni round del gioco generare un milione di giocatori casuali e guardare la distribuzione dei punteggi. Usa la distribuzione come peso per i punteggi reali dei giocatori. Quindi combinare i punteggi ponderati utilizzando MAD e calcolare la mediana - MAD/un numero, come già suggerito.

+0

Ottima risposta, ma in questo caso, perché sarebbe meglio usare il MAD/mediana rispetto alla deviazione standard/media? –

+0

Se i dati hanno un valore basso n (cioè punti dati), la Deviazione standard e la media (media) non sono molto affidabili. Ad esempio, la deviazione standard (s_m) della media è s/sqrt (n). Se hai n = 4 come nel tuo esempio, la media è di per sé accurata solo al 50% dei dati. In queste situazioni MAD e Median sono più robusti. Anche l'uso di s e mean richiede di assumere una distribuzione normale per ogni risposta dei giocatori nel tempo. Questo può o non può essere il caso a seconda della configurazione del gioco e della tua opinione sul processo decisionale umano. – Timo

4

Un Bayesian Probablity Formula corrisponde al conto?

Penso che lo farebbe. Ecco un link ad un altro sito che è un po 'meno matematica su di esso: http://www.experiment-resources.com/bayesian-probability.html

In sostanza si prevedono la probabilità che ogni giocatore segnerà il più alto nel prossimo turno. Questo è ciò che le probabilità bayesiane mangiano a colazione.

Le probabilità bayesiane sono già in uso in video games (avviso: file .doc) per determinare le cose proprio come questo.

+0

Ho corretto l'errore, ma ricordo verosimilmente! = Probabilty quando si parla di statistiche. – nlucaroni

+0

Sembra troppo complicato per le mie abilità matematiche, forse non ti dispiacerebbe mostrarmi un esempio in codice (pseudo)? –

1

penso tu abbia ragione che si desidera una sorta di combinazione lineare dei due fattori, ma penso che avremmo bisogno di sapere di più su cosa stai facendo sapere quali sarebbero state le costanti attuali ...

+0

Grazie per l'input, controlla il mio aggiornamento. Se hai bisogno di maggiori informazioni basta dire la parola. –

3

Hm. Ciò farebbe sì che un giocatore (100,100,100,60) abbia un punteggio peggiore di un giocatore (85,85,85,85). Perché non prendere in considerazione anche la% dei punti totali?

Come: punti percentuali totali (ad es. 0..1) moltiplicati per il calcolo corrente.

+0

Grazie per la risposta, controlla il mio aggiornamento. –

7

Non è possibile ottenere una formula ottimale se non si è quantificato ciò che è meglio. Devi capire come vuoi pesare la coerenza rispetto alla media. Ad esempio, un'opzione potrebbe essere stimare il punteggio che il giocatore colpirà una determinata percentuale di giochi. Ciò richiede un qualche tipo di modello della distribuzione di probabilità del punteggio dei giocatori. Per esempio, se supponiamo che i punteggi dei giocatori seguano la distribuzione normale, allora la tua formula calcolata calcola quale punteggio il giocatore supererà circa il 70% delle volte.

+0

Il fatto è che non ho idea di cosa sia meglio, ho iniziato solo con la media ma ho pensato che introdurre la deviazione potesse essere anche una buona idea ... Per favore, controlla il mio aggiornamento per avere un'idea di cosa sto cercando di forse, questo potrebbe portare più informazioni sulla mia domanda. –

1

Ebbene, il "semplice estensione" è solo l'aggiunta di un peso e un limite:

media (player) - min (in alto, peso * Entrophy (giocatore))

Tuttavia, dato il attuale set di dati, potrei non essere interessato a "percentuale di risposta giusta" tanto quanto guardare la differenza di punteggio per gioco, se questa è un'opzione.

2

Hai considerato l'utilizzo della mediana? È considerato più robust statistic (meno influenzato dai valori anomali) rispetto alla media. Nei tuoi dati, ottieni mediani di: 0, 25, 50, 82,5, 50, 50, 100.

Questo sembra essere ciò che desideri intuitivamente? Sono d'accordo con gli altri sul fatto che non esiste una "risposta giusta" qui.

+0

Mi dispiace per una domanda di base, ma come faccio a determinare la mediana? –

+1

(google è tuo amico!) Per ogni giocatore, ordina l'array, quindi, se c'è un numero dispari di valori, scegli quello medio, altrimenti scegli la media del secondo medio. Qualsiasi libreria statistica avrà anche una funzione mediana. – Harlan

Problemi correlati