Comments / New

Penalty Kill Save Percentage

I expanded my look at save percentages to penalty kill data. Once again I calculated logits from the save percentages. I removed goalies with logits that were infinity or undefined. Compared to even strength, the penalty kill data is a real muddle. The best model explains only about 13% of the variability seen. About 87% of the variability remains unexplained.

Penalty Kill versus Even Strength

There is a small correlation between even strength save percentage and penalty kill save percentage. Penalty kill save percentage is converted to “PKLogit” and even strength save percentage is converted to “RawLogit”.


Pkraw_medium

 

 

> cor.test(RawLogit, PKLogit, alternative="two.sided", method="pearson")
Pearson's product-moment correlation
data: RawLogit and PKLogit
t = 7.4081, df = 868, p-value = 3.035e-13
alternative hypothesis: true correlation is not equal to 0 
95 percent confidence interval:
0.1803148 0.3053741
sample estimates:
 cor0.2438580> LinearModel.10 <- lm(PKLogit ~RawLogit, Data=PKxxx, weights=PKSA)
> anova(LinearModel.10)
Analysis of Variance Table
Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F) 
RawLogit 1 497.5 497.54 48.466 6.629e-12 ***
Residuals 868 8910.7 10.27 

Year Effect

Unlike even strength, there does not seem to be a year effect. The dotted line is the mean. The solid line is the least squares best fit.

 

Pklogityear_medium

> LinearModel.11 <- lm(PKLogit ~ Year, Data=PKxxx, weights=PKSA)
> anova(LinearModel.11)
Analysis of Variance Table
Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F)
Year 1 9.2 9.1984 0.8495 0.3570
Residuals 868 9399.1 10.8284 

Team Effect

Taken by itself, there is a small team effect.

> LinearModel.12 <- lm(PKLogit ~ Team, Data=PKxxx, weights=PKSA)
> anova(LinearModel.12)

Analysis of Variance Table
Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F) 
Team 29 566.1 19.521 1.8545 0.004252 **
Residuals 840 8842.1 10.526 

Goalie Effect

Taken by itself, there does not seem to be a goalie effect.

> LinearModel.13 <- lm(PKLogit ~ GoalieName, Data=PKxxx, weights=PKSA)
> anova(LinearModel.13)

Analysis of Variance Table
Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F)
GoalieName 220 2535.4 11.525 1.0883 0.2148
Residuals 649 6872.8 10.590 

Multiple Effects

Looking at Team, Year, and Goalie.

> LinearModel.16 <- lm(PKLogit ~ Year + Team + lastfirst, data=PKData, weights=PKSA)
> anova(LinearModel.16)

Analysis of Variance Table
Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F) 
Year 1 9.2 9.1984 0.9051 0.341786 
Team 29 566.3 19.5272 1.9215 0.002828 **
lastfirst 220 2542.1 11.5548 1.1370 0.118023 
Residuals 619 6290.7 10.1627 

Since goalie doesn’t add to the model, let’s take it out.

Looking at Team and Year.

> LinearModel.14 <- lm(PKLogit ~ Year+Team, data=PKData, weights=PKSA)
> anova(LinearModel.14)
Analysis of Variance Table

Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F) 
Year 1 9.2 9.1984 0.8737 0.350194 
Team 29 566.3 19.5272 1.8548 0.004243 **
Residuals 839 8832.8 10.5277 

Finally, looking at Team, Year, and Team*Year interaction.

> LinearModel.15 <- lm(PKLogit ~ Year*Team, data=PKData, weights=PKSA)
> anova(LinearModel.15)

Analysis of Variance Table
Response: PKLogit
 Df Sum Sq Mean Sq F value Pr(>F) 
Year 1 9.2 9.1984 0.9124 0.3397687 
Team 29 566.3 19.5272 1.9369 0.0023447 ** 
Year:Team 29 666.6 22.9845 2.2798 0.0001598 ***
Residuals 810 8166.2 10.0817 

For the coefficients of this model, see the Appendix below.

Comparing the two models shows we have not lost anything.

> anova(LinearModel.15,LinearModel.16)
Analysis of Variance Table

Model 1: PKLogit ~ Year * Team
Model 2: PKLogit ~ Year + Team + lastfirst
Res.Df RSS Df Sum of Sq F Pr(>F)
1 810 8166.2 
2 590 5870.4 220 2295.8 1.0488 0.3283

Conclusions

Penalty kill save percentage is best predicted by Team and a Team*Year interaction term. Goaltenders do not seem to differ significantly and do not add resolving power to the model. The model predicts only about 13% of the total variability seen in the data.

Appendix

> summary(LinearModel.15)

Call:
lm(formula = PKData$PKLogit ~ Year * Team, data = PKData, weights = PKSA)

Residuals:
Min 1Q Median 3Q Max 
-8.0952 -2.3457 -0.5473 1.7953 9.7120 

Coefficients:
Estimate Std. Error t value Pr(>|t|) 
(Intercept) -23.986591 22.206924 -1.080 0.28040 
Year 0.012944 0.011086 1.168 0.24329 
Team[T.ATL] -10.523932 35.026909 -0.300 0.76391 
Team[T.BOS] 14.805245 32.815465 0.451 0.65199 
Team[T.BUF] 27.982456 31.241862 0.896 0.37069 
Team[T.CAR] 71.411711 32.527856 2.195 0.02842 * 
Team[T.CBJ] 29.715859 39.199665 0.758 0.44863 
Team[T.CGY] -11.023374 30.860942 -0.357 0.72104 
Team[T.CHI] 6.342364 32.909471 0.193 0.84723 
Team[T.COL] 83.106082 31.357718 2.650 0.00820 **
Team[T.DAL] 77.805340 33.163387 2.346 0.01921 * 
Team[T.DET] 78.066731 32.214720 2.423 0.01560 * 
Team[T.EDM] 23.276299 31.503776 0.739 0.46022 
Team[T.FLA] -5.228478 31.574171 -0.166 0.86852 
Team[T.LAK] 75.850056 31.358441 2.419 0.01579 * 
Team[T.MIN] -31.303930 40.540374 -0.772 0.44024 
Team[T.MTL] 20.734570 32.961644 0.629 0.52949 
Team[T.NJD] 11.933600 33.733418 0.354 0.72361 
Team[T.NSH] 25.535574 34.270177 0.745 0.45641 
Team[T.NYI] 49.159100 33.088931 1.486 0.13776 
Team[T.NYR] -21.016443 32.208480 -0.653 0.51426 
Team[T.OTT] 33.700302 32.921507 1.024 0.30630 
Team[T.PHI] 39.878339 33.149079 1.203 0.22933 
Team[T.PHX] 20.381213 33.090162 0.616 0.53811 
Team[T.PIT] 24.266255 31.996114 0.758 0.44842 
Team[T.SJS] -14.503204 32.040726 -0.453 0.65092 
Team[T.STL] -15.382665 32.119666 -0.479 0.63213 
Team[T.TBL] 35.760341 32.690079 1.094 0.27432 
Team[T.TOR] 98.249645 32.546095 3.019 0.00262 **
Team[T.VAN] 29.383455 32.439625 0.906 0.36532 
Team[T.WSH] 89.971782 30.869225 2.915 0.00366 **
Year:Team[T.ATL] 0.005163 0.017480 0.295 0.76781 
Year:Team[T.BOS] -0.007405 0.016381 -0.452 0.65137 
Year:Team[T.BUF] -0.013926 0.015597 -0.893 0.37221 
Year:Team[T.CAR] -0.035679 0.016237 -2.197 0.02828 * 
Year:Team[T.CBJ] -0.014835 0.019559 -0.758 0.44839 
Year:Team[T.CGY] 0.005478 0.015407 0.356 0.72227 
Year:Team[T.CHI] -0.003197 0.016428 -0.195 0.84574 
Year:Team[T.COL] -0.041499 0.015656 -2.651 0.00819 **
Year:Team[T.DAL] -0.038867 0.016556 -2.348 0.01913 * 
Year:Team[T.DET] -0.038944 0.016083 -2.421 0.01568 * 
Year:Team[T.EDM] -0.011641 0.015727 -0.740 0.45939 
Year:Team[T.FLA] 0.002624 0.015761 0.166 0.86783 
Year:Team[T.LAK] -0.037921 0.015655 -2.422 0.01564 * 
Year:Team[T.MIN] 0.015664 0.020228 0.774 0.43893 
Year:Team[T.MTL] -0.010338 0.016453 -0.628 0.52996 
Year:Team[T.NJD] -0.005968 0.016839 -0.354 0.72311 
Year:Team[T.NSH] -0.012764 0.017106 -0.746 0.45579 
Year:Team[T.NYI] -0.024568 0.016514 -1.488 0.13722 
Year:Team[T.NYR] 0.010468 0.016079 0.651 0.51519 
Year:Team[T.OTT] -0.016838 0.016433 -1.025 0.30583 
Year:Team[T.PHI] -0.019930 0.016547 -1.204 0.22877 
Year:Team[T.PHX] -0.010213 0.016520 -0.618 0.53662 
Year:Team[T.PIT] -0.012158 0.015972 -0.761 0.44673 
Year:Team[T.SJS] 0.007222 0.015995 0.452 0.65175 
Year:Team[T.STL] 0.007655 0.016033 0.477 0.63319 
Year:Team[T.TBL] -0.017942 0.016318 -1.100 0.27186 
Year:Team[T.TOR] -0.049103 0.016249 -3.022 0.00259 **
Year:Team[T.VAN] -0.014681 0.016193 -0.907 0.36487 
Year:Team[T.WSH] -0.044899 0.015410 -2.914 0.00367 **

Looking for an easy way to support Arctic Ice Hockey?
Use our Affiliate Link when shopping hockey merch this holiday season!

Talking Points