- Fixed a weird
xtfrm()
bug inelo.run()
. (#61)
- Fixed a CRAN comment about the package documentation.
-
The package title no longer begins with the word "Elo".
-
Fixed one URL redirect
-
Added a reference to the help page and vignette for
elo.glm()
.
Breaking changes:
-
Restricted the version of R to >= 3.6.
-
Changed the impact of the
group()
formula special inelo.run()
. It now indicates when to update Elos. (#54) -
Removed
elo.run2()
, to be replaced by passing arguments toelo.run()
. A message is issued when the R backend is used. -
The
[.elo.k()
(new) and[.elo.players.matrix()
methods now drop any extra classes whenj=
is specified. -
Changed a warning to an error in
final.elos()
when usingregressed=TRUE
without regression after the last game. -
elo.glm()
,elo.markovchain()
,elo.winpct()
,elo.colley()
now emit NAs for running predictions on groups that haven't been seen yet. (#56)
Other changes:
-
Added
subset=
argument toauc()
andfavored()
. -
Added
ignore.skipped=FALSE
argument toauc()
,favored()
, andmse()
running methods. -
Added attributes to
fitted.elo.running(..., running=TRUE)
to indicate the group (i.e., model) from which the prediction arises. -
Added
elo.run.multiteam()
for when matchups consist of multiple teams. (#54) -
Improved documentation, including expanding from 1 to 3 vignettes
-
Fixed a bug with the
as.data.frame()
method forelo.run()
whenplayers()
are involved. (#55) -
Changed how
tournament
is created (though the data didn't actually change). -
Made some methods more explicit:
length.elo.k()
,is.na.elo.k()
,[.elo.k()
,is.na.elo.players.matrix()
-
Made one fix for R-devel related to subsetting a vector with a classed object.
- Fixed the "Date" in DESCRIPTION.
-
Added
elo.colley()
, with its corresponding helper functions. -
Allowed
k()
to take two arguments, to give differential updates to "team.A" and "team.B". This has one user-visible effect:as.data.frame.elo.run()
now has one more column than it did before, and its column names have changed. (#45) -
Added
elo.run2()
, which allows for custom probabilities and updates, but by default returns the same aselo.run()
(except more slowly). (#47) -
Added a
pkgdown
site: https://eheinzen.github.io/elo/
-
Added the
running=TRUE
option toelo.glm()
. This gives an object of class"elo.running"
, with corresponding methods forsummary()
,fitted()
,predict()
,mse()
,auc()
, andfavored()
. -
Added
weights=
toelo.glm()
. -
Added support for
adjust()
inelo.glm()
to include adjustments in the logistic regression. -
Added a new inline function
neutral()
, to denote neutral field inelo.glm()
andelo.markovchain()
. -
Removed the
rm.ties=
argument fromelo.glm()
. Ties will have to be removed instead withsubset=
or before running the function altogether. -
Added
elo.markovchain()
, with corresponding methods forsummary()
,fitted()
,predict()
,mse()
,auc()
, andfavored()
. This also has therunning=TRUE
option. -
Added
elo.winpct()
, with corresponding methods forsummary()
,fitted()
,predict()
,mse()
,auc()
, andfavored()
. This also has therunning=TRUE
option. -
Added a function to denote margin of victory, for continuous modeling in
elo.glm()
,elo.markovchain()
, andelo.winpct()
:mov()
.
-
Added
auc.elo.glm()
. (#37) -
Made
favored()
S3 and addedfavored.elo.glm()
. (#38) -
Made
mse()
S3 and addedmse.elo.glm()
. (#43) -
Added
summary.elo.glm()
. -
Added
predict.elo.glm()
. -
Added
brier()
as a synonym formse()
. -
Added
rank.teams()
.
-
Fixed a bug with adding NAs back in to fitted values and residuals with
na.exclude()
inelo.glm()
andelo.run()
. (#39, #42) -
Fixed a bug with
adjust()
variables not getting subsetted correctly withna.action
inmodel.frame()
. (#40) -
Added
is.na.elo.adjust()
to test for NAs in the adjustment vector. (#41)
-
Widened the version dependency to R 3.3.0.
-
Allowed
players()
matrices inelo.run()
to find Elos of individual players playing at the same time. -
Added
elo.glm()
, a simple function to run logistic regressions on Elo setups. -
Fixed a bug in the
favored()
function (used insummary.elo.run()
). (#29) -
Exported and revamped the class structure of the specials allowed in formulas. (#30)
-
Allowed access to
elo.model.frame()
even when the package isn't loaded. (#34) -
Allowed regression to different values for each team. (#35)
-
Fixed a bug with initial Elos and deep copying in C++. (#25)
-
Added an argument to
regress()
allowing users to stop regressing teams which have stopped playing. (#26)
This version is not backwards compatible!
-
Changed the signatures of
elo.calc()
andelo.update()
to match formula interface. -
Changed
elo.calc()
,elo.update()
, andelo.prob()
to S3 generics, and implemented formula methods. The default methods now include options to adjust Elos. (#3) -
elo.run()
:-
elo.run()
no longer accepts numeric values forteam.A
. -
elo.run()
now accepts special functionsgroup()
andregress()
. If the latter is used, the class of the returned object becomes"elo.run.regressed"
. (#11, #12, #19, #22) -
The
$elos
component of"elo.run"
objects has been completely reworked, and now uses 1-based indexing. Because of this, theprint.elo.run()
method also had to be fixed. (#16)
-
-
Renamed
last()
tofinal.elos()
(#9). -
Changed
tournament
dataset.
-
The
elo
package now importspROC::auc()
. -
elo.prob()
now accepts vectors of team names (likeelo.run()
) as input. (#6) -
Documentation and the vignette have been updated.
-
Implemented
elo.model.frame()
. The output is adata.frame
with appropriately named columns. -
Implemented
predict.elo.run()
andpredict.elo.run.regressed()
. (#2, #19) -
Added
is.score()
to test for "score-ness". -
Implemented
summary.elo.run()
, along with helpers to calculate AUC and MSE (auc()
andmse()
). (#15)
- Fixed a spelling error in DESCRIPTION.
-
Made the title more succinct.
-
Elaborated the description of the package.
-
Tweak the internal
"elo.run"
object. -
Tweaked the README and vignette.
-
Submit first version of
elo
to CRAN. -
Issues and code can be found on GitHub: https://github.com/eheinzen/elo/