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)