So how do I predict the results of a match with these ratings?
This is the huge one with two world powers vying for automatic qualification to South Africa next year. How would I sim this game?
Well let’s look up what ratings we had at the last pull (they will have changed very little since).
Column 1 is the Offensive rating for every team. This is simply how many goals they can be expected to score, not necessarily an evaluation of their attacking players. Sometimes good offense leads to goals, sometimes good defense does. Usually it’s some combination of the two (though admittedly more goals suggests better attackers without confirming it). Germany’s 1.78 is good for second in the rankings, a good bit behind Brazil. Russia’s 1.34 is pretty good as well, but off the pace some. On defense Germany is 192.74, while Russia is quite close at 180.64.
A few notes: first, notice that Russia does significantly better in the other rating method (column 4) which is a rating based on wins, draws and losses with margin of victory adjustments. This suggests that Russia’s results (at least in more recent or more critical matches) have been better than you’d normally expect given their goals scored and allowed. I’ll let you decide how you’d like to interpret that, the sims view that as essentially luck, a conclusion that isn’t necessarily the case (but it’s probably at least a partial explanation).
Second, the reason the Offense and Defense ratings are scaled differently (IE, the Defense ratings can be as much as 200 times higher than the Offense rating for a team) is to make the upcoming calculations as straightforward and easy to comprehend as possible. I could easily convert them so that they are on the same scale, but then to use them I’d just have to convert them back, so what’s the point?
As mentioned in the previous post you can now predict the final score of a match between the two teams with the following formula:
Russia Goals = (1.34/(1.34+192.74))*180 = 1.24 goals
Germany Goals = (1.78/(1.78+180.64))*180 = 1.76 goals
So Germany is (unexpectedly given their ratings) the favorite. But, of course, Russia is playing at home in Moscow, so we need to adjust for that. Now I’ve mentioned before that I’m not entirely thrilled with the way I handle Home Field Advantage (from now on “HFA”). The reason is that I’ve settled on a static advantage for all teams. Now we KNOW that isn’t the case. Some teams simply have larger HFAs than others. One bad trip to Bolivia, Ecuador or the deadly Azteca in Mexico will convince you of that in a hurry. The problem is that I’ve yet to work out a satisfactory way to determine the individual HFAs for every team. I plan on including and then testing a new system to do just that, very soon. But for now I’m going to stick with what I have, which is the average HFA for all home teams which I derived from the system a couple of years ago. Expect some further discussion on solving this issue in the coming months.
Home goals = Home expected goals * 1.186
Away goals = Away expected goals * 0.762
It’s a substantial benefit, which just indicates how huge an advantage some of the aforementioned fortresses might really be. Let’s throw the standard HFAs into the Russia/Germany mix.
Russia goals = 1.24 goals * 1.186 = 1.474 goals
Germany goals = 1.76 goals * 0.762 = 1.339 goals
And now, just like that, the Russians are the favorites.
So we’ve got a predicted outcome, but how do we adjust for the fact that we know Russia won’t score 1.474 goals and Germany won’t score 1.339 goals. How do we turn those numbers into actual scorelines. Some of you may have guessed the answer if you have some familiarity with it, but for those that don’t, I’ll use the old fallback the Poisson distribution.
Now I could have stuck with that 180 business I use in the rating system here, and then predicted the chances of scoring every half minute, but because of the nature of Poisson, the difference between the two methods will be very small. (Poisson is essentially breaking up an event with an unknown and potentially unlimited number of trials into infinitely small tiny pieces, and then using limit calculus to derive the formula). Poisson is usually used when you have an average number of successful events occurring within a particular time frame, but don’t have any clue as to how many specific trials have occurred (like in a Binomial distribution). If that sounds like way too much math lingo, think of instances where you know how often something happened in a period of time, but don’t know how many chances it had to happen during that time.
Because that description nicely fits goals scored in a football match, many have argued for and used Poisson to held model the outcome of football matches. As has been studied most people who have looked at the issue conclude that Poisson does a good enough job in most instances and that while there are concerns (particularly with regards to teams who try to hold or defend leads), those concerns often cancel one another out and that it’s a comfortably respectable way to model games.
The poisson formula is:
And if you don’t really care about the math jargon, all that menas is that if you know the average goals scored per game for a team, you can predict the chances of scoring a specific number of goals using that formula (that number being ‘x’). I’ll do the math for you for Russia and Germany.
Team 0 goals 1 goal 2 goals 3 goals 4 goals 5 goals 6 goals 7 goals Russia 22.9% 33.8% 24.9% 12.2% 4.5% 1.3% 0.3% 0.1% Germany 26.2% 35.1% 23.5% 10.5% 3.5% 0.9% 0.2% 0.0%
Note: there are actually microscopic chances on down the line and the sim program stops bothering at 40 goals (the programs used to generate results aren’t even accurate at those kind of decimal places anyway).
And then you can use a random number generator to generate scorelines over and over again. Say 10,000 times for each remaining qualifier.
After doing some multiplying on the big sheet that worked out to:
Russia wins: 40.5%
Draw: 25.1%
Germany wins: 34.4%
Because any result other than the first one is essentially a win for Germany, that explains why Germany remained the favorite in the group even though Russia is favored in a game likely to be decisive in determining the group winner.
Now of course if that was all there was to say about the matter, this would be a very boring sport indeed. This sort of approach is ultimately just a baseline to start a conversation from, and a means of being able to produce a huge number of simulated games in a short period of time. The number of additional factors that can go into predicting a game like this are virtually limitless and that’s part of the joy of this or any sport. Using the math as a clarifier and using whatever you know (or, in my case, don’t know) about the sport to go from there is not only allowed but encouraged. My goal is to try and make this process as accurate as I’m able, but I know perfection ain’t gonna happen.
A final note: here is a link to a small excel spreadsheet which performs all of the above calculations. If you want to try it out with different teams using the ratings, all you have to know is that the home team goes on top, and if you want to predict a neutral site game, change the ‘1’ to a ‘0’. To generate a new random number (and therefore a new score), go to an empty cell, type in a space and hit enter. A new random number will generate.
13 responses so far ↓
1 Mitz // Oct 9, 2009 at 12:55 am
This is lovely – very neat, very cool. I knew I was right in instinctively making a Russia win the most likely of the three results!
What I seem to have missed is how exactly real results affect the offensive and defesive ratings of each team. For any given outcome, what formula do you apply to generate a team’s new ratings?
With regards to home advantage – you are absolutely right to be cautious in giving a blanket co-efficient to everyone. Some teams do indeed regard their home stadium as a fortress (eg Croatia: until England visited recently they had never lost a competitive home fixture), and looking at it from the other point of view some teams travel much better than others. Surely the thing to do is to look at each team’s home and away record and derive individual home and away co-efficients applicable to each given team that would be updated along with their offensive and defensive rating as each new match is played?
I’m aware I’m saying this blithely like it’s the easiest thing in the world, and that it would probably involve a good deal of pencil chewing to put it in place…
2 scaryice // Oct 9, 2009 at 12:56 am
I appreciate the detailed breakdown.
Also, Gus Hiddink should count for an additional 10 percentage points by himself.
3 Amir // Oct 9, 2009 at 7:27 am
Thanks, just one question:
Why don’t you derive a new global HFA every time? I mean you can just calculate it with the same program you use to calculate the new rankings…
4 dorian // Oct 9, 2009 at 9:02 am
Thanks! Very clear. Looking forward to using the spreadsheet for future matches.
5 dorian // Oct 9, 2009 at 9:08 am
Just out of curiosity, could you provide the results of the 10,000 simulations? While I understand that 40.5% will show a win for Russia, it would be interesting (and fun) to see the distribution of scorelines — something like:
Rus Ger Prob
2-1 16.3%
1-1 15.4%
2-0 14.1%
2-2 9.7%
etc.
Thanks.
6 DavidH // Oct 9, 2009 at 11:23 am
dorian,
The simulation is based on those percentages above, which are really the “true” prediction. So to get the chance of, say, a 2-1 Russia win, we should just multiply:
p(2-1 Russia win) = p(Russia scores 2) x p(Germany scores 1) = 24.9% x 35.1% = 8.7%
If I’m right about that, then here are the most likely results:
Rus-Ger Prob
1-1 11.9%
1-0 8.9%
2-1 8.7%
0-1 8.0%
1-2 7.9%
2-0 6.5%
0-0 6.0%
2-2 5.9%
0-2 5.4%
3-1 4.3%
1-3 3.5%
3-0 3.2%
3-2 2.9%
2-3 2.6%
0-3 2.4%
4-1 1.6%
3-3 1.3%
1-4 1.2%
4-0 1.2%
4-2 1.1%
Nothing else is over 1%. Here are the chances for each total number of goals scored:
Goals Prob
0 6.0%
1 16.9%
2 23.8%
3 22.3%
4 15.7%
5 8.8%
6 4.1%
7 1.6%
8+ 0.9%
7 Amir // Oct 9, 2009 at 1:16 pm
dorian, an x-y score’s probability can be calculated very easily by the multiplying the probabilities of the home team to score x and the away team y.
8 dorian // Oct 9, 2009 at 2:22 pm
Amir, Thanks — did not recognize this myself, but now that you’ve shown me how to do it, here is what I’ve found (if anyone cares). These scores account for 90% of the weighted possibilities:
Rus-Ger ___ Prob
1-1 ___ 11.8%
1-0 ___ 8.8%
2-1 ___ 8.7%
0-1 ___ 8.0%
1-2 ___ 7.9%
2-0 ___ 6.5%
0-0 ___ 6.0%
2-2 ___ 5.8%
0-2 ___ 5.4%
3-1 ___ 4.3%
1-3 ___ 3.5%
3-0 ___ 3.2%
3-2 ___ 2.9%
2-3 ___ 2.6%
0-3 ___ 2.4%
4-1 ___ 1.6%
Voros, does this mean everything can be done in probability space? How do the simulations of 10,000 runs come into play? Apologies if I’m being dense. Thanks.
9 Voros // Oct 9, 2009 at 3:44 pm
Lots of questions, one answer per post:
I can and will generate individual HFAs for each team (and you’re correct, it’s easy to add it into the system). The problem is once again one of sample size. Some teams play a lot more games at home than others and obviously the more home games the more likely that generated HFA is close to the “real” effect. So the hold-up has been making sure I get the math right so that I correctly regress it to the most likely number.
I will mention that most of the “fortresses” appear to be in Africa and South America.
10 Voros // Oct 9, 2009 at 4:26 pm
Mitz,
Let’s see if I can explain a little better. For each game that’s already been played, I still predict a score based on the current ratings. The system then checks to see if every team’s total goals scored and allowed are the same as the total predicted goals scored and allowed for that team’s games. If they don’t, the system adjusts the ratings in attempt to get those predicted goal numbers to match the actual totals the teams have scored and allowed.
Eventually after a bunch of repeats of this process, they will eventually matchup within 7 or 8 decimal places. Every time new results come in, results older than eight years fall completely out of the system, the new results are added and the rating process is repeated.
As of the last pull Germany (with the weighting adjustments) has played 41.4 games, scored 97.9 goals and allowed 37.2 goals. If you use the ratings to predict the results of every match in the system (and adjust that prediction for HFA) Germany’s total predicted goals will be 97.9 goals and total predicted allowed goals will be 37.2 goals. This matches up perfectly with the actual numbers meaning the rating is done.
The results of this game will change the actual numbers above and so therefore the ratings of Germany and other teams (like Russia) will have to change to make sure they match up again. Because this game is recent and a World Cup qualifier, it will count more toward their totals than any other single game in the system.
That’s the system in a nutshell.
11 Voros // Oct 9, 2009 at 4:32 pm
One more comment, when using Poisson there is the real issue of independence to be considered. If given we know Germany scores two goals, does our prediction for how many Russia will score stay the same as shown above by poisson or does it change a little?
Right now the system works as if the two are independent. They probably are not, but some who have studied it suggest that a fair amount of canceling happens (the more Russia tries to score, the more Germany tries to prevent it). Down the road a bit, I’d like to play around with non-independent results, but that’s going to add some complexity to the system so it will take some work and testing.
12 Rich // Oct 10, 2009 at 5:02 pm
Fascinating! Now I understand it more, but I also have a question.
How ‘accurate’ is the system at the moment, and how do you define ‘accuracy’? Is it simply a matter of correctly predicting the winner, the winner and goal difference or actual scores?
I’m also curious as to ‘other factors’ that can be taken into account, even ones which may be unusual (such as disciplinary – playing with 10 men (see Ukraine v England), or even injury).
More specifically, the idea of ‘neutral’ grounds though. When it actually comes down to a World Cup (as an example), then in theory grounds are neutral, however some teams would surely have an advantage – Be it due to climate, altitude or possibly even ‘support’.
What I’m getting it is how can such things be accounted for in a mathematical process?
As an aside, this site (http://www.dectech.org/football_sites/football_dectech/gamesim.php) seems to do the same as your process, although the figures are slightly different.
13 watt // Oct 10, 2009 at 9:05 pm
Absolutely fascinating, thank you very much.
I have tried to modify the spreadsheet for the upcoming Uruguay Argentina match, I am not sure I did it properly though.
It seems to suggest Uruguay has 40.49% chance of winning, Argentina 24.10% and the draw 25.41% is that correct?
Of course the fact that Uruguay tends to have a very big home advantage and that they have to win might be all important.
Thanks very much again.
Leave a Comment