The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Inactive » comp.soft-sys.math.mathematica

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Modeling of NFL game results
Replies: 8   Last Post: Dec 29, 2012 3:09 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Scott Hemphill

Posts: 196
Registered: 12/13/04
Re: Modeling of NFL game results
Posted: Dec 29, 2012 3:08 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Ray Koopman <> writes:


> Some suggestions. Keep a 32 x 32 data matrix in which
> data[[m,n]] = the # of times m beat n, m,n = 1...32.
> The diagonals don't matter. The easiest way to eliminate infinite
> solutions is to initialize it as data = Table[eps,{32},{32}],
> where eps is some small positive value. (Use reals.)
> Update every week:
> win[m_,n_] := data[[m,n]]++;
> tie[m_,n_] := (data[[m,n]] += .5; data[[n,m]] += .5);
> Maximize Tr[LL[x,#]&/@Subsets[Range@32,{2}]].
> Fix x[32] = 0, maximize with respect to x[1]...x[31].
> Or define x[32] := -Tr[x/@Range@31], to fix the mean at 0.
> If[logit === True,
> LL[x_,{m_,n_}] := -(data[[m,n]]*Log[1. + Exp[x@n - x@m]] +
> data[[n,m]]*Log[1. + Exp[x@m -
> x@n]])
> LL[x_,{m_,n_}] := data[[m,n]]*Log[.5 + .5*Erf[.42(x@m - x@n)]] +
> data[[n,m]]*Log[.5 + .5*Erf[.42(x@n - x@m)]] ]
> The .42 puts the two solutions on approximately the same scale
> for .10 < p < .90 .
> Caveat user: I haven't tried any of that.

I haven't tried any of that yet, either, but it makes sense. At least,
it makes sense when you know what Tr does to a List. :-) You really do
try to reduce key strokes, don't you: "x@m" instead of "x[m]", "Tr"
instead of "Total", ....

I'll remember the value ".42" in connection with the meaning of "life,
the universe, and everything". :-)

I'm not so interested in using eps, because Mathematica's optimizer is
pretty well-behaved. I would be interested in seeing if I could improve
the model's predictive ability in the early season. The additive nature
of log-likelihood suggests using weights, and I could seed "data" with
last year's results with small weights. It might even make sense to
weight results from week to week with Exp[a(w-w0)], where "w0" is the
current week, to model a kind of a running average of a team's ability.
It won't track the sudden nature of an important player out for the
season with an injury, but the additional parameter "a" might be useful
to track the general rise or fall of a team's ability though the season.

Scott Hemphill
"This isn't flying. This is falling, with style." -- Buzz Lightyear

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.