elo
formulas and the specials thereinDetails on elo
functions and the special functions allowed in them to change functions' behaviors.
players(..., weights = NULL)multiteam(...)
k(x, y = NULL)
adjust(x, adjustment)
regress(x, to, by, regress.unused = TRUE)
group(x)
neutral(x)
Vectors to be coerced to character, which comprise of the players of a team.
A vector giving the weights of Elo updates for the players in ...
. Ignored for
elo.glm
.
A vector.
A single value or a vector of the same length as x
: how much to adjust the Elos in x
.
Numeric: what Elo to regress to. Can be a single value or named vector the same length as the number of teams.
Numeric: by how much should Elos be regressed toward to
.
Logical: whether to continue regressing teams which have stopped playing.
In the functions in this package, formula
is usually of the form wins.A ~ elo.A + elo.B
,
where elo.A
and elo.B
are vectors of Elos, and wins.A
is between 0 and 1,
denoting whether team A (Elo A) won or lost (or something between). elo.prob
also allows
elo.A
and elo.B
to be character or factors, denoting which team(s) played. elo.run
requires elo.A
to be a vector of teams or a players matrix from players()
(sometimes denoted by "team.A"
), but elo.B
can be either a vector of teams or
players matrix ("team.B"
) or else a numeric column (denoting a fixed-Elo opponent).
elo.glm
requires both to be a vector of teams or players matrix. elo.markovchain
requires both to be a vector of teams.
formula
accepts six special functions in it:
k()
allows for complicated Elo updates. For
constant Elo updates, use the k =
argument instead of this special function.
Note that elo.markovchain
uses this function (or argument) as a convenient
way of specifying transition probabilities. elo.colley
uses this to indicate
the fraction of a win to be assigned to the winning team.
adjust()
allows for Elos to be adjusted for, e.g., home-field advantage. The second argument
to this function can be a scalar or vector of appropriate length. This can also be used in
elo.glm
and elo.markovchain
as an adjuster to the logistic regressions.
regress()
can be used to regress Elos back to a fixed value
after certain matches. Giving a logical vector identifies these matches after which to
regress back to the mean. Giving any other kind of vector regresses after the appropriate
groupings (see, e.g., duplicated(..., fromLast = TRUE)
). The other three arguments determine
what Elo to regress to (to =
), by how much to regress toward that value
(by =
), and whether to continue regressing teams which have stopped playing (regress.unused
,
default = TRUE
).
group()
is used to group matches (by, e.g., week). For elo.run
, Elos are not updated until
the group changes. It is also fed to as.matrix.elo.run
, giving the number of rows to return.
to produce only certain rows of matrix output. It also determines how many models to run (and on what data)
for elo.glm
and elo.markovchain
when running=TRUE
.
neutral()
is used in elo.glm
and elo.markovchain
to determine the intercept.
In short, the intercept is 1 - neutral()
, denoting home-field advantage. Therefore, the column
passed should be 0 (denoting home-field advantange) or 1 (denoting a neutral game). If omitted, all matches
are assumed to have home field advantage.
players()
is used for multiple players on a team contributing to an overall Elo. The Elo updates
are then assigned based on the specified weights. The weights are ignored in elo.glm
.
multiteam()
is used for matchups consisting of multiple teams and is only valid in elo.run.multiteam
.