I've been looking at Pitching Runs and trying to find a different way to express the value of a pitcher.
What I've come up with is a method that I believe could better evaluate a pitcher's performance in the context of the opposition he faces; for, as we know, not all schedules are created equal. The idea is simple enough but the implementation is a bit tedious.
Over a given season, a team scores a bunch of runs. From that total, we can estimate their average runs per inning by dividing their total runs scored by innings played (more on why it's an estimate below).
So, the estimated runs per inning is the number of runs one can expect a given team to score in a given inning.
On the other side, we have a given pitcher who pitches some number of innings in a game against some team and gives of some number of runs. We can say that if that were an average pitcher (not necessarily the same as a "league-average" pitcher), he would give up an expected number of runs that can be calculated using the opposing teams runs per inning:
Now with our pitcher's expected runs allowed and his actual runs allowed we can calculated how many runs he saved his team as compared to an "average" pitcher:
A summation (not an average) of a pitcher's runs saved over the course of a season should indicate how many total runs he saved his team. This seems like a useful metric to describe a pitcher's performance as it implicitly factors in the run production of the pitcher's opposition.
There are, of course, a few pitfalls. As mentioned above, the runs per inning value is an estimate. This is only because I haven't yet found a reliable way of calculating a team's innings played. For a team that plays 162 games, loses every home game, and never plays an extra inning game, 1458 innings are played. Of course, we know this isn't the case: teams don't always bat in the ninth, when they do they don't always complete the inning (due walk-off hits), and teams fairly often play extra inning games; not to mention games that are called early due to weather. Luckily, things balance out for the most part, but rarely does a team play exactly 1458 innings in a full season. The effect on the final runs saved stat is minimal, but probably not negligible.
Also, it's a bit more tedious to compute than most stats. This is due to the nature of the stat: a line of 8 IP, 2 R against the Royals should not be equivalent to the same line against the Red Sox. Thus, the numbers are considered on a per-game basis.
So, is this worth the code used to calculate it? Maybe
It it some ground-breaking revolutionary answer to Life, the Universe, and Everything? That's doubtful
Is it a pretty neat indicator of a pitcher's performance in the context of the particular lineups he faces? Yep
Has it been done before? Maybe
Is there still a lot of work to be done? Absolutely
Finally, I'll post the numbers I have so far, calculated through games played yesterday. I've only included starters who have pitched in 17+ innings (roughly the cutoff for ERA leaders at this point in the season), which leaves me with 108 pitchers. For the sake of brevity, I'll only include the top and bottom 15. And, as you can see, pitchers are identified by their BR ID, this is only because I've been to lazy to write code to switch these for the pitcher's name, and I figure the BR IDs are decipherable to most everyone here.
So, thoughts? Opinions? Critiques? Revelations that I'm not, in fact, re-inventing the wheel and that this has been done before?
What I've come up with is a method that I believe could better evaluate a pitcher's performance in the context of the opposition he faces; for, as we know, not all schedules are created equal. The idea is simple enough but the implementation is a bit tedious.
Over a given season, a team scores a bunch of runs. From that total, we can estimate their average runs per inning by dividing their total runs scored by innings played (more on why it's an estimate below).
Code:
team runs per inning = total(runs scored) / total(innings played)
On the other side, we have a given pitcher who pitches some number of innings in a game against some team and gives of some number of runs. We can say that if that were an average pitcher (not necessarily the same as a "league-average" pitcher), he would give up an expected number of runs that can be calculated using the opposing teams runs per inning:
Code:
expected runs allowed = opposing team's runs per inning * innings pitched
Code:
runs saved = runs allowed - expected runs allowed
There are, of course, a few pitfalls. As mentioned above, the runs per inning value is an estimate. This is only because I haven't yet found a reliable way of calculating a team's innings played. For a team that plays 162 games, loses every home game, and never plays an extra inning game, 1458 innings are played. Of course, we know this isn't the case: teams don't always bat in the ninth, when they do they don't always complete the inning (due walk-off hits), and teams fairly often play extra inning games; not to mention games that are called early due to weather. Luckily, things balance out for the most part, but rarely does a team play exactly 1458 innings in a full season. The effect on the final runs saved stat is minimal, but probably not negligible.
Also, it's a bit more tedious to compute than most stats. This is due to the nature of the stat: a line of 8 IP, 2 R against the Royals should not be equivalent to the same line against the Red Sox. Thus, the numbers are considered on a per-game basis.
So, is this worth the code used to calculate it? Maybe
It it some ground-breaking revolutionary answer to Life, the Universe, and Everything? That's doubtful
Is it a pretty neat indicator of a pitcher's performance in the context of the particular lineups he faces? Yep
Has it been done before? Maybe
Is there still a lot of work to be done? Absolutely
Finally, I'll post the numbers I have so far, calculated through games played yesterday. I've only included starters who have pitched in 17+ innings (roughly the cutoff for ERA leaders at this point in the season), which leaves me with 108 pitchers. For the sake of brevity, I'll only include the top and bottom 15. And, as you can see, pitchers are identified by their BR ID, this is only because I've been to lazy to write code to switch these for the pitcher's name, and I figure the BR IDs are decipherable to most everyone here.
Code:
Pitcher PRV /ip starts 1 sheetbe01 -10.645 -0.38 4 2 peavyja01 -9.719 -0.324 4 3 haranaa01 -9.476 -0.271 5 4 greinza01 -9.04 -0.312 4 5 leecl02 -8.609 -0.38 3 6 hernafe02 -7.504 -0.262 4 7 saundjo01 -7.275 -0.248 4 8 hamelco01 -6.927 -0.239 4 9 lohseky01 -6.792 -0.279 4 10 millwke01 -6.405 -0.2 5 11 carmofa01 -6.22 -0.271 4 12 blackni01 -6.169 -0.244 4 13 westbja01 -6.017 -0.203 4 14 evelada01 -5.816 -0.246 4 15 linceti01 -5.784 -0.304 3
Code:
Pitcher PRV /ip starts 94 arroybr01 4.986 0.234 4 95 burnea.01 5.105 0.239 4 96 garlajo01 5.254 0.216 4 97 bondeje01 5.269 0.233 4 98 mechegi01 5.469 0.231 4 99 jennija01 5.953 0.293 4 100 roberna01 6.496 0.3 4 101 cainma01 6.722 0.339 4 102 moseldu01 7.547 0.384 4 103 oswalro01 8.058 0.351 4 104 gorzeto01 8.383 0.484 4 105 lillyte01 9.768 0.524 4 106 verlaju01 11.287 0.464 4 107 millean01 14.073 0.797 4 108 sabatc.01 17.714 0.985 4
Comment