fide: The Elo Rating System Employed By The FIDE

Description Usage Arguments Details Value References See Also Examples

Description

Implements the Elo rating system for estimating the relative skill level of players in two-player games such as chess, implementing a version similar to that employed by the FIDE.

Usage

1
2
fide(x, status = NULL, init = 2200, gamma = 0, kfac = kfide, 
    history = FALSE, sort = TRUE, ...)

Arguments

x

A data frame containing four variables: (1) a numeric vector denoting the time period in which the game took place (2) a numeric or character identifier for player one (3) a numeric or character identifier for player two and (4) the result of the game expressed as a number, typically equal to one for a player one win, zero for a player two win and one half for a draw.

status

A data frame with the current status of the system. If not NULL, this needs to be a data frame in the form of the ratings component of the returned list, containing variables named Player, Rating, and optionally Games, Win, Draw, Loss Lag and Elite, which are set to zero if not given, and Opponent, which is set to the player rating if not given.

init

The rating at which to initialize a new player not appearing in status. Must be a single number. If different initializations for different players are required, this can be done using status.

gamma

A player one advantage parameter; either a single value or a numeric vector equal to the number of rows in x. Positive values favour player one, while negative values favour player two. This could represent the advantage of playing at home, or the advantage of playing white for chess. Note that this is not passed to predict.rating, which has its own gamma parameter.

kfac

The K factor parameter. Can be a single number or a vectorized function of three arguments, the first being the ratings, the second being the number of games played, and the third being a binary indicator for whether or not a player has ever achieved a rating above 2400. See kfide, kgames and krating for examples. The function kfide is used by default.

history

If TRUE returns the entire history for each period in the component history of the returned list.

sort

If TRUE sort the results by rating (highest to lowest). If FALSE sort the results by player.

...

Passed to the function kfac.

Details

The Elo rating system is a simple method for evaluating the skill of players. It has been used since around 1960 and is still employed in various settings. Although the basic form uses only the ratings, additional complexity is commonly introduced by adding a player one advantage parameter and by using different K factors. A player one advantage parameter has been added to the original definition in the reference. A player one advantage parameter is also used for prediction purposes in predict.rating.

This implementation uses default arguments that are consistent with the implementation of FIDE for rating chess players. It does not employ the initialization used by FIDE. For the chess data analyzed in the file doc/ChessRatings.pdf, prediction performance is poor because the default values of the K factors are too low. This can be altered using the kv argument which is passed to the function kfide.

Value

A list object of class "rating" with the following components

ratings

A data frame of the results at the end of the final time period. The variables are self explanatory except for Lag, which represents the number of time periods since the player last played a game, Elite, which is a binary indicator for whether or not a player has ever reached 2400, and Opponent, which gives the average rating of all opponents. The Lag variable is equal to zero for players who played in the latest time period, and is also zero for players who have not yet played any games. The Elite variable is required due to the K factor dependency in the FIDE implementation. The Opponent variable is not currently used in the updating algorithm.

history

A three dimensional array, or NULL if history is FALSE. The row dimension is the players, the column dimension is the time periods. The third dimension gives different parameters.

gamma

The player one advantage parameter.

kfac

The K factor or K factor function.

type

The character string "Elo".

References

Elo, Arpad (1978) The Rating of Chessplayers, Past and Present. Arco. ISBN 0-668-04721-6.

See Also

elo, kfide

Examples

1
2
3
4
5
6
7
afl <- aflodds[,c(2,3,4,7)]
robj <- fide(afl)
robj

robj <- fide(afl[afl$Week==1,])
for(i in 2:max(afl$Week)) robj <- fide(afl[afl$Week==i,], robj$ratings)
robj

Example output

Elo Ratings For 18 Players Playing 675 Games

                      Player Rating Games Win Draw Loss Lag Elite Opponent
1        Collingwood Magpies   2423    88  68    2   18   0     1 2209.204
2               Geelong Cats   2393    87  68    0   19   0     1 2206.335
3            St Kilda Saints   2319    86  57    3   26   1     1 2195.487
4             Hawthorn Hawks   2280    82  48    1   33   1     0 2206.462
5               Sydney Swans   2259    82  44    1   37   0     0 2206.191
6          West Coast Eagles   2236    81  39    0   42   0     0 2202.574
7              Carlton Blues   2235    82  45    1   36   1     0 2200.602
8           Western Bulldogs   2206    84  45    0   39   0     0 2207.570
9             Adelaide Crows   2201    80  40    0   40   0     0 2204.698
10          Essendon Bombers   2195    80  37    2   41   0     0 2202.610
11 North Melbourne Kangaroos   2173    78  34    1   43   0     0 2197.795
12         Fremantle Dockers   2169    80  35    0   45   0     0 2204.734
13            Brisbane Lions   2111    80  30    1   49   0     0 2201.544
14           Richmond Tigers   2099    78  25    2   51   1     0 2204.341
15       Port Adelaide Power   2075    78  26    0   52   1     0 2196.762
16    Greater Western Sydney   2065    12   1    0   11   0     0 2175.319
17          Melbourne Demons   2063    78  22    2   54   0     0 2205.022
18           Gold Coast Suns   1955    34   3    0   31   1     0 2208.752


Elo Ratings For 18 Players Playing 675 Games

                      Player Rating Games Win Draw Loss Lag Elite Opponent
1        Collingwood Magpies   2423    88  68    2   18   0     1 2209.204
2               Geelong Cats   2393    87  68    0   19   0     1 2206.335
3            St Kilda Saints   2319    86  57    3   26   1     1 2195.487
4             Hawthorn Hawks   2280    82  48    1   33   1     0 2206.462
5               Sydney Swans   2259    82  44    1   37   0     0 2206.191
6          West Coast Eagles   2236    81  39    0   42   0     0 2202.574
7              Carlton Blues   2235    82  45    1   36   1     0 2200.602
8           Western Bulldogs   2206    84  45    0   39   0     0 2207.570
9             Adelaide Crows   2201    80  40    0   40   0     0 2204.698
10          Essendon Bombers   2195    80  37    2   41   0     0 2202.610
11 North Melbourne Kangaroos   2173    78  34    1   43   0     0 2197.795
12         Fremantle Dockers   2169    80  35    0   45   0     0 2204.734
13            Brisbane Lions   2111    80  30    1   49   0     0 2201.544
14           Richmond Tigers   2099    78  25    2   51   1     0 2204.341
15       Port Adelaide Power   2075    78  26    0   52   1     0 2196.762
16    Greater Western Sydney   2065    12   1    0   11   0     0 2175.319
17          Melbourne Demons   2063    78  22    2   54   0     0 2205.022
18           Gold Coast Suns   1955    34   3    0   31   1     0 2208.752

PlayerRatings documentation built on March 1, 2020, 5:07 p.m.