Tuesday, October 25, 2011

NCAA football and computer rankings

I am a big fan of NCAA football. I found that in the past weeks the cold-blooded computer rankings are more accurate than the poll rankings(BCS, Harris Poll and USA Today). And they are pretty good in predicting the game results, such as the fall of Oklahoma last week.

Data and plotting
Those ranking data are available on ESPN’s website (and they are well structured data and easy to grab). I subtracted the 6 computer rankings by the overall ranking and drew those differences on a scatter plot.
-Alabama seems to have more chance to take LSU’s place.
-Although Michigan State beat Wisconsin last week, the computers still don’t favor it.
-Auburn looks very promising.
-Oklahoma State is highly possible to become #2.
One complaint about the computer ranking
I don’t like the averaging method of the 6 computer rankings used by BCS. Transformation and factor analysis may make full use of the information - SAS’s user guide provided a detailed solution by PROC PRINQUAL and PROC FACTOR.

data week9;
   input @1 RK: 20. @5 TEAM: $40. AVG_bcs: PVS_bcs: $2. RK_hp: $2. PTS_hp pct_hp RK_usa: $2. 
      PTS_usa pct_usa AVG_computer AH   RB   CM   KM   JS   PW;
cards;   
/* COPY AND PASTE DATA FROM http://espn.go.com/college-football/bcs
*/
;;;
run;

data _tmp01;
   set week9;
   array rank[6] ah--pw;
   do i = 1 to 6;
      if rank[i]= 0 then rank[i] = 25;
      rank[i] = rk - rank[i];
      drop i;
   end;
run;
proc sort data=_tmp01;
   by team;
run;
proc transpose data=_tmp01 out=_tmp02;
   var ah--pw;
   by team;
run;

proc template;
  define Style HeatMapStyle; 
    parent = styles.htmlblue;
    style GraphFonts from GraphFonts /                                                       
      'GraphLabelFont' = (", ",6pt) 
      'GraphValueFont' = (", ",6pt)
      'GraphDataFont' = (", ",6pt);    
   end; 
run;
proc template;
   define statgraph HeatMap.Grid;
   begingraph;
   layout overlay / border=true xaxisopts=(label='TEAM') yaxisopts=(label='COMPUTER ALGORITHM');
      scatterplot x=team y=_name_ / markercolorgradient=col1 markerattrs=(symbol=squarefilled size=32)
                                   colormodel=threecolorramp name='s';
      continuouslegend 's' / orient=vertical location=outside valign=center halign=right;
   endlayout;
   endgraph;
   end;
run;
ods html style=HeatMapStyle image_dpi=300 ;
proc sgrender data=_tmp02 template=HeatMap.grid;
run;

Good math, bad engineering

As a formal statistician and a current engineer, I feel that a successful engineering project may require both the mathematician’s abilit...