I've struggled with this question for several months and found this website, which is amazing.
Imagine a hypothetical league composed of players competing in a simple contest where the object of each contest is to score more than an opponent. Player strategies are simple, existing on a range from focusing on scoring, to focusing on preventing the opponent from scoring, to anywhere in between. Assume that players stick with a certain strategy over time. For each player in each contest, we then know the number of points scored, and the number of points allowed.
The challenge is to evaluate how a player performed in a certain contest. Obviously the number of points scored by the player will not be enough since it does not speak to the strategy of the opponent (for instance, an opponent who has a strategy focused on scoring will allow more points to every player).
I have thought up an approach, and am looking for feedback from everyone here, especially if this approach has a name or (as usually happens) has been otherwise thought up. It has three inputs:
- The number of points the player scored in the contest
- The average number of points all players scored in all the league’s contests
- The average number of points the opponent allowed in all his previous contests, but not this one.
The simple formula looks like:
AdjPointsScored = NumPointsScored – (MeanOppPointsAllowedToDate – MeanLeaguePtsScored)
That basically expresses the player’s performance as +/- what a typical player playing against this opponent might be expected to score.
I’m also wondering if it might be more accurate to express NumPointsScored and MeanOppPointsAllowedToDate as Z-scores based on the distribution of MeanLeaguePtsScored, subtract the z-scores, and then turn the result back into units of MeanLeaguePtsScored, but I’m unsure if that will improve the analysis or just needlessly complicate things.