Chapter Contents 
Previous 
Next 
The PRINQUAL Procedure 
The data in this example are 1985 1986 preseason rankings of 35 college basketball teams by 10 different news services. The services do not all rank the same teams or the same number of teams, so there are missing values in these data. Each of the 35 teams in the data set is ranked by at least one news service. One way of summarizing these data is with a principal component analysis, since the rankings should all be related to a single underlying variable, the first principal component.
You can use PROC PRINQUAL to estimate the missing ranks and compute scores for all observations. You can formulate a PROC PRINQUAL analysis that assumes that the observed ranks are ordinal variables and replaces the ranks with new numbers that are monotonic with the ranks and better fit the one principal component model. The missing rank estimates need to be constrained since a news service would have positioned the unranked teams below the teams it ranked. PROC PRINQUAL should impose order constraints within the nonmissing values and between the missing and nonmissing values, but not within the missing values. PROC PRINQUAL has sophisticated missing data handling facilities; however, these facilities cannot directly handle this problem. The solution requires reformulating the problem.
By performing some preliminary data manipulations, specifying the N=1 option in the PROC PRINQUAL statement, and specifying the UNTIE transformation in the TRANSFORM statement, you can make the missing value estimates conform to the requirements. The PROC MEANS step finds the largest rank for each variable. The next DATA step replaces missing values with a value that is one larger than the largest observed rank. The N=1 option (in the PRINQUAL procedure) specifies that the variables should be transformed to make them as onedimensional as possible. The UNTIE transformation in the TRANSFORM statement monotonically transforms the ranks, untying any ties in an optimal way. Because the only ties are for the values that replace the missing values, and because these values are larger than the observed values, the rescoring of the data satisfies the preceding requirements.
The following statements create the data set and perform the transformations discussed previously. These statements produce Output 53.2.1.
* Example 2: Basketball Data * * Preseason 1985 College Basketball Rankings * (rankings of 35 teams by 10 news services) * * Note: (a) Various news services rank varying numbers of teams. * (b) Not all 35 teams are ranked by all news services. * (c) Each team is ranked by at least one service. * (d) Rank 20 is missing for UPI.; title1 '1985 Preseason College Basketball Rankings'; data bballm; input School $13. CSN DurhamSun DurhamHerald WashingtonPost USA_Today SportMagazine InsideSports UPI AP SportsIllustrated; label CSN = 'Community Sports News (Chapel Hill, NC)' DurhamSun = 'Durham Sun' DurhamHerald = 'Durham Morning Herald' WashingtonPost = 'Washington Post' USA_Today = 'USA Today' SportMagazine = 'Sport Magazine' InsideSports = 'Inside Sports' UPI = 'United Press International' AP = 'Associated Press' SportsIllustrated = 'Sports Illustrated' ; format CSNSportsIllustrated 5.1; datalines; Louisville 1 8 1 9 8 9 6 10 9 9 Georgia Tech 2 2 4 3 1 1 1 2 1 1 Kansas 3 4 5 1 5 11 8 4 5 7 Michigan 4 5 9 4 2 5 3 1 3 2 Duke 5 6 7 5 4 10 4 5 6 5 UNC 6 1 2 2 3 4 2 3 2 3 Syracuse 7 10 6 11 6 6 5 6 4 10 Notre Dame 8 14 15 13 11 20 18 13 12 . Kentucky 9 15 16 14 14 19 11 12 11 13 LSU 10 9 13 . 13 15 16 9 14 8 DePaul 11 . 21 15 20 . 19 . . 19 Georgetown 12 7 8 6 9 2 9 8 8 4 Navy 13 20 23 10 18 13 15 . 20 . Illinois 14 3 3 7 7 3 10 7 7 6 Iowa 15 16 . . 23 . . 14 . 20 Arkansas 16 . . . 25 . . . . 16 Memphis State 17 . 11 . 16 8 20 . 15 12 Washington 18 . . . . . . 17 . . UAB 19 13 10 . 12 17 . 16 16 15 UNLV 20 18 18 19 22 . 14 18 18 . NC State 21 17 14 16 15 . 12 15 17 18 Maryland 22 . . . 19 . . . 19 14 Pittsburgh 23 . . . . . . . . . Oklahoma 24 19 17 17 17 12 17 . 13 17 Indiana 25 12 20 18 21 . . . . . Virginia 26 . 22 . . 18 . . . . Old Dominion 27 . . . . . . . . . Auburn 28 11 12 8 10 7 7 11 10 11 St. Johns 29 . . . . 14 . . . . UCLA 30 . . . . . . 19 . . St. Joseph's . . 19 . . . . . . . Tennessee . . 24 . . 16 . . . . Montana . . . 20 . . . . . . Houston . . . . 24 . . . . . Virginia Tech . . . . . . 13 . . . ; * Find maximum rank for each news service and replace * each missing value with the next highest rank.; proc means data=bballm noprint; output out=maxrank max=mcsn mdurs mdurh mwas musa mspom mins mupi map mspoi; run; data bball; set bballm; if _n_=1 then set maxrank; array services[10] CSNSportsIllustrated; array maxranks[10] mcsnmspoi; keep School CSNSportsIllustrated; do i=1 to 10; if services[i]=. then services[i]=maxranks[i]+1; end; run; * Assume that the ranks are ordinal and that unranked teams * would have been ranked lower than ranked teams. Monotonically * transform all ranked teams while estimating the unranked teams. * Enforce the constraint that the missing ranks are estimated to * be less than the observed ranks. Order the unranked teams * optimally within this constraint. Do this so as to maximize * the variance accounted for by one linear combination. This * makes the data as nearly rank one as possible, given the * constraints. * * NOTE: The UNTIE transformation should be used with caution. * If frequently produces degenerate results.; proc prinqual data=bball out=tbball scores n=1 tstandard=z; title2 'Optimal Monotonic Transformation of Ranked Teams'; title3 'with Constrained Estimation of Unranked Teams'; transform untie(CSN  SportsIllustrated); id School; run;Output 53.2.1: Transformation of Basketball Team Rankings
It is possible to compute the composite ranking using PROC PRINCOMP and some preliminary data manipulations, similar to those discussed previously. Chapter 52, "The PRINCOMP Procedure," contains an example where the average of the unused ranks in each poll is substituted for the missing values, and each observation is weighted by the number of nonmissing values. This method has much to recommend it. It is much faster and simpler than using PROC PRINQUAL. It is also much less prone to degeneracies and capitalization on chance. However, PROC PRINCOMP does not allow the nonmissing ranks to be monotonically transformed and the missing values untied to optimize fit.
PROC PRINQUAL monotonically transforms the observed ranks and estimates the missing ranks (within the constraints given previously) to account for almost 95 percent of the variance of the transformed data by just one dimension. PROC FACTOR is then used to report details of the principal component analysis of the transformed data. As shown by the Factor Pattern values in Output 53.2.2, nine of the ten news services have a correlation of 0.95 or larger with the scores on the first principal component after the data are optimally transformed. The scores are sorted and the composite ranking is displayed following the PROC FACTOR output. More confidence can be placed in the stability of the scores for the teams that are ranked by the majority of the news services than in scores for teams that are seldom ranked.
The monotonic transformations are plotted for each of the ten news services. These plots are the values of the raw ranks (with the missing ranks replaced by the maximum rank plus one) versus the rescored (transformed) ranks. The transformations are the step functions that maximize the fit of the data to the principal component model. Smoother transformations could be found by using MSPLINE transformations, but MSPLINE transformations would not correctly handle the missing data problem.
The following statements perform the final analysis and produce Output 53.2.2 through Output 53.2.3:
* Perform the Final Principal Component Analysis; proc factor nfactors=1; var TCSN  TSportsIllustrated; title4 'Principal Component Analysis'; run; proc sort; by Prin1; run; * Display Scores on the First Principal Component; proc print; title4 'Teams Ordered by Scores on First Principal Component'; var School Prin1; run; * Plot the Transformations; goptions goutmode=replace nodisplay; %let opts = haxis=axis2 vaxis=axis1 frame cframe=ligr; * Depending on your goptions, these plot options may work better: * %let opts = haxis=axis2 vaxis=axis1 frame; proc gplot; title; axis1 minor=none label=(angle=90 rotate=0) order=(3 to 2 by 1); axis2 minor=none order=(0 to 40 by 10); plot TCSN*CSN / &opts name='prqex1'; plot TDurhamSun*DurhamSun / &opts name='prqex2'; plot TDurhamHerald*DurhamHerald / &opts name='prqex3'; plot TWashingtonPost*WashingtonPost / &opts name='prqex4'; plot TUSA_Today*USA_Today / &opts name='prqex5'; plot TSportMagazine*SportMagazine / &opts name='prqex6'; plot TInsideSports*InsideSports / &opts name='prqex7'; plot TUPI*UPI / &opts name='prqex8'; plot TAP*AP / &opts name='prqex9'; plot TSportsIllustrated*SportsIllustrated / &opts name='prqex10'; symbol1 c=blue; run; quit; goptions display; proc greplay nofs tc=sashelp.templt template=l2r2; igout gseg; treplay 1:prqex1 2:prqex2 3:prqex3 4:prqex4; treplay 1:prqex5 2:prqex6 3:prqex7 4:prqex8; treplay 1:prqex9 3:prqex10; run; quit;Output 53.2.2: Alternative Approach for Analyzing Basketball Rankings


The ordinary PROC PRINQUAL missing data handling facilities do not work for these data because they do not constrain the missing data estimates properly. If you code the missing ranks as missing and specify linear transformations, then you can compute leastsquares estimates of the missing values without transforming the observed values. The first principal component then accounts for 92 percent of the variance after 20 iterations. However, Virginia Tech is ranked number 11 by its score even though it appeared in only one poll (InsideSports ranked it number 13, anchoring it firmly in the middle). Specifying monotone transformations is also inappropriate since they too allow unranked teams to move in between ranked teams.
With these data, the combination of monotone transformations and the freedom to score the missing ranks without constraint leads to degenerate transformations. PROC PRINQUAL tries to merge the 35 points into two points, producing a perfect fit in one dimension. There is evidence for this after 20 iterations when the Average Change, Maximum Change, and Variance Change values are all increasing, instead of the more stable decreasing change rate seen in the analysis shown. The change rates all stop increasing after 41 iterations, and it is clear by 70 or 80 iterations that one component will account for 100 percent of the transformed variables variance after sufficient iteration. While this may seem desirable (after all, it is a perfect fit), you should, in fact, be on guard when this happens. Whenever convergence is slow, the rates of change increase, or the final data perfectly fit the model, the solution is probably degenerating due to too few constraints on the scorings.
PROC PRINQUAL can account for 100 percent of the variance by scoring Montana and UCLA with one positive value on all variables and scoring all the other teams with one negative value on all variables. This inappropriate analysis suggests that all ranked teams are equally good except for two teams that are less good. Both of these two teams are ranked by only one news service, and their only nonmissing rank is last in the poll. This accounts for the degeneracy.
Chapter Contents 
Previous 
Next 
Top 
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.