MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Modeling of NFL game results

  • To: mathgroup at smc.vnet.net
  • Subject: [mg129267] Re: Modeling of NFL game results
  • From: Ray Koopman <koopman at sfu.ca>
  • Date: Fri, 28 Dec 2012 05:33:43 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <kbbitr$9oc$1@smc.vnet.net> <kbh6da$iie$1@smc.vnet.net>

On Dec 27, 2:03 am, Scott Hemphill <hemph... at hemphills.net> wrote:
> Scott Hemphill <hemph... at hemphills.net> writes:
>
> [snip]
>
>> I decided to rate each team with a single number, such that the
>> probability that a team rated "r1" has a probability beating a team
>> rated "r2" is given by:
>>
>>   p = CDF[NormalDistribution[], r1-r2];
>
> Hmmm.  I guess my code actually implements "r2-r1" instead of "r1-r2".
> It doesn't matter, except one way high ratings are better than low
> ratings, and the other is vice versa.
>
>> filename="matrix.m";
>> prec;
>
> I don't know how this line got shortened.  My original has "prec".
>
> Scott
> --
> Scott Hemphill  hemph... at alumni.caltech.edu
> "This isn't flying.  This is falling, with style."  -- Buzz Lightyear

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.



  • Prev by Date: format legend?
  • Next by Date: Re: Attach legend to a family of functions?
  • Previous by thread: Re: Modeling of NFL game results
  • Next by thread: Re: Modeling of NFL game results