Association Football (Soccer) Ranking via Poisson Regression

This package uses time dependent Poisson regression and a record of goals scored in matches to rank teams via estimated attack and defense strengths. The statistical model is based on Dixon and Coles (1997) Modeling Association Football Scores and Inefficiencies in the Football Betting Market, Applied Statistics, Volume 46, Issue 2, 265-280. The package has a some webscrapers to assist in the development and updating of a match database. If the match database contains unconnected clusters (i.e. sets of teams that have only played each other and not played teams from other sets), each cluster is ranked separately relative to the median team strength in the cluster. The package contains functions for predicting and simulating tournaments and leagues from estimated models. The package allows fitting via the glm(), speedglm(), and glmnet() functions. The latter allows fast and efficient fitting of very large numbers of teams. The fitting algorithm will analyze the match data and determine which teams form a cluster (a set of teams where there is a path of matches connecting every team) and fit each cluster separately.


fbRanks 2.0 (10-14-2013)

  • Added fun="speedglm" and "glmnet" to allow fitting of models with speedglm() and glmnet() via packages speedglm and glmnet respectively.
  • Added more scrapers. See ?scrape.matches
  • Added coef.fbRanks function to return coefficient vectors and lists
  • Removed fun="glmer" because random effects approach doesn't work due to strong correlation between attack and defend random effects.
  • Changed predict.fbRanks to compute predictions from coefficients rather than use predict() for glm (or speedglm) objects. Faster. predict.fbRanks() still uses simulation to get probability of win rather than computing this analytically.
  • Changed residuals.fbRanks. residuals for each game are added to scores data.frame that is part of each fit. This is excessive use of memory but alas. residuals.fbRanks uses that to return a list of residuals broken out by team. This list is used for plotting.

fbRanks 1.1 (4-1-2013)

  • Fixed bug that caused printing to fail if no team dataframe passed into rank.teams()
  • Fixed Basic_team_ranking vignette so user can copy and paste commands into their command line and it will work.
  • Edited the rank.teams.Rd man file to direct users to the Basic_team_ranking vignette.

fbRanks 1.0 (3-28-2013)

  • Released

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


2.0 by E Holmes, 8 years ago

Browse source code at

Authors: Eli Holmes

Documentation:   PDF Manual  

Task views:

GPL-2 license

Imports igraph, stringr

Depends on stats

Suggests RJSONIO, RCurl, httr, XML, Rlab, xtable, tcltk, speedglm, glmnet

See at CRAN