18 March, 2016

2016 Stabilization Points

I recalculated my stabilization points for 2016, using the same maximum likelihood technique I used for my 2015 calculations in the articles Estimating Theoretical Stabilization Points and WHIP Stabilization by the Gamma-Poisson Model.

(All data and code I used can be found on my github. I make no claims about the stability and/or efficiency of my code - there are a few places where I know it could use some work.)

I've included standard error estimates for 2016, but these should not be used to perform any kinds of tests or intervals to compare to the 2015 data - the 2015 values are estimates themselves with their own standard errors, and since I'm using the past 6 years worth of baseball data, approximately 5/6 of the data is common between the two estimates. The calculations I performed for 2015 can be found here for batting statistics and here for pitching statistics.

The cutoff values I picked were the minimum number of events (PA, AB, TBF, BIP, etc. - the denominators in the formulas) in order to be considered for a year. These cutoff values, and the choice of 6 years worth of data, were picked fairly arbitrarily - I tried to go with what was reasonable (based on seeing what others were doing and my own knowledge of baseball) and what seemed to work well in practice.

Offensive Statistics

\begin{array}{| l | l | c | c | c | c  | c | c |} \hline
\textrm{Stat}&\textrm{Formula}&\hat{M}&SE(\hat{M})&\hat{\mu} & \textrm{Cutoff}&2015\textrm{ }\hat{M} \\ \hline
\textrm{OBP}&\textrm{(H + BB + HBP)/PA} & 301.32 & 16.92  & 0.329 & 300 & 295.79\\
\textrm{BABIP}&\textrm{(H - HR)/(AB-SO-HR+SF)} & 433.04 &  38.91 & 0.305 & 300 & NA^*\\
\textrm{BA}&\textrm{H/AB} & 491.20 & 37.10  & 0.266 & 300 & 465.92\\
\textrm{SO Rate}&\textrm{SO/PA} & 49.23 & 1.91  & 0.184 & 300 & 49.73\\
\textrm{BB Rate}&\textrm{(BB-IBB)/(PA-IBB)} & 112.44 & 4.93 & 0.077 & 300 & 110.91\\
\textrm{1B Rate}&\textrm{1B/PA} & 223.86 & 11.48 & 0.159 & 300 & 226.16\\
\textrm{2B Rate}&\textrm{2B/PA} & 1169.75 & 135.60 & 0.047 & 300 & 1025.31\\
\textrm{3B Rate}&\textrm{3B/PA} & 365.06 & 4.93 & 0.005 & 300 & 372.50\\
\textrm{XBH Rate} & \textrm{(2B + 3B)/PA} & 1075.41 & 118.22 & 0.052 & 300 & 1006.30\\
\textrm{HR Rate} & \textrm{HR/PA} & 126.35 & 6.03 & 0.027 & 300 & 124.52\\
\textrm{HBP Rate} & \textrm{HBP/PA} & 300.97 & 18.60 & 0.009 & 300 & 297.41 \\ \hline
\end{array}

* For whatever reason, I did not calculate the stabilization point for hitting BABIP in 2015.

In general, a larger stabilization point will be due to a decreased spread of talent levels - as talent levels get closer together, more extreme stats become less and less likely, and will be shrunk  harder towards the mean. Consequently, it takes more observations to know that a player's high or low stats (relative to the rest of the league) are real and not just a fluke of randomness. Similarly, smaller stabilization points will point towards an increase in the spread of talent levels.

Most stabilization points are very similar to their 2015 counterparts, though there is a general increasing trend (seven out of ten statistics), with increases tending towards larger than decreases.

Pitching Statistics

\begin{array}{| l | l | c | c | c | c  | c | c |} \hline
\textrm{Stat}&\textrm{Formula}&\hat{M}&SE(\hat{M})&\hat{\mu} & \textrm{Cutoff}&2015 \textrm{ }\hat{M} \\ \hline
\textrm{BABIP}&\textrm{(H-HR)/(GB + FB + LD)}&1408.72& 258.33 & 0.289 &300&2006.71\\
\textrm{GB Rate}&\textrm{GB/(GB + FB + LD)}& 63.53 &3.51 & 0.449 &300& 65.52\\
\textrm{FB Rate}&\textrm{FB/(GB + FB + LD)}& 59.80 &3.28& 0.347 &300&61.96\\
\textrm{LD Rate}&\textrm{LD/(GB + FB + LD)}& 731.02 & 87.48 & 0.203 &300&768.42\\
\textrm{HR/FB Rate}&\textrm{HR/FB}&488.53 & 90.14 & 0.103 &100&505.11\\
\textrm{SO Rate}&\textrm{SO/TBF}& 93.15 &5.18& 0.189&400&90.94\\
\textrm{HR Rate}&\textrm{HR/TBF}& 949.02 & 110.87 & 0.025 &400&931.59\\
\textrm{BB Rate}&\textrm{(BB-IBB)/(TBF-IBB)}& 236.87 & 15.70 & 0.069 &400&221.25\\
\textrm{HBP Rate}&\textrm{HBP/TBF}& 939.00 & 111.88 & 0.008 &400&989.30\\
\textrm{Hit rate}&\textrm{H/TBF}&559.18 & 46.08 & 0.235 &400&623.35\\
\textrm{OBP}&\textrm{(H + BB + HBP)/TBF}& 526.77 & 45.07 & 0.312 &400&524.73\\
\textrm{WHIP}&\textrm{(H + BB)/IP*}& 78.97 & 5.60 & 1.29 &80&77.20\\
\textrm{ER Rate}&\textrm{ER/IP*}& 63.08 & 4.23 & 0.439&80&59.55\\
\textrm{Extra BF}&\textrm{(TBF - 3IP*)/IP*}& 75.79 & 5.31 & 1.22 &80&73.00\\ \hline
\end{array}

* When dividing by IP, I corrected the 0.1 and 0.2 representations to 0.33 and 0.67, respectively.

Stabilization points are equal in being higher or lower, and generally close to last year's values, indicating not much of a change in the distributions of talent levels. Interestingly, the stabilization point for BABIP dropped by nearly 600 BIP - whether this is due to the (notoriously large) variance of BABIP or a mistake in either this or last year's calculation on my part, I'm not sure.

Usage

Aside from the obvious use of knowing approximately when results are half due to luck and half from skill, these stabilization points (along with league means) can be used to provide very basic confidence intervals and prediction intervals for estimates that have been shrunk towards the population mean, as demonstrated in my article From Stabilization to Interval Estimation. I believe the confidence intervals from my method should be similar to the intervals from Sean Dolinar's great fangraphs article A New Way to Look at Sample Size, though I have not personally tested this, and am not familiar with the Cronbach's alpha methodology he uses (or with reliability analysis in general).

For example, suppose that in the first half, a player has an on-base percentage of 0.380 in 300 plate appearances, corresponding to 114 on-base events. A 95% confidence interval using my empirical Bayesian techniques (based on a normal-normal model) is

$\dfrac{114 + 0.329*301.32}{300 + 301.32} \pm 1.96 \sqrt{\dfrac{0.329(1-0.329)}{301.32 + 300}} = (0.317,0.392)$

That is, we believe the player's true on-base percentage to be between 0.317 and 0.392 with 95% confidence. I used a normal distribution for talent levels with a normal approximation to the binomial for the distribution of observed OBP, but that is not the only possible choice - it just resulted in the simplest formulas for the intervals.

Suppose that the player will get an additional $\tilde{n} = 250$ PA in the second half of the season. A 95% prediction interval for his OBP over those PA is given by

$\dfrac{114 + 0.329*301.32}{300 + 301.32} \pm 1.96 \sqrt{\dfrac{0.329(1-0.329)}{301.32 + 300} + \dfrac{0.329(1-0.329)}{250}} = (0.285,0.424)$

That is, 95% of the time the player's OBP over the 250 PA in the second half of the season should be between 0.285 and 0.424. These intervals are overly optimistic and "dumb" in that they take only the league mean and variance and the player's own statistics into account, representing an advantage only over 95% unshrunk intervals, but when I tested them in my article "From Stabilization to Interval Estimation", they worked well for prediction.

As usual, all my data and code can be found on my github. I wrote a general function in $R$ to calculate the stabilization point for any basic counting stat, or unweighted sums of counting stats like OBP (I am still working on weighted sums so I can apply this to things like wOBA ). The function returns the estimated league mean of the statistic and estimated stabilization point, a standard error for the stabilization point, and what model was used (I only have two programmed in - 1 for the beta-binomial and 2 for the gamma-Poisson). It also gives a plot of the estimated stabilization at different numbers of events, with 95% confidence bounds.

> stabilize(h$\$$H + h\$$BB + h$\$$HBP, h\$$PA, cutoff = 300, 1)
$\$$Parameters [1] 0.329098 301.317682 \$$Standard.Error [1] 16.92138$\Model
[1] "Beta-Binomial"

The confidence bounds are created from the estimates $\hat{M}$ and $SE(\hat{M})$ above and the formula

$\left(\dfrac{n}{n+\hat{M}}\right) \pm 1.96 \left[\dfrac{n}{(n+\hat{M})^2}\right] SE(\hat{M})$

which is obtained from the applying the delta method to the function $p(\hat{M}) = n/(n + \hat{M})$. Note that the mean and prediction intervals I gave do not take $SE(\hat{M})$ into account (ignoring the uncertainty surrounding the correct shrinkage amount, which is indicated by the confidence bounds above), but this is not a huge problem - if you don't believe me, plug slightly different values of $M$ into the formulas yourself and see that the resulting intervals do not change much.

Maybe somebody else out there might find this useful. As always, feel free to post any comments or suggestions!