Expected Goals 3.0 takes our data to another level of detail. Below we have articulated the key improvements, but a more formal explanation of the methodology can be found here.

Shot Location

Before, it was just six zones, but now we have shot distances, measured in yards from the center of the goal mouth. But distances don't tell the whole story without angles. All shot locations are measured by angle off center, and then converted into width of goal mouth available to the shooter. On a shot from straight on, a player "sees" all eight yards of the goal width, whereas from an extreme angle, a player may only have a yard to work with.

Goal Mouth Placement

As with shot location, we used to only have six placement zones within the goal mouth. Now we have the ball's height and distance from the center of the goal mouth. This adds to our ability to rate keepers' abilities to make difficult saves, as well as identify shooters' placement tendencies.

The combination of shot location and goal mouth placement leads to information about how far the keeper had to dive to reach the ball. Without knowing the keeper's position at the time of the shot, what we do is indicate how far he would have had to dive if he had positioned himself in the optimal location geometrically. 

Passing

In addition to the typical patterns of play (like set pieces or the regular run of play), we now indicate whether the shot was assisted, and if so, whether it was via cross, through ball, or neither. Crosses detract from the shot's likelihood to go in, while through balls increase a shot's likelihood of going in. Teams getting a lot of chances off crosses must win the quantity battle, because they won't likely win the quality battle.

Not only do we have more passing details, but we can link key passes back to the passer. Key passes are passes that lead directly to a shot. You will now find a new stat on the players page: xAssists. These measure the Expected Goals value of all shots for which a particular player passed the ball.

The Models

The expected values of shots were determined using a logistic regression, and three distinct models were created: one for teams, one for shooters, and one for goalkeepers. Those models are given below.

Here's Matty's post on validating the model.

Shooter/Team Model Estimate Std. Error Z-value P-value)
Intercept 4.172 0.170 24.589 0.000
Distance (log-yds) -2.353 0.047 -50.056 0.000
Goal Mouth Available (quadratic-yds) -0.026 0.007 -3.785 0.000
Goal Mouth Available (yds) 0.069 0.019 3.716 0.000
Headed (binary) -0.648 0.066 -9.746 0.000
Cross (binary) -0.380 0.061 -6.206 0.000
Through ball (binary) 0.909 0.074 12.292 0.000
Corner (binary) -0.622 0.064 -9.753 0.000
Free kick (binary) 0.539 0.117 4.592 0.000
Indirect Free kick (binary) -0.192 0.080 -2.393 0.017
Fastbreak (binary) 0.680 0.106 6.397 0.000
Penalty (binary) 2.735 0.134 20.336 0.000
Each binary variable from Corner to Penalty is mutually exclusive, with "Regulary play" representing the excluded reference level.
Goalkeeper Model Inputs Estimate Std. Error Z-value P-value
Intercept 5.233 0.228 22.944 0.000
Distance (log-yds) -2.774 0.070 -39.571 0.000
Goal Mouth Available (quadratic-yds) -0.025 0.008 -2.942 0.003
Goal Mouth Available (yds) -0.138 0.023 -5.913 0.000
Headed (binary) -0.896 0.092 -9.722 0.000
Cross (binary) -0.146 0.084 -1.743 0.081
Through ball (binary) 0.516 0.089 5.792 0.000
Corner (binary) -0.115 0.085 -1.347 0.178
Free kick (binary) 0.377 0.139 2.703 0.007
Indirect Free kick (binary) 0.010 0.106 0.093 0.926
Fastbreak (binary) 0.507 0.130 3.904 0.000
Penalty (binary) 2.038 0.180 11.346 0.000
Lateral Distance to Shot (yds) 1.093 0.033 32.845 0.000
Goal Mouth Height Deviation (from 3.5 feet) 0.266 0.025 10.499 0.000
Goal Mouth Height (feet) 0.129 0.013 10.122 0.000