stassen@trwspp.UUCP (10/03/84)
[]
I have written a rather interesting program based on the property
of "transitivity" in football. The theory states that if A beats B by N
points, and B beats C by M points, then A will beat C by M+N points.
Before you laugh yourself silly, I wrote a program which used a
slightly more sophisticated version of this theory. Last week it was 10-4.
Of course, it has its drawbacks: it can't be used until two or three weeks
into the season, and if there are no real connections between two teams
due to compete, then the result is pretty worthless.
But, anyways, here's the algorithm:
(NOTATION)
Sab is the score in a game played by A and B. It is
the points scored by A minus the points scored by B.
Vn are the differences in scores summed up over one link.
In are the "importance factors" for the links.
(ALGORITHM)
Suppose team A is to play team B.
We would first find (with recursion) all "links" between A and B,
without "loops." ie, A played C, who played D, who played E,
who played B. Each team can only appear once in any link ("no
loops"), so you couldn't get something like: A played D, who
played C, who played E, who played D, who played B. That would
be shortened to: A played D, who played B.
Then, when all links are figured out, multiply each link by
an "importance factor" (In). The importance factor is 2 ** (10 -
the number of steps in the link) * (18 - number of weeks ago
of the oldest step ) ** 2. For a "second divisional matchup," (when
two teams have played each other before), a special importance
value of 1000000 is used, for the "direct" link.
Then you compute the differences in scores (Vn) for each link, for
example, if the link is A -> D -> C -> B, you would add
Sad + Sdc + Scb. (written out), you would take:
points scored by A against D - points scored by D against A
+ points scored by D against C - points scored by C against D
+ points scored by C against B - points scored by B against C
Take this value and multiply it by the "importance factor."
Repeat for each link that has been found. Take the sum of these
values, and divide by the sum of the importance factors.
Or,
Sum over n of ( Vn * In )
-------------------------
Sum over n of ( In )
This is the predicted "point spread" between the two teams in question.
Note: it runs a lot faster if you don't allow "links" with more than 10
hops (which aren't very useful, anyways).
I don't think it is going to go 10-4 this week ... here are its
picks: (These were generated by a slightly different version
than indicated above, so don't worry if you do not get the same
ones if you write the program).
Chicago +3 over Saint Louis
(!) Kansas City +1 over San Diego
(!) Tampa Bay +4 over Detroit
New England +27 over Cincinnati
(!) Indianapolis +19 over Philadelphia
Miami +51 over Houston
Rams +4 over New Orleans
(!) Atlanta +12 over New York Giants
Cleveland +16 over New York Jets
Washington +25 over Dallas
(!) Buffalo +11 over Seattle
San Francisco +41 over Pittsburgh
Raiders +32 over Minnesota
Green Bay +1/2 over Denver
Oh well, it is a very new algorithm, and certainly could use
some "tuning up." All suggestions will be welcomed. It seems
to do rather well with "compensating" for teams with good/poor
defenses/offenses, but it can get confused if a game is much
closer/much less close than the score indicates. In this case,
maybe the halftime or end-of-3rd-quarter score should be considered.
(or just fudging the final score to reflect how close the game
really was).
------------------------------------------------------------------------------
The opinions expressed in this document are my own. They are not intended to
reflect the views of my employer - TRW - or anyone else. Intelligent and
responsible commentaries should be directed to me; Flames to the bit bucket.
------------------------------------------------------------------------------
Christian W. Stassen [decvax!trwrb,vortex,ihnp4!vortex]!trwspp!stassen
"Seek not, lest Ye crash the heads."ryan@fremen.DEC (10/06/84)
(Buffalo +11 over Seattle!!! - did you apply Bistromatics? :-) How about trying the algorithm with yardage instead of points (which would better represent those games where the score doesn't really represent what happened)? The problem, of course, is in translating the resulting yardage differentials into point spreads - it would take some tuning. Mike Ryan (ryan%fremen.DEC@decwrl, or some such nonsense)