elo: The Elo Rating System

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.

Usage

1
2
elo(x, status = NULL, init = 2200, gamma = 0, kfac = 27, 
    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 and Lag, which are set to zero 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 two arguments, the first being the ratings and the second being the number of games played. See kfide, kgames and krating for examples.

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 has a simple initialization, and allows the K factor to depend on both the ratings and the number of games played. Default values are roughly optimized the chess data analyzed in the file doc/ChessRatings.pdf, using the binomial deviance criterion and considering only constant K factors. See the function fide for a different implementation.

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. This 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.

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

fide, glicko, kfide

Examples

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

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

Example output

Elo Ratings For 18 Players Playing 675 Games

                      Player Rating Games Win Draw Loss Lag
1        Collingwood Magpies   2478    88  68    2   18   0
2               Geelong Cats   2399    87  68    0   19   0
3             Hawthorn Hawks   2337    82  48    1   33   1
4          West Coast Eagles   2296    81  39    0   42   0
5               Sydney Swans   2292    82  44    1   37   0
6            St Kilda Saints   2255    86  57    3   26   1
7           Essendon Bombers   2227    80  37    2   41   0
8             Adelaide Crows   2226    80  40    0   40   0
9              Carlton Blues   2226    82  45    1   36   1
10 North Melbourne Kangaroos   2181    78  34    1   43   0
11          Western Bulldogs   2171    84  45    0   39   0
12         Fremantle Dockers   2159    80  35    0   45   0
13           Richmond Tigers   2143    78  25    2   51   1
14            Brisbane Lions   2082    80  30    1   49   0
15    Greater Western Sydney   2078    12   1    0   11   0
16          Melbourne Demons   2052    78  22    2   54   0
17       Port Adelaide Power   2043    78  26    0   52   1
18           Gold Coast Suns   1954    34   3    0   31   1


Elo Ratings For 18 Players Playing 675 Games

                      Player Rating Games Win Draw Loss Lag
1        Collingwood Magpies   2478    88  68    2   18   0
2               Geelong Cats   2399    87  68    0   19   0
3             Hawthorn Hawks   2337    82  48    1   33   1
4          West Coast Eagles   2296    81  39    0   42   0
5               Sydney Swans   2292    82  44    1   37   0
6            St Kilda Saints   2255    86  57    3   26   1
7           Essendon Bombers   2227    80  37    2   41   0
8             Adelaide Crows   2226    80  40    0   40   0
9              Carlton Blues   2226    82  45    1   36   1
10 North Melbourne Kangaroos   2181    78  34    1   43   0
11          Western Bulldogs   2171    84  45    0   39   0
12         Fremantle Dockers   2159    80  35    0   45   0
13           Richmond Tigers   2143    78  25    2   51   1
14            Brisbane Lions   2082    80  30    1   49   0
15    Greater Western Sydney   2078    12   1    0   11   0
16          Melbourne Demons   2052    78  22    2   54   0
17       Port Adelaide Power   2043    78  26    0   52   1
18           Gold Coast Suns   1954    34   3    0   31   1

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