Calculate running Elos for a series of multi-team matches.

elo.run.multiteam(
  formula,
  data,
  na.action,
  subset,
  k = NULL,
  initial.elos = NULL,
  ...
)

Arguments

formula

A one-sided formula with a multiteam() object. See also the the help page for formulas for details.

data

A data.frame in which to look for objects in formula.

na.action

A function which indicates what should happen when the data contain NAs.

subset

An optional vector specifying a subset of observations.

k

A constant k-value (or a vector, where appropriate).

initial.elos

An optional named vector containing initial Elo ratings for all teams in formula. If a single (unnamed) value is supplied, that value is applied to all teams. NULL (the default) sets all Elos to 1500.

...

Other arguments (not used at this time).

Details

This is like elo.run (and in fact it runs elo.run in the background). The formula takes a multiteam() object, which assumes that teams "win" in a well-ordered ranking. It assumes that the first place team beats all other teams, that the second place team loses to the first but beats the others, etc. In that regard, elo.run.multiteam reduces to elo.run when the number of teams (ncol(multiteam())) is 2

However, this is less flexible than elo.run, because (1) there cannot be ties; (2) it does not accept adjustments; and (3) k is constant within a "game"

Examples

data(tournament.multiteam)
elo.run.multiteam(~ multiteam(Place_1, Place_2, Place_3, Place_4),
                  data = tournament.multiteam, subset = -28, k = 20)
#> 
#> An object of class 'elo.run.multiteam', containing information on 8 teams and 27 matches.
#>