Game Averaged PythagenPat
March 30, 2007 12 Comments
Perhaps the biggest problem with seasonal pythagorean win estimators is that they are heavily influenced by blowout games. When a team faces the Royals and beat the tar out of an injured Runelvys Hernandez to the tune of 20 runs, that makes far less of a statement (in reality) about their intrinsic ability to win games against average competition than it would if they faced, say, the Blue Jays and beat them 6-4. It cannot truthfully be said that there AREN’T teams that carry the “bully” personality, beating up on bad teams and getting consistently outplayed by good ones.
I was thinking about this problem of blowout games vs. close games about a year ago and then I realized that a good way to neutralize runs scored in “Garbage Time” would be to use PythagenPat itself to inforce the assertion that all games have a maximum value of ONE win. Whether you win a game 25-1 or 6-1, you can only get that one W, and chances are, that 25-1 game was largely against inferior competition.
So here’s what I did:
- I calculated PythagenPat winning percentages for each individual game in baseball history using the gamelog files from Retrosheet.org. In order to do this right you have to find a Patriot Exponent for each game (X = (RS + RA) ^ 0.285 for a single game), and then calculate each team’s W% in that game (W% = RS^X / (RS^X + RA^X)).
- I grouped the data by winning and losing team and gathered statistics on run scoring and allowing, and winning and losing Game PythagenPat W%s.
- I merged all of that information into one nice Excel table which shows RS and RA for each team in just their wins, just their losses, and in all games combined, as well as showing total Single-Game PythagenPat wins garnered in their wins, in their losses, and in all games.
- I calculated seasonal PythagenPat W% for just the wins, just the losses, and for the entire season for each team.
- I calculated Game-Averaged PythagenPat W% (the Single-Game wins divided by the number of games in which those wins were obtained) for the wins, the losses, and the total season.
Immediately, I observed that teams with a reputation for not being as good as their RS and RA were showing up as having a significantly weaker Game-Averaged PythagenPat (I’m going to dub this new statistic PythagenMatt so I don’t have to keep typing Game-Averaged all the time) records than Seasonal PythagenPat records. I also noticed, however, that in general, all teams tended to pull toward the center (a .500 W%) when doing it this way. This makes a certain amount of sense as a majority of run scoring happens on the winning side…the winning team tends to outscore the losing team by roughly double the rate if you look through history, and PythagenMatt will take a bite out of every one of those wins, while taking a bite out of the negative results of losses as well (thus moving teams toward the middle).
I considered abandoning the idea of PythagenMatt, but I decided first to see how PythagenPat and PythagenMatt related to actual W%. I graphed PythagenPat (Seasonal) W% (Y axis) vs. Actual W% (X axis) first, and took a Linear Best Fit Line through the data. Note here, I eliminated all teams that did not have at least 100 games played from the sample before doing this, because small samples of games cause wonky outliers occasionally give an incorrect sense of the utility of both PythagenPat and PythagenMatt. This is what the PythagenPat distribution looks like:
(click to view full image)
Note the R^2 value (0.9127). This lines up well with most studies done on the reliability of PythagenPat and all other W% estimators. It represents an R value of 0.9553.
This is what you get when you look at PythagenMatt:
(clickable once again)
The tilt is wrong, obviously, thanks to the center-pulling bias, but notice how much more compact the scatterplot looks along the line of best fit. Also notice the dramatically improved R^2 of 0.9585 (an R value of .979).
We can solve the center-pulling bias with a simple linear translation using the line of best fit obtained above (y = 0.6938x + 0.1531). Remember that y is PythagenMatt, so if we want to use PythagenMatt to project Actual W%, we need to invert the equation with some simple algebra to get W% = (PyM – 0.1531) / 0.6938. Linear translations have no effect at all on correlation, so we’ve removed all sources of bias andretained our stronger correlation.
What results is a pythagorean W% estimator that (a) has no bias by definition (b) removes the problem of blowout games from the equation which (c) causes a much stronger correlation with reality.
I’ll leave it up to the commenters to decide whether I’m off my rocker or whether I stumbled into a useful improvement on Pythagoras, but I found it interesting.