FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 
 ProfileProfile   PreferencesPreferences   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Reply to topic Go to page 1, 2  Next
View previous topic :: View next topic  
Author Message
foul_ole_ron
PostPosted: Wed Jul 12, 2006 20:08    Post subject: Nice, provisional ratings... Reply with quote



Maybe I should try to lose?

Nah Wink But weird it is...
Back to top
Glorfindel
PostPosted: Wed Jul 12, 2006 22:07    Post subject: Reply with quote

Yes, that's often the case with provisional ratings. But if you lose, it will affect your (provisional) rating in a negative way a couple of games later.
Back to top
florrat
PostPosted: Wed Jul 12, 2006 22:51    Post subject: Reply with quote

Unlucky that you can't have draw with dots and boxes rofl
Back to top
Zapmeister
PostPosted: Thu Jul 13, 2006 4:37    Post subject: Reply with quote

Glorfindel wrote:
Yes, that's often the case with provisional ratings. But if you lose, it will affect your (provisional) rating in a negative way a couple of games later.


It seems like a really strange system. What is the point of any kind of rating if it doesn't convey information about whether you've been winning or losing your games?
Back to top
foul_ole_ron
PostPosted: Thu Jul 13, 2006 5:50    Post subject: Reply with quote

It's only provisional. It's weird, and I don't understand it either, but once you've got an established rating it will behave normally.

Glorfindel, maybe you can explain how the provisional ratings are calculated?
Back to top
bramOffline
Superadmin
Superadmin
Avatar

Joined: 14 Jul 2005
Total posts: 1068
Gender: Unknown
Netherlands
PostPosted: Thu Jul 13, 2006 8:11    Post subject: Reply with quote

Code:
var oppav=Math.round((avratingopp*total+ratingopp)/(total+1));
if (status=="win"){var p=(2*(won+1)+draw)/(2*(total+1));}
if (status=="draw"){var p=(2*won+draw+1)/(2*(total+1));}
if (status=="loose"){var p=(2*won+draw)/(2*(total+1));}
p=Math.round(100*p)/100;
var f=Math.round(10000*(-2*p*p+2*p+0.5))/10000;
if (p==1){var erc=400;}
else {if (p==0){var erc=-400;}
else{var erc=Math.round(-400*(Math.log((1-p)/p)/Math.LN10));}}
var rating=Math.round(oppav+(erc*f));
if (status=="loose" && rating>ratinguser+100) {rating=ratinguser+100;}
Back to top
View user's profile 
foul_ole_ron
PostPosted: Fri Jul 14, 2006 8:26    Post subject: Reply with quote

OK, I'll accept the challenge and document your code for you Wink

Code:

// Variables already defined (my example in []):
// - total = total # played games (before this one) [6]
// - won/draw/loose = statistics up to this game [6/0/0]
// - ratingopp = current rating opponent [1500]
// - avratingopp = Average rating opponents up to this game
//    [(1500*5+1700)/6)=1533]
// - ratinguser = own current rating [1733]

// New average (rounded down) = (1533*6+1500)/7 = 1529
var oppav=Math.round((avratingopp*total+ratingopp)/(total+1));

// Obviously, win counts for 2, draw for 1, lose for 0.
// p = #"win-points", normalized to 0-1.
if (status=="win")   // [ p = 14/14 = 1]
   {var p=(2*(won+1)+draw)/(2*(total+1));}

if (status=="drwa")   // [ p = 13/14 = 0.928571]
   {var p=(2*won+draw+1)/(2*(total+1));} // [ (2w+1)/(2T+2)]

if (status=="loose")   // [ p = 10/12 = 0.857143]
   {var p=(2*won+draw)/(2*(total+1));}   // [ (2w + 0)/(2T+2)]

// Round to 2 digits (why?)
p=Math.round(100*p)/100;  [ p = {1.00|0.93|0.86}]


// Up to here it's logical. But then:

// WTH? f = 2*(p - p^2) + 0.5 = 2p(1-p) + 0.5, rounded to 4 digits
// [f = {0.5000|0.6302|0.7408} for win|draw|lose]
var f=Math.round(10000*(-2*p*p+2*p+0.5))/10000;

// This looks a lot like the TPR code...
if (p==1)   // Won everything including this game
   { var erc=400;}
else
{
      if (p==0)  // Lost everything including this game
         { var erc=-400;}
      else       // erc = -400*ln((1-p)/p)
         { var erc=Math.round(-400*(Math.log((1-p)/p)/Math.LN10));}
}
// [erc = {400|449|315}] - BTW: shouldn't the values (draw, here) be maximized to 400?

// ... except there's that f factor, which is lower for win, higher for loss.
// [rating = {1729|1812|1762}]
var rating=Math.round(oppav+(erc*f));

// if lost, max. 100 points rise
if (status=="loose" && rating>ratinguser+100)
  {rating=ratinguser+100;}



So the provisional rating is like a corrected TPR. The log formula scales p [0,1] to [+inf,-inf], with the end points overridden to +400 and -400. I don't know if this is a standard TPR calculation or you made it up yourself.

What I don't understand is the correction factor f. It's a parabola which introduces a correction minimal at "all loss" or "all win" - in fact it is maximized on "all draw". It's this factor that causes the "1 loss" score to be higher than the "all win" score.

What causes the draw score to be so high is the "erc". The erc for "all win" is limited to 400, which is logical because it would be infinite if you'd just use the formula. However, the erc for "1 draw, lots of wins" is higher than 400.

2 ways to tackle this:
- limit erc to 400 max (this way "1 draw" erc would be equal to "all win")
- (this I like better) calculate the "all win" erc as a linear extrapolation, with the same step between "1 draw" and "all win" as between "1 loss" and "1 draw". In this case, the "all win" erc would be 449 + (449-315) = 583.

Edit: When I calculate the rating with that last "solution", it would be way too high. You could limit this artificially, but a simpler and more elegant way might be to scale the p-value not to [0,1] but to [0.1 , 0.9] (or something similar) in the beginning of the algoritm. In this way you avoid the infinities, and you don't have to use artificial boundaries at all.
Back to top
bramOffline
Superadmin
Superadmin
Avatar

Joined: 14 Jul 2005
Total posts: 1068
Gender: Unknown
Netherlands
PostPosted: Fri Jul 14, 2006 19:32    Post subject: Reply with quote

our rating formula is taken from the IECG:

http://www.iecg.org/Ratrul.htm
Back to top
View user's profile 
foul_ole_ron
PostPosted: Fri Jul 14, 2006 20:05    Post subject: Reply with quote

I see - except that the "all win" and "all lose" erc-values [D(p)] aren't limited to +/-400, but +/- 800 which is even more extreme than my 583:

Quote:

The expected rating changes based on the percentage result is
given by

D(p) = -400 * log10((1-p)/p)

where

D(p) is the expected rating change
p is the percentage result of the player

and D(0) = -800 and D(1)= 800

[emphasis mine]

The "win" rating would be 1529 + 800*0.5 = 1929. Maybe the "interpolation" idea isn't so bad after all Wink
Back to top
bramOffline
Superadmin
Superadmin
Avatar

Joined: 14 Jul 2005
Total posts: 1068
Gender: Unknown
Netherlands
PostPosted: Sat Jul 15, 2006 12:53    Post subject: Reply with quote

I seem to have adapted it a bit Smile

I created the ratingformule 4-5 years ago, So I even do not remember how and why I did end up with this one, But it seems to work rather well Smile
Back to top
View user's profile 
foul_ole_ron
PostPosted: Thu Jul 20, 2006 12:46    Post subject: Reply with quote

<RANT>
I've got the first "active" rating: 1703 with 15 out of 15 wins. If I had resigned my game against ruben (1700), it would have been more like 1800 Sad
</RANT>

OK, I'll quit now... Wink
Back to top
Zapmeister
PostPosted: Tue Jul 25, 2006 3:58    Post subject: Reply with quote

foul_ole_ron wrote:
<RANT>
I've got the first "active" rating: 1703 with 15 out of 15 wins. If I had resigned my game against ruben (1700), it would have been more like 1800 Sad
</RANT>

OK, I'll quit now... Wink


foul_ole_ron is right - a rating should reflect playing strength, as exposed by wins and losses. If you can increase your rating by resigning rather than winning, then the rating formula is clearly not doing its job.
Back to top
rowan
PostPosted: Sun Aug 31, 2008 8:35    Post subject: Reply with quote

Same problem:


Winning all of them (and the coming 7 matches probably also) and just getting lower and lower Sad...

Btw if your 14th is played and your 15th match shows that you get a higher rating when you lose then what's the best option to get the highest rating possible in the future ? Just win or just lose Rolling Eyes?
Back to top
Aldiris
PostPosted: Mon Sep 01, 2008 9:29    Post subject: Reply with quote

rowan wrote:
Same problem:

(image)

Winning all of them (and the coming 7 matches probably also) and just getting lower and lower Sad...

Btw if your 14th is played and your 15th match shows that you get a higher rating when you lose then what's the best option to get the highest rating possible in the future ? Just win or just lose Rolling Eyes?


With 14 wins and a draw (or a lost game if a draw is not possible) you'll get the highest rating after 15 games. After that, rating gain/loss won't be affected (directly) by previous games. I'm not sure if the order matters (i.e. first lose and then win 14 in a row is different from winning 14 and losing then).
Back to top
wccanard
PostPosted: Mon Sep 01, 2008 12:41    Post subject: Reply with quote

When I thought about this a year or so ago I think that my conclusions were that bram's "adaptation" of the standard formula meant that the best thing to do was lose (or, better, draw, if a draw is possible) one of your first 15 games (doesn't matter which one) and win all the rest, and, from then on, always win. The formula for rating computation changes completely after 15 games and, after it has changed, your rating will always move in the "intuitive" direction.
Back to top
Display posts from previous:   
Reply to topic All times are GMT + 1 Hour
Go to page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group