The package title no longer begins with the word “Elo”.
Fixed one URL redirect
Added a reference to the help page and vignette forelo.glm().
Breaking changes:
Restricted the version of R to >= 3.6.
Changed the impact of thegroup() formula special inelo.run(). It now indicates when to update Elos.(#54)
Removedelo.run2(), to be replaced by passingarguments toelo.run(). A message is issued when the Rbackend is used.
The[.elo.k() (new) and[.elo.players.matrix() methods now drop any extra classeswhenj= is specified.
Changed a warning to an error infinal.elos() whenusingregressed=TRUE without regression after the lastgame.
elo.glm(),elo.markovchain(),elo.winpct(),elo.colley() now emit NAs forrunning predictions on groups that haven’t been seen yet. (#56)
Other changes:
Addedsubset= argument toauc() andfavored().
Addedignore.skipped=FALSE argument toauc(),favored(), andmse()running methods.
Added attributes tofitted.elo.running(..., running=TRUE) to indicate the group(i.e., model) from which the prediction arises.
Addedelo.run.multiteam() for when matchups consistof multiple teams. (#54)
Improved documentation, including expanding from 1 to 3vignettes
Fixed a bug with theas.data.frame() method forelo.run() whenplayers() are involved.(#55)
Changed howtournament is created (though the datadidn’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 aclassed object.
Addedelo.colley(), with its corresponding helperfunctions.
Allowedk() to take two arguments, to givedifferential updates to “team.A” and “team.B”. This has one user-visibleeffect:as.data.frame.elo.run() now has one more columnthan it did before, and its column names have changed. (#45)
Addedelo.run2(), which allows for customprobabilities and updates, but by default returns the same aselo.run() (except more slowly). (#47)
Added apkgdown site:https://eheinzen.github.io/elo/
Added therunning=TRUE option toelo.glm(). This gives an object of class"elo.running", with corresponding methods forsummary(),fitted(),predict(),mse(),auc(), andfavored().
Addedweights= toelo.glm().
Added support foradjust() inelo.glm()to include adjustments in the logistic regression.
Added a new inline functionneutral(), to denoteneutral field inelo.glm() andelo.markovchain().
Removed therm.ties= argument fromelo.glm(). Ties will have to be removed instead withsubset= or before running the function altogether.
Addedelo.markovchain(), with corresponding methodsforsummary(),fitted(),predict(),mse(),auc(), andfavored(). This also has therunning=TRUEoption.
Addedelo.winpct(), with corresponding methods forsummary(),fitted(),predict(),mse(),auc(), andfavored(). Thisalso has therunning=TRUE option.
Added a function to denote margin of victory, for continuousmodeling inelo.glm(),elo.markovchain(), andelo.winpct():mov().
Addedauc.elo.glm(). (#37)
Madefavored() S3 and addedfavored.elo.glm(). (#38)
Mademse() S3 and addedmse.elo.glm().(#43)
Addedsummary.elo.glm().
Addedpredict.elo.glm().
Addedbrier() as a synonym formse().
Addedrank.teams().
Fixed a bug with adding NAs back in to fitted values andresiduals withna.exclude() inelo.glm() andelo.run(). (#39, #42)
Fixed a bug withadjust() variables not gettingsubsetted correctly withna.action inmodel.frame(). (#40)
Addedis.na.elo.adjust() to test for NAs in theadjustment vector. (#41)
Widened the version dependency to R 3.3.0.
Allowedplayers() matrices inelo.run()to find Elos of individual players playing at the same time.
Addedelo.glm(), a simple function to run logisticregressions on Elo setups.
Fixed a bug in thefavored() function (used insummary.elo.run()). (#29)
Exported and revamped the class structure of the specials allowedin formulas. (#30)
Allowed access toelo.model.frame() even when thepackage 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 toregress() allowing users tostop regressing teams which have stopped playing. (#26)
This version is not backwards compatible!
Changed the signatures ofelo.calc() andelo.update() to match formula interface.
Changedelo.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 befixed. (#16)
Renamedlast() tofinal.elos()(#9).
Changedtournament dataset.
Theelo package now importspROC::auc().
elo.prob() now accepts vectors of team names (likeelo.run()) as input. (#6)
Documentation and the vignette have been updated.
Implementedelo.model.frame(). The output is adata.frame with appropriately named columns.
Implementedpredict.elo.run() andpredict.elo.run.regressed(). (#2, #19)
Addedis.score() to test for “score-ness”.
Implementedsummary.elo.run(), along with helpers tocalculate AUC and MSE (auc() andmse()).(#15)
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 ofelo to CRAN.
Issues and code can be found on GitHub:https://github.com/eheinzen/elo/