NFL Markov: 5 of n (nflMarkov, the Python code)

In part 4, I described modeling the yards-gained distribution, including the probabilities to kick versus run a play. Here I will describe how these are controlled in the Markov chain computer program.

The program reads a parameter file which has a generic form of

parameter-name down ytg-min ytg-max yfog param-value

For a given down and distance range (yards-to-go, or ytg), the parameter values are stored as a function of yards-from-own-goal. Then, during run time, the parameter value is set using linear interpolation over yfog. This gives a very flexible input scheme. As a concrete example, here are example parameter values for “going for it on 4th”,


4thGoForItProb 4 1 1 0 0
4thGoForItProb 4 1 1 20 0
4thGoForItProb 4 1 1 50 0.24
4thGoForItProb 4 1 1 60 0.78
4thGoForItProb 4 1 1 70 0.75
4thGoForItProb 4 1 1 85 0.42
4thGoForItProb 4 1 1 100 0.50

4thGoForItProb 4 2 4 0 0
4thGoForItProb 4 2 4 20 0
4thGoForItProb 4 2 4 40 0.07
4thGoForItProb 4 2 4 50 0.10
4thGoForItProb 4 2 4 60 0.45
4thGoForItProb 4 2 4 80 0.14
4thGoForItProb 4 2 4 100 0.14

This says that, when its 4th and between 1 and 1 to go (in other words precisely 1), if yfog is between 0 and 20, then interpolate between 0 and 0. In other words the probability to go for it is 0. If yfog is between 20 and 50, interpolate between 0 and 0.24. So for example, half way in between, when yfog=35, the probability would be 0.12. On the other hand, if yards-to-go is between 2 and 4 (inclusive), then the probability at yfog=35 will be the slope, (0.07-0.00)/(40-20), times 35-20 = 15, plus the initial value at yfog = 20, which is 0. That is, 0 + 0.07/20*15 = 0.0525, which is a long-winded way of saying that the value is determined through linear interpolation between the points (20, 0) and (40, 0.07). If down is set to 0, it means the parameters hold for downs 1-4. The parameters that are controllable are,


intProb: interception probability
fumProb: fumble probability
incompleteProb: incompletion probability
yardsDistParsRush: parameters of the Bazin-Gauss function for rushes (G identically 0)
yardsDistParsPass: parameters of the Bazin-Gauss function for passes
4thGoForItProb: probability to go for it on 4th
4thFgProb: probability to go for a field goal on 4th
FgMakeProb: probability to make a field goal
passProb: given that you run a play, the probability to pass

The code has two modes, empirical and user-defined. If the empirical model is chosen, the parameters controlling the yards-gained distributions are ignored and the distributions are instead read in empirically.
The final input is a model name, which determines the output data file name, where the transition matrix and the expectation value vector (among other things) are stored for later reference or ease of comparison to a different model.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s