Wednesday, April 21, 2010

O-Scores calculation methodology

External links:
http://www.attackpoint.org/discussionthread.jsp/message_149323 discussion about GV calculation

Original Methology post at Geocities is no longer available and I do not know where it was moved.
http://www.geocities.com/nikdangerdvm/03methods.html - original write-up of the GV algorithm calculations.

Methodology was called by many people as cumbersome and I will try to explain here in my words.
I will quote the Methodology where applicable and explain practical application details.

Originally Adapted for USOF from Wyatt Riley's BAOC ranking rules, 1999.
One more time adapted by S. Krechetov 
Definitions:  
There are four items here and they all depend on each other. Must be consumed as a whole dish. Don’t get disappointed until done reading.
  1. Runner Local Power (RLP)   = Race Gnarliness Value (GV) divided by Runners Time (RT)
RLPir = GVr /RTir; where r is running over all races (1..NR) and i is running over all runners (1.. NI)
 Example: GV is 5000, your time was 1:40:00 or 100 minutes. Your  RLP for that race is 5000/100 = 50.
  1. Runner Global Power  (RGP)   = plain average of Runner Local Power (RLP) over all races
RGPi = 1/NR*sumr(RLPir)
  1. Runners Race Difficulty (RRD) =  Runner Global Power (RGP)  multiplied by  Runners Time (RT)
RRDir = RGPi*RTr;
Example: If your RGP = 80, and your RT = 60 minutes, your RRD would be 80*60=4800
  1. Race Gnarliness Value (GV)  =  harmonic average (reciprocal of  average of reciprocal values ) of Runners Race Difficulties (RRD) for all runners in current race
1/GVr = 1/ NI *sumi(1/ RRDir);
Example:
·         John  has  RGP = 100 and runs RACE in 30 min. (RRD = 100 * 30 = 3000)
·         Mary has  RGP = 60 and runs RACE in 100 min. (RRD = 60 * 100 = 6000)
·         1/ GV = ½ (1/(100*30) + 1/(60*100)) = 1/4000
Then
·         GV = 4000

Some observations:
  • If you are on average twice as fast as somebody, you should end up with about twice their score.
Practical Implementation details.
  • Input data for the algorithm are three columns: Person, Race and Time.  No other information is needed
  • All valid finishes of the season are used. Valid finishes are times (not OT, DNF, MSP, etc...).
  • Algorithm is recursive over items 1-4. Must be stopped after next iteration changes results by negligible amount.
  • Initial conditions are Runner Local Power (RLP) which can be set to any positive nonzero number
  • Algorithm converges to the same point independently on initial conditions. For simplicity  all runners can be given RLP  = 100 at first step
  • Algorithm is linear relative to initial conditions. Meaning that if all initial  RLP are increased by factor F, the resulting GV, and RGP will be increased by the same factor.
  • The only nontrivial output of the algorithm is set of GV, which is one number per race. The rest of the results can be immediately derived from GV and Runners Times (RT)
  • At the last step, all RGP RGP, GV are normalized so that  1/ NI*sumi(RGPi) = 50 and the rest of the quantities are changed proportionally.
Additional Notes
  • Final RLPir is score of the runner for this race. Using scores one can calculate various Ranking scores. (RS) characterizing performance of particular runner in this particular discipline.
    • pick top 4 scores  and average them (No Tail)
    • pick 4 scores and half of the rest and average them (Tail)
    • pick only A meet scores and  perform Tail or No-Tail calculations
    • pick only A-meet Sprints and perform Tail or No-Tail calculations
    • Pick everything but Sprints and  perform Tail or No-Tail calculations
    • Pick only Extra Long races and  perform Tail or No-Tail calculations
    • Pick only races of this particular Color and perform Tail or No-Tail calculations
    • Pick only races organized by this particular club and perform Tail or No-Tail calculations
    • Pick only A meet races and only one Color of Races, perform "Tail" calculation with them (USOF scores)

All above mentioned possibilities and more are implemented in the O-scores database interface

No comments:

Post a Comment