Introduction

library(knitr)
library(MASS)
dates <- c("2015-01-30","2015-02-06","2015-02-13","2015-02-20","2015-02-27")
date.1 <- tail(dates,1)
forecast.matches <- read.csv(paste("forecasts_",date.1,".csv",sep=""),stringsAsFactors=F)
forecast.matches <- forecast.matches[is.na(forecast.matches$outcome)==F,]

This is the number 5 in a series of forecasts of football match outcomes, following on from my efforts last week and the previous weeks. The method of forecasts is unchanged from previous week. For next week I hope to add bookmaker prices in for reference purposes.

Loading the Data

As with previous weeks, the dataset is all English matches recorded on http://www.soccerbase.com, which goes back to 1877 and the very first football matches.  Experimentation will take place with adjusting the estimation sample size, since it is not necessarily useful to have all matches back to 1877 when forecasting matches in 2015.  The Elo ranks have been calculated since the very first matches, and hence historical information is retained, to the extent that it is useful in determining a team’s current strength, back throughout footballing history.

Forecast Model

The linear regression model is estimated here and reported:

res.eng <- read.csv(paste("historical_",date.1,".csv",sep=""))
model <- lm(outcome ~ E.1 + pts1 + pts.D + pts.D.2 + pld1 + pld.D + pld.D.2 + gs1 + gs.D + gs.D.2 
            + gd1 + gd.D + gd.D.2 
            + pos1 + pos.D + pos.D.2 + form1 + form.D + form.D.2 + tier1 + tier.D + tier.D.2 + season.d,
            data=res.eng)
summary(model)
## 
## Call:
## lm(formula = outcome ~ E.1 + pts1 + pts.D + pts.D.2 + pld1 + 
##     pld.D + pld.D.2 + gs1 + gs.D + gs.D.2 + gd1 + gd.D + gd.D.2 + 
##     pos1 + pos.D + pos.D.2 + form1 + form.D + form.D.2 + tier1 + 
##     tier.D + tier.D.2 + season.d, data = res.eng)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.9940 -0.2859  0.1439  0.3535  0.9893 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.799e-01  5.227e-03 110.951  < 2e-16 ***
## E.1          4.850e-02  5.051e-03   9.601  < 2e-16 ***
## pts1         1.025e-03  4.318e-04   2.374  0.01758 *  
## pts.D       -1.440e-03  3.136e-04  -4.593 4.38e-06 ***
## pts.D.2     -1.342e-05  6.591e-06  -2.037  0.04168 *  
## pld1        -1.691e-03  6.207e-04  -2.724  0.00646 ** 
## pld.D        1.933e-03  7.242e-04   2.669  0.00761 ** 
## pld.D.2     -3.570e-05  3.137e-05  -1.138  0.25508    
## gs1          4.854e-04  1.741e-04   2.788  0.00531 ** 
## gs.D        -1.877e-04  1.555e-04  -1.207  0.22724    
## gs.D.2      -1.592e-06  4.776e-06  -0.333  0.73897    
## gd1         -6.561e-04  2.451e-04  -2.677  0.00744 ** 
## gd.D         3.812e-03  1.785e-04  21.354  < 2e-16 ***
## gd.D.2      -5.486e-06  2.386e-06  -2.299  0.02150 *  
## pos1         7.686e-04  3.061e-04   2.511  0.01204 *  
## pos.D       -1.702e-03  2.565e-04  -6.636 3.22e-11 ***
## pos.D.2      3.657e-05  1.192e-05   3.068  0.00216 ** 
## form1        7.018e-04  3.584e-04   1.958  0.05019 .  
## form.D       2.802e-03  3.046e-04   9.200  < 2e-16 ***
## form.D.2    -7.556e-05  3.052e-05  -2.476  0.01330 *  
## tier1        2.072e-03  7.798e-04   2.656  0.00790 ** 
## tier.D      -1.065e-01  2.819e-03 -37.786  < 2e-16 ***
## tier.D.2    -5.716e-03  1.281e-03  -4.464 8.06e-06 ***
## season.d    -1.104e-03  3.140e-05 -35.166  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.402 on 215905 degrees of freedom
##   (38194 observations deleted due to missingness)
## Multiple R-squared:  0.05122,    Adjusted R-squared:  0.05112 
## F-statistic: 506.8 on 23 and 215905 DF,  p-value: < 2.2e-16

The ordered logistic regression model is:

model.ord <- polr(as.factor(outcome) ~ E.1 + pts1 + pts.D + pts.D.2 + pld1 + pld.D + pld.D.2 + 
                    gs1 + gs.D + gs.D.2 + gd1 + gd.D + gd.D.2 + pos1 + pos.D + pos.D.2 + 
                    form1 + form.D + form.D.2 + tier1 + tier.D + tier.D.2 + season.d, 
                  data=res.eng, method = "logistic")
summary(model.ord)
## 
## Re-fitting to get Hessian
## Call:
## polr(formula = as.factor(outcome) ~ E.1 + pts1 + pts.D + pts.D.2 + 
##     pld1 + pld.D + pld.D.2 + gs1 + gs.D + gs.D.2 + gd1 + gd.D + 
##     gd.D.2 + pos1 + pos.D + pos.D.2 + form1 + form.D + form.D.2 + 
##     tier1 + tier.D + tier.D.2 + season.d, data = res.eng, method = "logistic")
## 
## Coefficients:
##               Value Std. Error  t value
## E.1       2.262e-01  2.400e-02   9.4253
## pts1      4.257e-03  2.067e-03   2.0593
## pts.D    -7.427e-03  1.509e-03  -4.9219
## pts.D.2  -7.617e-05  3.586e-05  -2.1241
## pld1     -9.254e-03  2.974e-03  -3.1120
## pld.D     1.009e-02  3.586e-03   2.8144
## pld.D.2  -2.098e-04  1.693e-04  -1.2391
## gs1       3.557e-03  8.445e-04   4.2116
## gs.D     -1.349e-03  7.523e-04  -1.7936
## gs.D.2   -3.469e-06  2.544e-05  -0.1364
## gd1      -3.623e-03  1.184e-03  -3.0601
## gd.D      1.951e-02  8.706e-04  22.4075
## gd.D.2    9.428e-06  1.630e-05   0.5784
## pos1      3.087e-03  1.452e-03   2.1255
## pos.D    -7.136e-03  1.230e-03  -5.8034
## pos.D.2   2.012e-04  5.893e-05   3.4132
## form1     3.169e-03  1.703e-03   1.8613
## form.D    1.370e-02  1.458e-03   9.3996
## form.D.2 -2.454e-04  1.482e-04  -1.6564
## tier1     1.012e-02  3.693e-03   2.7404
## tier.D   -5.347e-01  1.470e-02 -36.3761
## tier.D.2 -6.419e-03  7.051e-03  -0.9104
## season.d -5.382e-03  1.512e-04 -35.6084
## 
## Intercepts:
##       Value    Std. Error t value 
## 0|0.5  -0.9335   0.0249   -37.4722
## 0.5|1   0.2213   0.0248     8.9177
## 
## Residual Deviance: 435575.66 
## AIC: 435625.66 
## (38194 observations deleted due to missingness)

The Forecasts

Premier League

prem.matches <- forecast.matches[forecast.matches$division=="English Premier",]
prem.matches <- prem.matches[order(prem.matches$date),]
prem.matches$id <- 1:NROW(prem.matches)
par(mar=c(9,4,4,5)+.1)
plot(prem.matches$id,prem.matches$outcome,xaxt="n",xlab="",ylim=range(0,1),
     main="Forecasts of Weekend Premier League Matches",
     ylab="Probability of Outcome")
lines(prem.matches$id,prem.matches$Ph,col=2,pch=15,type="p")
lines(prem.matches$id,prem.matches$Pd,col=3,pch=16,type="p")
lines(prem.matches$id,prem.matches$Pa,col=4,pch=17,type="p")
legend("topleft",ncol=4,pch=c(1,15,16,17),col=c(1:4),
       legend=c("OLS","OL (home)","OL (draw)","OL (away)"),bty="n")
abline(h=0.5,lty=2)
abline(h=0.6,lty=3)
abline(h=0.7,lty=2)
abline(h=0.4,lty=3)
axis(1,at=prem.matches$id,labels=paste(prem.matches$team1,prem.matches$team2,sep=" v "),las=2,cex.axis=0.65)
for(i in 2:NROW(prem.matches)){
  if(prem.matches$date[i]!=prem.matches$date[i-1]) {
    lines(rep(c(i-0.5),2),c(0,1),lty=2)
  }
}

The coloured dots are forecasts from the ordered logistic regression model; the black circles are the forecasts from a simple OLS linear probability model.  Hence the black circles are essentially a probability of a home win occurring (given the ordinal variable defined to capture all three outcomes), whereas the red squares are the probability of a home win, the green solid circles are the probability of a draw, and the blue triangles the probability of an away win.  The home bias in football is notable in that the majority of red squares lie above blue triangles.

Unlike previous weeks, I am unable to provide bookmaker odds. Hopefully this will return next week.

Championship

Next, our Championship forecasts:

champ.matches <- forecast.matches[forecast.matches$division=="English Championship",]
champ.matches <- champ.matches[order(champ.matches$date),]
champ.matches$id <- 1:NROW(champ.matches)
par(mar=c(9,4,4,5)+.1)
plot(champ.matches$id,champ.matches$outcome,xaxt="n",xlab="",ylim=range(0,1),
     main="Forecasts of Weekend Championship Matches",
     ylab="Probability of Outcome")
lines(champ.matches$id,champ.matches$Ph,col=2,pch=15,type="p")
lines(champ.matches$id,champ.matches$Pd,col=3,pch=16,type="p")
lines(champ.matches$id,champ.matches$Pa,col=4,pch=17,type="p")
legend("topleft",ncol=4,pch=c(1,15,16,17),col=c(1:4),
       legend=c("OLS","OL (home)","OL (draw)","OL (away)"),bty="n")
abline(h=0.5,lty=2)
abline(h=0.6,lty=3)
abline(h=0.7,lty=2)
axis(1,at=champ.matches$id,labels=paste(champ.matches$team1,champ.matches$team2,sep=" v "),las=2,cex.axis=0.65)
for(i in 2:NROW(champ.matches)){
  if(champ.matches$date[i]!=champ.matches$date[i-1]) {
    lines(rep(c(i-0.5),2),c(0,1),lty=2)
  }
}

League One

Next, our League One forecasts:

lg1.matches <- forecast.matches[forecast.matches$division=="English League One",]
lg1.matches <- lg1.matches[order(lg1.matches$date),]
lg1.matches$id <- 1:NROW(lg1.matches)
par(mar=c(9,4,4,5)+.1)
plot(lg1.matches$id,lg1.matches$outcome,xaxt="n",xlab="",ylim=range(0,1),
     main="Forecasts of Weekend League One Matches",
     ylab="Probability of Outcome")
lines(lg1.matches$id,lg1.matches$Ph,col=2,pch=15,type="p")
lines(lg1.matches$id,lg1.matches$Pd,col=3,pch=16,type="p")
lines(lg1.matches$id,lg1.matches$Pa,col=4,pch=17,type="p")
legend("topleft",ncol=4,pch=c(1,15,16,17),col=c(1:4),
       legend=c("OLS","OL (home)","OL (draw)","OL (away)"),bty="n")
abline(h=0.5,lty=2)
abline(h=0.6,lty=3)
abline(h=0.7,lty=2)
axis(1,at=lg1.matches$id,labels=paste(lg1.matches$team1,lg1.matches$team2,sep=" v "),las=2,cex.axis=0.65)
for(i in 2:NROW(lg1.matches)){
  if(lg1.matches$date[i]!=lg1.matches$date[i-1]) {
    lines(rep(c(i-0.5),2),c(0,1),lty=2)
  }
}

League Two

Next, our League Two forecasts:

lg2.matches <- forecast.matches[forecast.matches$division=="English League Two",]
lg2.matches <- lg2.matches[order(lg2.matches$date),]
lg2.matches$id <- 1:NROW(lg2.matches)
par(mar=c(9,4,4,5)+.1)
plot(lg2.matches$id,lg2.matches$outcome,xaxt="n",xlab="",ylim=range(0,1),
     main="Forecasts of Weekend League Two Matches",
     ylab="Probability of Outcome")
lines(lg2.matches$id,lg2.matches$Ph,col=2,pch=15,type="p")
lines(lg2.matches$id,lg2.matches$Pd,col=3,pch=16,type="p")
lines(lg2.matches$id,lg2.matches$Pa,col=4,pch=17,type="p")
legend("topleft",ncol=4,pch=c(1,15,16,17),col=c(1:4),
       legend=c("OLS","OL (home)","OL (draw)","OL (away)"),bty="n")
abline(h=0.5,lty=2)
abline(h=0.6,lty=3)
abline(h=0.7,lty=2)
axis(1,at=lg2.matches$id,labels=paste(lg2.matches$team1,lg2.matches$team2,sep=" v "),las=2,cex.axis=0.65)
for(i in 2:NROW(lg2.matches)){
  if(lg2.matches$date[i]!=lg2.matches$date[i-1]) {
    lines(rep(c(i-0.5),2),c(0,1),lty=2)
  }
}

Football Conference

Next, our Football Conference forecasts:

conf.matches <- forecast.matches[forecast.matches$division=="Football Conference",]
conf.matches$id <- 1:NROW(conf.matches)
par(mar=c(9,4,4,5)+.1)
plot(conf.matches$id,conf.matches$outcome,xaxt="n",xlab="",ylim=range(0,1),
     main="Forecasts of Weekend Football Conference Matches",
     ylab="Probability of Outcome")
lines(conf.matches$id,conf.matches$Ph,col=2,pch=15,type="p")
lines(conf.matches$id,conf.matches$Pd,col=3,pch=16,type="p")
lines(conf.matches$id,conf.matches$Pa,col=4,pch=17,type="p")
legend("topleft",ncol=4,pch=c(1,15,16,17),col=c(1:4),
       legend=c("OLS","OL (home)","OL (draw)","OL (away)"),bty="n")
abline(h=0.5,lty=2)
abline(h=0.6,lty=3)
abline(h=0.7,lty=2)
axis(1,at=conf.matches$id,labels=paste(conf.matches$team1,conf.matches$team2,sep=" v "),las=2,cex.axis=0.65)
for(i in 2:NROW(conf.matches)){
  if(conf.matches$date[i]!=conf.matches$date[i-1]) {
    lines(rep(c(i-0.5),2),c(0,1),lty=2)
  }
}

List of all forecasts

For transparency, all forecasts are also listed as a table:

kable(forecast.matches[order(forecast.matches$date,forecast.matches$division),
                       c("date","division","team1","outcome","team2","Ph","Pd","Pa")])
date division team1 outcome team2 Ph Pd Pa
65 2015-02-28 Conference North Bradford PA 0.5345684 Hednesford 0.3874043 0.2800185 0.3325772
67 2015-02-28 Conference North Gainsborough 0.7299159 Hyde 0.6416989 0.2086746 0.1496265
58 2015-02-28 Conference South Bath City 0.5594964 Hayes & Y 0.4167182 0.2772055 0.3060763
7 2015-02-28 English Championship Birmingham 0.4831780 Brentford 0.3333275 0.2800696 0.3866029
8 2015-02-28 English Championship Leeds 0.4621558 Watford 0.3128561 0.2781165 0.4090274
9 2015-02-28 English Championship Reading 0.5260220 Nottm Forest 0.3767587 0.2805805 0.3426608
10 2015-02-28 English Championship Bolton 0.5387751 Brighton 0.3894435 0.2798820 0.3306745
11 2015-02-28 English Championship Sheff Wed 0.4165819 Middlesbro 0.2661919 0.2689396 0.4648685
12 2015-02-28 English Championship Charlton 0.5786042 Huddersfield 0.4375203 0.2741594 0.2883203
13 2015-02-28 English Championship Bournemouth 0.6835386 Blackburn 0.5755858 0.2358652 0.1885489
14 2015-02-28 English Championship Rotherham 0.6029844 Millwall 0.4647343 0.2689684 0.2662973
15 2015-02-28 English Championship Cardiff 0.5359882 Wolves 0.3879016 0.2799860 0.3321124
16 2015-02-28 English Championship Fulham 0.3545889 Derby 0.2246816 0.2543803 0.5209381
17 2015-02-28 English Championship Blackpool 0.5229147 Wigan 0.3717485 0.2807557 0.3474958
18 2015-02-28 English League One Gillingham 0.6291174 Barnsley 0.4985939 0.2607642 0.2406419
19 2015-02-28 English League One Walsall 0.6341529 Leyton Orient 0.4999044 0.2604103 0.2396853
20 2015-02-28 English League One Peterborough 0.5293366 Bradford 0.3808207 0.2803962 0.3387831
21 2015-02-28 English League One Crewe 0.4227865 Swindon 0.2813103 0.2726825 0.4460072
22 2015-02-28 English League One Bristol C 0.6519663 Rochdale 0.5267457 0.2526027 0.2206517
23 2015-02-28 English League One Chesterfield 0.5641607 Fleetwood 0.4212402 0.2766146 0.3021451
24 2015-02-28 English League One Doncaster 0.6551009 Colchester 0.5288558 0.2519451 0.2191992
25 2015-02-28 English League One Oldham 0.4925525 Preston 0.3409428 0.2805037 0.3785536
26 2015-02-28 English League One Crawley 0.4771042 Sheff Utd 0.3298671 0.2798211 0.3903118
27 2015-02-28 English League One Scunthorpe 0.6650346 Yeovil 0.5435917 0.2471825 0.2092258
28 2015-02-28 English League One Coventry 0.4022852 MK Dons 0.2627967 0.2679905 0.4692128
29 2015-02-28 English League One Notts Co 0.5579959 Port Vale 0.4133425 0.2776201 0.3090374
30 2015-02-28 English League Two Cheltenham 0.5153727 Tranmere 0.3626564 0.2809232 0.3564204
31 2015-02-28 English League Two Morecambe 0.6102125 Cambridge U 0.4719721 0.2673713 0.2606566
32 2015-02-28 English League Two Southend 0.6928631 Carlisle 0.5745352 0.2362572 0.1892076
33 2015-02-28 English League Two Portsmouth 0.6332265 Oxford 0.5012332 0.2600488 0.2387181
34 2015-02-28 English League Two Plymouth 0.6311329 Bury 0.4992988 0.2605741 0.2401270
35 2015-02-28 English League Two Hartlepool 0.4704876 AFC W’bledon 0.3219292 0.2791270 0.3989438
36 2015-02-28 English League Two Mansfield 0.5590474 Dag & Red 0.4107941 0.2779178 0.3112880
37 2015-02-28 English League Two Shrewsbury 0.6476624 Northampton 0.5175139 0.2554059 0.2270802
38 2015-02-28 English League Two Luton 0.6698248 Accrington 0.5492924 0.2452620 0.2054456
39 2015-02-28 English League Two Wycombe 0.6378792 Stevenage 0.5071310 0.2584121 0.2344569
40 2015-02-28 English League Two Burton 0.6841056 Newport Co 0.5642462 0.2400242 0.1957297
41 2015-02-28 English League Two York 0.5810377 Exeter 0.4413042 0.2735172 0.2851786
1 2015-02-28 English Premier Man Utd 0.6746362 Sunderland 0.5636092 0.2402531 0.1961377
2 2015-02-28 English Premier Stoke 0.6152447 Hull 0.4788361 0.2657764 0.2553876
3 2015-02-28 English Premier Newcastle 0.6578525 Aston Villa 0.5330454 0.2506211 0.2163335
4 2015-02-28 English Premier Burnley 0.5167122 Swansea 0.3686132 0.2808356 0.3505512
5 2015-02-28 English Premier West Ham 0.6247039 C Palace 0.4956715 0.2615440 0.2427845
6 2015-02-28 English Premier West Brom 0.4508265 Southampton 0.2996084 0.2762085 0.4241831
108 2015-02-28 FA Trophy Torquay 0.6235778 Wrexham 0.4936205 0.2620834 0.2442961
42 2015-02-28 Football Conference Kidderminster 0.5210316 Halifax 0.3697750 0.2808087 0.3494163
43 2015-02-28 Football Conference Forest Green 0.7312417 Southport 0.6321884 0.2128761 0.1549354
44 2015-02-28 Football Conference Eastleigh 0.5610380 Macclesfield 0.4186385 0.2769595 0.3044020
45 2015-02-28 Football Conference Grimsby 0.6960080 Braintree 0.5804417 0.2340364 0.1855218
46 2015-02-28 Football Conference Gateshead 0.5570392 Bristol R 0.4117591 0.2778066 0.3104343
47 2015-02-28 Football Conference Telford 0.5987608 Alfreton 0.4680931 0.2682382 0.2636687
48 2015-02-28 Football Conference Nuneaton 0.5363582 Welling 0.3889621 0.2799150 0.3311229
49 2015-02-28 Football Conference Lincoln 0.5265296 Woking 0.3769570 0.2805724 0.3424706
50 2015-02-28 Football Conference Altrincham 0.4371341 Barnet 0.2948031 0.2753850 0.4298120
51 2015-02-28 Football Conference Aldershot 0.6437962 Dartford 0.5163482 0.2557513 0.2279006
88 2015-02-28 Ryman Premier Canvey Isl. 0.7367840 Lewes 0.6457307 0.2068659 0.1474035
92 2015-02-28 Ryman Premier Kingstonian 0.5070606 Margate 0.3593405 0.2809350 0.3597245
113 2015-03-01 Capital One Cup Chelsea 0.6891186 Tottenham 0.5791662 0.2345195 0.1863142
111 2015-03-01 English Championship Norwich 0.6353205 Ipswich 0.5089153 0.2579068 0.2331780
109 2015-03-01 English Premier Arsenal 0.6892428 Everton 0.5769860 0.2353408 0.1876732
110 2015-03-01 English Premier Liverpool 0.5530661 Man City 0.4090913 0.2781094 0.3127993
120 2015-03-03 English Championship Brighton 0.4314617 Derby 0.2858237 0.2736517 0.4405247
121 2015-03-03 English Championship Watford 0.7566742 Fulham 0.6657292 0.1976588 0.1366120
122 2015-03-03 English Championship Bolton 0.5752779 Reading 0.4345151 0.2746505 0.2908344
123 2015-03-03 English Championship Bournemouth 0.6522505 Wolves 0.5356861 0.2497743 0.2145396
124 2015-03-03 English Championship Middlesbro 0.7767498 Millwall 0.6874511 0.1872322 0.1253167
125 2015-03-03 English Championship Rotherham 0.5264397 Cardiff 0.3765347 0.2805896 0.3428758
126 2015-03-03 English Championship Charlton 0.5213576 Nottm Forest 0.3719351 0.2807502 0.3473147
127 2015-03-03 English Championship Brentford 0.6548279 Huddersfield 0.5312011 0.2512069 0.2175920
128 2015-03-03 English League One Swindon 0.6557259 Gillingham 0.5380512 0.2490077 0.2129411
129 2015-03-03 English League One Bradford 0.7033176 Crawley 0.5930978 0.2291388 0.1777635
130 2015-03-03 English League One Rochdale 0.6848131 Crewe 0.5814755 0.2336435 0.1848811
131 2015-03-03 English League One Colchester 0.5833012 Notts Co 0.4414780 0.2734871 0.2850349
132 2015-03-03 English League One Leyton Orient 0.4437169 Bristol C 0.3002615 0.2763149 0.4234236
133 2015-03-03 English League One Port Vale 0.5754844 Oldham 0.4340118 0.2747311 0.2912571
134 2015-03-03 English League One Preston 0.6649853 Doncaster 0.5426999 0.2474791 0.2098210
135 2015-03-03 English League One Sheff Utd 0.6608273 Peterborough 0.5381018 0.2489912 0.2129070
136 2015-03-03 English League One Barnsley 0.6193181 Coventry 0.4836673 0.2646078 0.2517249
137 2015-03-03 English League One MK Dons 0.6909149 Chesterfield 0.5864530 0.2317336 0.1818135
138 2015-03-03 English League One Yeovil 0.4893323 Walsall 0.3361970 0.2802512 0.3835518
139 2015-03-03 English League One Fleetwood 0.6060399 Scunthorpe 0.4664404 0.2685999 0.2649598
140 2015-03-03 English League Two Carlisle 0.6245568 Cheltenham 0.4928702 0.2622791 0.2448507
141 2015-03-03 English League Two Northampton 0.6051598 Portsmouth 0.4700798 0.2677973 0.2621229
142 2015-03-03 English League Two Stevenage 0.5255878 Plymouth 0.3740050 0.2806840 0.3453111
143 2015-03-03 English League Two Tranmere 0.4821008 Wycombe 0.3327604 0.2800311 0.3872085
144 2015-03-03 English League Two AFC W’bledon 0.5663443 Southend 0.4225887 0.2764306 0.3009806
145 2015-03-03 English League Two Cambridge U 0.6111897 York 0.4773780 0.2661216 0.2565004
146 2015-03-03 English League Two Newport Co 0.6286907 Mansfield 0.4959244 0.2614770 0.2425986
147 2015-03-03 English League Two Oxford 0.5653115 Morecambe 0.4198828 0.2767963 0.3033210
148 2015-03-03 English League Two Accrington 0.4605932 Shrewsbury 0.3110566 0.2778879 0.4110555
149 2015-03-03 English League Two Bury 0.5817337 Luton 0.4385534 0.2739867 0.2874599
150 2015-03-03 English League Two Dag & Red 0.6700500 Hartlepool 0.5514574 0.2445214 0.2040212
117 2015-03-03 English Premier Hull 0.5976004 Sunderland 0.4594272 0.2700830 0.2704898
118 2015-03-03 English Premier Aston Villa 0.5018653 West Brom 0.3485137 0.2807849 0.3707014
119 2015-03-03 English Premier Southampton 0.6833099 C Palace 0.5681834 0.2385981 0.1932185
151 2015-03-03 Football Conference Dartford 0.4352029 Woking 0.2887899 0.2742527 0.4369575
152 2015-03-03 Football Conference Aldershot 0.5012632 Dover 0.3496135 0.2808136 0.3695729
153 2015-03-03 Football Conference Braintree 0.4919412 Macclesfield 0.3416240 0.2805350 0.3778410
169 2015-03-03 Football Conference Gateshead 0.6556959 Wrexham 0.5306163 0.2513917 0.2179920
170 2015-03-03 Football Conference Southport 0.4234686 Halifax 0.2773261 0.2717712 0.4509027
180 2015-03-04 English Championship Leeds 0.4814554 Ipswich 0.3305677 0.2798740 0.3895582
181 2015-03-04 English Championship Sheff Wed 0.5495841 Blackburn 0.4004524 0.2789893 0.3205582
182 2015-03-04 English Championship Birmingham 0.6649123 Blackpool 0.5466588 0.2461546 0.2071867
183 2015-03-04 English Championship Norwich 0.7610387 Wigan 0.6716537 0.1948580 0.1334883
173 2015-03-04 English Premier West Ham 0.4430861 Chelsea 0.2934449 0.2751392 0.4314159
174 2015-03-04 English Premier QPR 0.3887221 Arsenal 0.2483394 0.2634833 0.4881773
175 2015-03-04 English Premier Liverpool 0.7099428 Burnley 0.6027116 0.2252949 0.1719935
176 2015-03-04 English Premier Stoke 0.5878472 Everton 0.4460348 0.2726775 0.2812877
177 2015-03-04 English Premier Tottenham 0.6287765 Swansea 0.4981668 0.2608790 0.2409543
178 2015-03-04 English Premier Man City 0.7147847 Leicester 0.6223172 0.2171384 0.1605444
179 2015-03-04 English Premier Newcastle 0.4820790 Man Utd 0.3318232 0.2799655 0.3882113