## Fogging the Measure: Linear Weights Via Base Runs

It is always worth reminding ourselves: sabermetric research has a long way to go. The (rather obvious) truth is that the objective accounting of everything in baseball is what Edmund Husserl called, in a different context, an “infinite task.” In other words, there is a goal that guides sabermetric research – one that can never be reached. Thus, the actual sabermetric project is never ending.

Fielding and even pitching value are just two of the many areas in which sabermetric research is well-known to have a long way to go. One area in which sabermetrics has done well over the years is run estimation. Run estimators do what their name suggests: estimate the number of runs that would result from a given combination of events. While we already know how many runs actually scored, there are situations for which one would want a different sort of estimate. For example, one might want to know how many runs an player would produce if one added his events to an “average” team in order to establish his neutral offensive value. Or one might want to know how many runs a projected lineup would produce. Things of that nature.

In any case, there are a number of types of run estimators. The most commonly used type is linear weights run estimators. There are various good reasons for this. While the principles behind the various linear weights offensive run estimators are basically the same, one difference can be the exact weights given or the way those weights are derived. It can be helpful to use the resources of a dynamic run estimator in order to get more accurate linear weights values appropriate to a particular run environment while still being able to apply them to individual players.

This is not the place for a full historical or systematic overview of run estimators. (Here is a good rough outline, and here is a series of more detailed discussion). Of particular relevance here is the difference between linear and dynamic run estimators.

Linear run estimators are the more commonly used. They basically assign a coefficient to each event, which is multiplied by the number of each event, and the products are all added together to produce the number for runs created. This can be done for any entity — an individual, a team, a league, or so on. The coefficients can be derived in various ways, with different baselines. One can either use “absolute” linear weights runs created or, more commonly, linear weights baselined against average, that is, the runs a batter or team in an average context would be expected to produce in the same number of plate appearances or outs. One classic linear weights formula is Pete Palmer’s: .47*1B + .85*2B + 1.02*3B + 1.40*HR + .33*(BB + HBP) – ABF*(AB – H).

It’s application should be pretty obvious, and it shares the same basic principles with other linear estimators like Paul Johnson’s Estimated Runs Produced or linear weights used as the basis for wOBA or wRAA as implemented at FanGraphs and Baseball-Reference (which uses wRAA as the basis for Batting Value in rWAR).

One element that may strike one as being strange in Batting Runs is ABF. ABF is the factor that contextualizes batting runs so that the total amount of batting runs above and below average for the league is zero. In this way, the linear weights of the events (since they all end up being relevant to the out, the AB – H factor are “customized” for the seasonal (or whatever parameter) run environment. Again, similar things can and are done to adjust other linear run estimators like wRAA for a particular season.

The basic advantage of a linear run estimator is simplicity: just basic math operations. Moreover, they can be easily applied to individual players without logical problems. The disadvantage is that on a corporate level for teams and leagues, especially, linear weights estimators are not as accurate as better-designed dynamic run estimators. This is true not only of over run estimation, but on an inning-level analysis of what how many runs individual events produce. Without getting into all the details of an innings-level analysis, one can see that the simplicity of the multiplicative adjustment is a trade off for inaccuracy. While an adjustment like ABF does adjust to the run environment, the basic proportional differences between events stays the same year to year, even if the numbers all change.

One option is to use empirical linear weights for each particular season or whatever by looking at the empirical, average run expectancy for each event. The basic weights for Batting Runs and wRAA are derived from these on a general level, if not specified for each season in a direct way. In principle, this is the most accurate way to get seasonal linear weights for each event, since one is directly measuring the average change in run expectancy for each event in a season. Ideally, then, this is the way one would do it. The problems are that if one does not have all the play-by-play data for the season in question, it cannot be done accurately, and even then, it is not easy, though some do it (Baseball Prospectus’ TAV currently does this). Even then, it really only works retrospectively — outside of doing a simulation, applying these sorts of linear weights to a projected season or combination of players is difficult.

Dynamic run estimators, on the other hand, try to model the run scoring process in a way such that the value of events change based not only on the runs per out or plate appearance, but from the specific combination of event themselves. Bill James various versions of Runs Created are dynamic run estimators, although they also have their problems that can be read about at length elsewhere. Over the last number of years, David Smyth’s Base Runs (as also theorized by Patriot) has been acknowledged by saberists as an excellent dynamic run estimator. One good explication of Base Runs can be found here.

The basic form of Base Runs is A * B/(B+C)+D, where “A” is baserunners, B is advancement, C is outs and D is home runs. How each element is worked out varies from formula to formula, and Patriot provides some starters here. Base Runs has been found to be more more accurate than both basic linear estimators and Runs Created, although obviously empirical linear weights will be just as good, and are even, at least in a basic form, needed for Base Runs to get started.

Base Runs is great for generating team or league run totals, and is also promising as the basis for individual pitching metrics (and I am surprised they have not been more widely used for this). It is not, however, proper to use BaseRuns formulas directly for individual batters. This is because Base Runs models the runs scoring process — runners on, runners over — and a runner cannot drive himself in.

However, Base Runs can be indirectly used for individual batters. One way is the theoretical team model, for example, putting a hitter and his events on a theoretical team with eight league average players to see what the difference in runs scored would be. That is useful, if complex.

Another way is to use Base Runs to generate intrinsic linear weights for an entity, e.g., a major league system, then apply those linear weights to individuals. Prior to FanGraphs publishing their guts, I used to publish basic custom wOBA and linear weights using Tango’s old scripts. Since then, I have wanted to do something similar using Base Runs. I did more than just this, but the other results (e.g., a rate metric along the same lines as OPS+ or wRC+) is not ready for Prime Time.

With help from Patriot a long time ago (and he should not be held responsible for my screw ups), I found the Intrinsic linear weights using this method. I used Patriot’s formula from Base Runs that matches empirical weights from 1960-2004 as its basis. However, as noted, by using a dynamic run estimator to calculate individual rates for each season, not only are they adjusted for the number of runs per out for each season, but for all the other events and how they impact the value of one another.

I used Patriot’s formula that also includes a number of specific events not always taken into account. There might be some improvements that could be made, but I think this is pretty good, and at least demonstrates what can be done. The table below with each individual seasons values might be a bit confusing, so some explanations might be in order for a few columns (I rounded to three decimal places so the table would fit the page).

Because of the way I generated the formula, these are almost all “absolute” linear weights values as opposed to those above/below average, although one can get to runs above/below average, too. “R/O” is league runs per out (one could separate NL and AL, but I wanted to keep this relatively simply). This comes in handy for making the switch the runs above/below average. “Oval” is the absolute out value for each season. “Aout” is the value of an out above or below average — it is just Oval minus runs per out. This is not used directly in the formulas for individual RC I have used below, but I have included it here so it can be compared the out values given by other run estimators. “Kout” is absolute value of a strikeout as opposed to other outs. “SH” and “SF” are sacrifice hits and flys — these are the absolute values, the average value is negative. “GIDP” is the value of a double play out beyond the value of the first out.

To get the formula for an individual player’s runs created using these values, one can simply treat these values as you would in a linear runs estimator. Let’s use the listed 2012 coefficients in the examples. Using negative values in the table sort of confuses things in this transition; I will use subtraction for the negative events instead of all addition and assume the adding negatives.

For “absolute” runs created:

.449*1B + .715*2B +.967*3B + 1.363*HR + .316*(BB-IBB) + .193*IBB + .172*SB -.233*CS +.057*SH + .135*SF – (AB-H-K)*Oval – K*Kout – .418*GIDP

For runs created above/below average, we simply incorporate seasons runs per out:

.449*1B + .715*2B +.967*3B + 1.363*HR + .316*(BB-IBB) + .193*IBB + .172*SB -.233*CS +.057*SH + .135*SF – (AB-H-K)*Oval – K*Kout – .418*GIDP – (AB-H+SF+SH+GIDP)*.161

It is interesting to compare both the event values given here to the static linear weights given elsewhere, as well as the runs created values with those given for players. It is not all apples to apples: I included pitcher hitting here, some do not. I also use outs as the denominator (it was more straightforward given my method), others use plate appearances.

Enjoy!

[My thanks to P for all the help and encouragement he gave me a long time ago with this stuff, hopefully I've gotten it basically right, although it is not his fault if I did not.]

Year 1B 2B 3B HR BB HBP IBB SB CS R/O Oval Aout Kout SH SF GIDP
2012 .449 .715 .967 1.363 .316 .332 .193 .172 -.233 .161 -.067 -.228 -.103 .057 .135 -.418
2011 .450 .715 .967 1.363 .316 .332 .194 .172 -.233 .159 -.069 -.228 -.104 .056 .133 -.419
2010 .455 .730 .992 1.377 .316 .333 .189 .179 -.242 .163 -.070 -.233 -.106 .059 .140 -.434
2009 .461 .734 .994 1.374 .324 .341 .198 .177 -.240 .172 -.074 -.246 -.110 .054 .134 -.435
2008 .464 .744 1.009 1.382 .324 .341 .195 .181 -.245 .173 -.074 -.247 -.111 .057 .139 -.443
2007 .471 .752 1.020 1.385 .329 .346 .199 .183 -.247 .178 -.076 -.254 -.113 .056 .139 -.448
2006 .470 .746 1.009 1.379 .331 .347 .203 .180 -.243 .181 -.076 -.257 -.113 .054 .135 -.442
2005 .461 .734 .992 1.373 .324 .341 .198 .177 -.239 .171 -.073 -.245 -.109 .055 .135 -.433
2004 .466 .742 1.004 1.378 .327 .344 .200 .179 -.242 .179 -.075 -.254 -.111 .055 .136 -.439
2003 .466 .745 1.010 1.382 .325 .342 .196 .181 -.245 .176 -.074 -.249 -.110 .058 .139 -.442
2002 .462 .740 1.003 1.380 .322 .339 .193 .180 -.244 .172 -.073 -.244 -.109 .058 .139 -.440
2001 .466 .741 1.002 1.376 .328 .344 .201 .178 -.241 .178 -.074 -.252 -.110 .055 .136 -.437
2000 .480 .771 1.048 1.399 .333 .351 .198 .189 -.256 .192 -.079 -.270 -.117 .058 .144 -.464
1999 .479 .767 1.040 1.394 .334 .351 .201 .187 -.253 .190 -.079 -.269 -.117 .056 .141 -.460
1998 .470 .752 1.019 1.386 .328 .345 .197 .183 -.248 .178 -.075 -.253 -.112 .057 .140 -.448
1997 .469 .750 1.017 1.384 .328 .345 .198 .182 -.247 .177 -.076 -.253 -.113 .056 .138 -.447
1996 .479 .773 1.052 1.403 .330 .348 .194 .191 -.258 .187 -.077 -.263 -.116 .062 .148 -.466
1995 .474 .764 1.039 1.397 .328 .346 .194 .188 -.255 .180 -.076 -.256 -.114 .060 .145 -.459
1994 .476 .762 1.033 1.391 .332 .350 .200 .186 -.251 .183 -.077 -.260 -.115 .057 .141 -.455
1993 .469 .757 1.032 1.395 .323 .341 .190 .187 -.254 .171 -.073 -.244 -.112 .062 .147 -.455
1992 .452 .727 .989 1.377 .313 .330 .186 .179 -.242 .152 -.070 -.222 -.106 .060 .140 -.434
1991 .458 .743 1.014 1.390 .315 .332 .183 .185 -.250 .159 -.069 -.228 -.107 .065 .148 -.445
1990 .457 .735 .999 1.381 .316 .333 .188 .181 -.244 .158 -.071 -.229 -.107 .060 .142 -.438
1989 .453 .736 1.004 1.386 .311 .328 .180 .183 -.248 .153 -.067 -.220 -.105 .065 .148 -.441
1988 .452 .728 .990 1.378 .313 .330 .186 .179 -.242 .153 -.067 -.220 -.104 .062 .143 -.432
1987 .466 .744 1.007 1.379 .327 .344 .199 .180 -.243 .175 -.073 -.249 -.110 .057 .138 -.440
1986 .458 .739 1.005 1.384 .317 .334 .187 .182 -.246 .163 -.070 -.233 -.107 .062 .144 -.441
1985 .457 .737 1.003 1.383 .316 .333 .187 .182 -.246 .160 -.069 -.229 -.106 .062 .144 -.439
1984 .457 .738 1.006 1.385 .316 .333 .185 .183 -.247 .157 -.070 -.227 -.107 .063 .145 -.441
1983 .460 .739 1.004 1.382 .319 .336 .190 .181 -.245 .160 -.071 -.231 -.108 .060 .142 -.440
1982 .457 .732 .993 1.376 .319 .336 .192 .178 -.241 .159 -.071 -.229 -.107 .058 .139 -.434
1981 .450 .730 .995 1.382 .310 .327 .181 .181 -.245 .147 -.068 -.216 -.105 .063 .145 -.437
1980 .460 .736 .998 1.377 .321 .338 .193 .179 -.242 .158 -.073 -.231 -.109 .057 .138 -.437
1979 .466 .748 1.017 1.387 .323 .340 .192 .184 -.248 .166 -.073 -.239 -.111 .060 .143 -.447
1978 .453 .726 .984 1.373 .316 .333 .190 .177 -.239 .153 -.071 -.224 -.107 .057 .137 -.431
1977 .463 .739 1.001 1.378 .324 .340 .196 .179 -.243 .165 -.073 -.238 -.110 .057 .138 -.438
1976 .453 .738 1.009 1.390 .310 .327 .178 .185 -.250 .147 -.068 -.215 -.106 .066 .149 -.445
1975 .458 .752 1.031 1.402 .310 .328 .174 .191 -.258 .155 -.070 -.225 -.108 .068 .154 -.458
1974 .455 .751 1.033 1.406 .306 .324 .169 .192 -.260 .152 -.068 -.220 -.107 .072 .158 -.459
1973 .454 .752 1.035 1.408 .304 .322 .166 .193 -.262 .156 -.067 -.222 -.106 .073 .160 -.460
1972 .432 .713 .980 1.385 .290 .307 .160 .183 -.247 .136 -.060 -.196 -.097 .072 .154 -.432
1971 .440 .728 1.001 1.393 .295 .313 .162 .187 -.252 .144 -.063 -.206 -.101 .072 .156 -.443
1970 .456 .757 1.043 1.412 .305 .323 .166 .195 -.264 .160 -.066 -.226 -.106 .075 .163 -.464
1969 .447 .747 1.033 1.411 .296 .314 .157 .195 -.264 .151 -.063 -.213 -.102 .078 .166 -.459
1968 .421 .693 .952 1.372 .284 .300 .158 .177 -.239 .126 -.056 -.181 -.091 .072 .152 -.415
1967 .436 .723 .996 1.394 .291 .308 .158 .187 -.253 .139 -.058 -.196 -.096 .077 .161 -.438
1966 .441 .721 .988 1.384 .300 .317 .170 .182 -.246 .147 -.060 -.207 -.097 .072 .153 -.431
1965 .441 .725 .996 1.389 .298 .315 .166 .185 -.250 .147 -.060 -.207 -.098 .073 .156 -.436
1964 .443 .726 .996 1.388 .300 .317 .169 .184 -.249 .149 -.061 -.210 -.099 .072 .155 -.436
1963 .438 .715 .979 1.380 .298 .315 .170 .180 -.244 .145 -.060 -.205 -.097 .070 .151 -.427
1962 .460 .756 1.037 1.405 .311 .329 .175 .192 -.260 .165 -.068 -.233 -.107 .071 .158 -.458
1961 .463 .759 1.041 1.406 .314 .332 .176 .192 -.260 .168 -.068 -.237 -.108 .071 .158 -.460
1960 .455 .745 1.020 1.396 .310 .327 .176 .188 -.254 .159 -.067 -.226 -.105 .069 .154 -.450
1959 .457 .748 1.023 1.397 .311 .329 .177 .188 -.255 .163 -.067 -.230 -.105 .069 .154 -.451
1958 .452 .737 1.008 1.390 .309 .326 .177 .185 -.250 .159 -.068 -.227 -.105 .066 .150 -.444
1957 .452 .734 1.001 1.386 .310 .327 .179 .183 -.248 .158 -.068 -.226 -.105 .065 .147 -.440
1956 .459 .751 1.028 1.399 .313 .330 .178 .189 -.256 .166 -.070 -.236 -.109 .067 .152 -.456
1955 .462 .761 1.044 1.408 .312 .331 .174 .194 -.262 .167 -.070 -.237 -.110 .070 .157 -.464