'; $table.= '"; $table.="

Hattrick Match Analysis

Custom Search

"; $table.= ''; $table.= ''; for ($i=1;$i<=$t;$i++) { $z=$i-1; $table.= ''; $table.= ""; $table.= ""; $table.= ""; $table.= ""; $table.= ""; $table.= ""; $table.= ""; $table.= ""; $table.= ''; } $table.= '
'.getLangString($langDOM, "realGraphTable1").''.getLangString($langDOM, "realGraphTable2").''.getLangString($langDOM, "realGraphTable3").''.getLangString($langDOM, "realGraphTable4").''.getLangString($langDOM, "realGraphTable5").''.getLangString($langDOM, "realGraphTable6").''.getLangString($langDOM, "realGraphTable7").''.getLangString($langDOM, "realGraphTable8").'
$x2defdata[$z]$xdefdata[$z]$ydefdata[$z]$ndefdata[$z]". round(($ydefdata[$z]/100-1.96*(sqrt((($ydefdata[$z]/100)*(1-($ydefdata[$z]/100)))/$ndefdata[$z])))*100,2) ."". round(($ydefdata[$z]/100+1.96*(sqrt((($ydefdata[$z]/100)*(1-($ydefdata[$z]/100)))/$ndefdata[$z])))*100,2) ."$M[$z]".(round(sqrt(($xdefdata[$z]/100)*(1-($xdefdata[$z]/100))),2))."
'; $table.= '
'; //Legenda $table.="".getLangString($langDOM, "legend")."
"; $table.=""; $table.=""; $table.=""; $table.=""; $table.=""; $table.=""; $table.=""; $table.=""; $table.="
"; $table.="".getLangString($langDOM, "realGraphTable1")." :".getLangString($langDOM, "realGraphTable1Text")."
".getLangString($langDOM, "realGraphTable2")." : ".getLangString($langDOM, "realGraphTable2Text")."
".getLangString($langDOM, "realGraphTable3")." :".getLangString($langDOM, "realGraphTable3Text")."
".getLangString($langDOM, "realGraphTable4")." :".getLangString($langDOM, "realGraphTable4Text")."
".getLangString($langDOM, "realGraphTable5")." :".getLangString($langDOM, "realGraphTable5Text")."
".getLangString($langDOM, "realGraphTable6")." :".getLangString($langDOM, "realGraphTable6Text")."
".getLangString($langDOM, "realGraphTable7")." :".getLangString($langDOM, "realGraphTable7Text")."
".getLangString($langDOM, "realGraphTable8")." :".getLangString($langDOM, "realGraphTable8Text")."
"; $table.="
"; return $table; } function display_graph_ajax($lang ,$maxint,$mindati,$min,$max,$exp) { //lang $langDOM=new DomDocument(); $langDOM->load('locale/lang.'.$lang.'.xml'); //timer $pntTime=new executionScript(); $pntTime->start(); $values= array(); $values['maxint']=$maxint; $values['mindati']=$mindati; $values['min']=$min; $values['max']=$max; $values['exp']=$exp; $graphGen=new GraphGen; $results=$graphGen->makeGraph($myconn, $values); $x2defdata=$results['x2defdata']; $xdefdata=$results['xdefdata']; $ydefdata=$results['ydefdata']; $ndefdata=$results['ndefdata']; $M=$results['M']; $n=$results['n']; //codifica per GET $coded_array = base64_encode(serialize($xdefdata)); $encoded = strtr(base64_encode(addslashes(gzcompress(serialize($coded_array),9))), '+/=', '-_,'); $coded_array = base64_encode(serialize($ydefdata)); $yencoded = strtr(base64_encode(addslashes(gzcompress(serialize($coded_array),9))), '+/=', '-_,'); $coded_array = base64_encode(serialize($ndefdata)); $nencoded = strtr(base64_encode(addslashes(gzcompress(serialize($coded_array),9))), '+/=', '-_,'); //PREPARAZione link $imgraph= ""; //$risultato='
displayGraph($xdefdata, $ydefdata, $ndefdata).'?rand='.rand()%100 .' id="graphimg" border=0 align=top >

'; $risultato='
'.$imgraph.'

'; $pntTime->stop(); $risultato.=''.getLangString($langDOM, "realGraphResult1").': '.$mindati.', '.getLangString($langDOM, "realGraphResult2").': '.$maxint.'%, '.getLangString($langDOM, "realGraphResult3").' '.$n.' '.getLangString($langDOM, "realGraphResult4").' (ms): '.$pntTime->getTime().''; $risultato.='

'; $tabella=display_table($xdefdata, $ydefdata, $x2defdata, $ndefdata, $M, $langDOM); return $risultato.$tabella; //return array('grafico'=>$risultato, 'tabella'=>$tabella); } // Necessary PHPLiveX Codes $ajax2 = new PHPLiveX(array("display_graph_ajax")); $ajax2->Run(); ?>

Statistiche sulla realizzazione (by GM-HomerJay)

Premessa

Sono stati considerate solo azioni di contropiede sfruttando il fatto che vengono sempre citate in cronaca, eludendo quindi il problema di dover considerare l'assegnazione delle azioni non citate.
Il grafico rappresenta l'effettiva percentuale di realizzazione delle azioni di contropiede nel nostro database, è possibile modificare alcuni fattori e cliccando "rigenera" avere il grafico aggiornato.
Sull'asse delle y si può trovare l'effettiva percentuale di realizzazione delle azioni considerate, in altre parole la semplice divisione tra goals e totale azioni.
Sull'asse x si trova invece il risultato della formula che noi supponiamo regoli la realizzazione, tale formula segue la struttura:

Dove:
ATT: Valutazione del rating di attacco
DIF: Valutazione rating di difesa dell'avversario
EXP: Esponente, variabile come fattore
Per maggiori spiegazioni tecniche rimandiamo al paragrafo a fondo pagina.

Fattori
Massima ampiezza per intervallo singolo
size="4" maxlength="4" />
Dati massimi per intervallo
size="4" maxlength="4" />
Valutazione minima da considerare
size="4" maxlength="4" />
Valutazione massima da considerare
size="4" maxlength="4" />
Esponente confronto
size="4" maxlength="4" />


Grafico

Anche se già introdotto con spiegazioni di massima ci sono alcune cose che è bene chiarire, a cominciare dal motivo per cui è presente più di una linea.
La Linea Nera rappresenta i dati principali, ovvero la realizzazione reale.
La Linea Blu rappresenta i dati ideali, ovvero quelli che si avrebbero se la formula fosse perfetta, una retta y=x
Le Linee Verdi e Arancio rappresentano i limiti superiore e inferiore dell'intervallo di confidenza, questo intervallo, calcolato in base al numero di dati disponibili per intervallo, e può essere definito come il grado di affidabilità dei risultati, ovvero assumendo che si tratti di estrazioni successive come per una binomiale i valori compresi nell'intervallo di confidenza contengono al 95% la probabilità teorica del motore di gioco.

Grafico per conversione da valori HO

Il grafico che segue usa la stessa formula di HO per confrontare i reparti, dando qui come risultato i dati effettivi sulla realizzazione.
La formula è (ATT-DEF)/DEF


Zoom su intervallo utile (-50 : +50)


Alcune spiegazioni riguardo raccolta dei dati

Sono state raccolte solo partite giocate dopo il 20 maggio 2009, da quando gli effetti della fiducia sono visibili nei rating
Sono state considerate solo azioni di contropiede, per garantire di non avere problemi col fatto che vengano citate o meno
La modalità di raccolta consiste nello sfogliare il calendario dei gironi e scaricarne le partite di conseguenza, quindi il campione non è condizionato da una raccolta manuale.
Sono stati impostati alcuni filtri sui dati per garantire che non venissero condizionati in maniera rilevante, in particolare sono escluse partite in cui si è verificato uno dei seguenti eventi:
I filtri precedenti sono stati impostati semplicemente controllando che l'evento si sia verificato, restano altri due problemi non risolvibili con semplici filtri
  1. Ordini e sostituzioni condizionali
    Se ad una prima valutazione può sembrare corretto filtrarle come per i precedenti, pensandoci un attimo si capisce facilmente che in questo modo in due partite potenzialmente identiche finiremmo per filtrare solo quella in cui un dato risultato parziale ha permesso il verificarsi dell'evento sostituzione (appunto condizionale).
    D'altrocanto non filtrarle non sarebbe possibile, perchè condizionano le valutazioni in modo sensibile, ma valutare questo cambiamento delle valutazioni è altrettanto improbabile.
    Ho provato quindi a escludere le partite dove probabilmente erano stati impostati ordini condizionali, controllando tutte le partite della stagione di ogni squadra, ma i risultati sono stati scarsi e peggiori di quelli senza filtri, probabilmente perchè sono state escluse partite con valutazioni dal medio in su mantenendo solo quelle con valutazioni molto basse. Di conseguenza non è al momento impostato nessun aggiustamento a riguardo.

  2. Arretramento
    Problema simile si propone per l'evento arretramento, sia di una che dell'altra squadra, perchè influenza pesantamente le valutazioni e si verifica relativamente spesso.
    Anche qui filtrarle sarebbe per lo più deleterio, ma fortunatamente in questo caso possiamo considerarlo alterando le valutazioni.
    Assumiamo quindi che la perdita in attacco e il guadagno in difesa siano fattori percentuali fissi e che le valutazioni finali siano media ponderata di quelle di ogni minuto di gioco. Valutando il minuto dell'arretramento e fissando il fattore di guadagno/perdita difesa/attacco al 20% riusciamo a considerarlo nelle valutazioni e quindi non filtrare nessuna partita.
    Nota che il 20% è un fattore rilevato da alcune verifiche di altri utenti e verificato in questo stesso database, utilizzando indirettamente la formula calcolata per la realizzazione e considerando azioni di contropiede verificatesi dopo l'evento arretramento e quindi condizionate, ma non causa dell'evento.