1. Perform a Fisher's dsicriminant analysis on Iris data. 2. 3. READ DATA, 3 GROUPS (N1=N2=N3=3), 2 VARIABLES 4. FEEDBACK OFF 5Echo on 6DIMENSION 200 COLUMNS 7SKIP 25 8READ IRIS.DAT SEPLENG SEPWIDTH PETLENG PETWIDTH TAG 9SKIP 0 10. 11LET NTOT = SIZE SEPLENG 12LET X = MATRIX DEFINITION SEPLENG NTOT 4 13LET P = MATRIX NUMBER OF COLUMNS X 14LET GROUPID = DISTINCT TAG 15LET NG = SIZE GROUPID 16LOOP FOR K = 1 1 NG 17 LET N(K) = SIZE TAG SUBSET TAG = K 18END OF LOOP 19LOOP FOR K = 1 1 P 20 LET XMGRAND(K) = MEAN X^K 21END OF LOOP 22. 23. CALCULATE B0 = SUM (I=1,NG) (XBARi - XBARALL)(XBARi-XBARALL)' 24. 25LET JUNK = 0 FOR I = 1 1 P 26LET B0 = DIAGONAL MATRIX JUNK 27. 28LOOP FOR K = 1 1 G 29 LOOP FOR L = 1 1 P 30 LET XMEANI(L) = MEAN X^L SUBSET TAG = K 31 END OF LOOP 32 LET TEMP = XMEANI - XMGRAND 33 LET XM = MATRIX DEFINITION TEMP P 1 34 LET XMT = MATRIX TRANSPOSE XM 35 LET B0TEMP = MATRIX MULTIPLY XM XMT 36 LET B0 = MATRIX ADDITION B0 B0TEMP 37END OF LOOP 38echo off 39print g 40PRINT " "; PRINT " "; PRINT "B0 MATRIX:"; PRINT B0 41pause 42. 43. CALCULATE Spooled = (N1-1)S1 + ... + (Ng-1)Sg)/(N1+...+ Ng - g) 44. W = Spooled WITHOUT THE DENOMINATOR TERM 45LET JUNK2 = 0 FOR I = 1 1 G 46LET W = DIAGONAL MATRIX JUNK2 47LOOP FOR K = 1 1 G 48 LET ROWLAST = SUM N FOR I = 1 1 K 49 LET ATEMP = N(K) 50 LET ROWFIRST = ROWLAST - ATEMP + 1 51 LET XTEMP = MATRIX DEFINITION X ROWLAST P ROWFIRST 52 LET SI = VARIANCE-COVARIANCE MATRIX XTEMP 53 LET ATEMP = ATEMP - 1 54 LET SI = MATRIX MULTIPLICATION SI ATEMP 55 LET W = MATRIX ADDITION W SI 56END OF LOOP 57LET DENOM = 1/(NTOT - NG) 58LET SPOOL = MATRIX MULTIPLY W DENOM 59PRINT " "; PRINT " "; PRINT "POOLED COVARIANCE MATRIX:"; PRINT SPOOL 60LET WINV = MATRIX INVERSE W 61LET WINVB = MATRIX MULTIPLICATION WINV B0 62. 63. COMPUTE EIGENVALUES AND SORT IN DECREASING ORDER 64. COMPUTE EIGENVECTORS, ONLY KEEP REAL COMPONENT, SORT 65. 66LET INDX = SEQUENCE 1 1 P 67LET E = MATRIX EIGENVALUES WINVB 68RETAIN E FOR I = 1 1 P 69LET ESORT = SORTC E INDX 70LET REVERSE = SEQUENCE P 1 1 71LET REVERSE = SORTC REVERSE ESORT INDX 72LET EV = MATRIX EIGENVECTORS WINVB 73LET DIAG = 0 FOR I = 1 1 P 74LET EVECT = DIAGONAL MATRIX DIAG 75LOOP FOR K = 1 1 P 76 LET LTAG = INDX(K) 77 LET EVECT^LTAG = EV^K FOR I = 1 1 P 78END OF LOOP 79PRINT " "; PRINT " "; PRINT "EIGENVALUES:"; PRINT ESORT 80. NORMALIZE L'SpooledL =1 81. DIST = L'SpooledL, MULTIPLY EIGENVECTOR BY 1/SQRT(DIST) 82LOOP FOR K = 1 1 P 83 LET LTEMP = MATRIX DEFINITION EVECT^K P 1 84 LET LTEMPT = MATRIX TRANSPOSE LTEMP 85 LET MATTMP = MATRIX MULTIPLY LTEMPT SPOOL 86 LET MATTMZ = MATRIX MULTIPLY MATTMP LTEMP 87 LET DIST = MATTMZ1(1) 88 LET FACT = 1/SQRT(DIST) 89 LET EVECT^K = FACT*EVECT^K 90END OF LOOP 91PRINT " "; PRINT " " 92PRINT "COLUMNS ARE THE DISCRIMINANT FUNCTIONS:"; PRINT EVECT 93. PLOT FIRST 2 DISCRIMINANTS 94LET ZY = 0 FOR I = 1 1 NTOT 95LOOP FOR K = 1 1 P 96 LET FACT = EVECT1(K) 97 LET ZY = ZY + FACT*X^K 98END OF LOOP 99LET ZX = 0 FOR I = 1 1 NTOT 100LOOP FOR K = 1 1 P 101 LET FACT = EVECT2(K) 102 LET ZX = ZX + FACT*X^K 103END OF LOOP 104LOOP FOR K = 1 1 NG 105 LET AY = MEAN ZY SUBSET TAG = K 106 LET AX = MEAN ZX SUBSET TAG = K 107 LET GMEANX(K) = AX 108 LET GMEANY(K) = AY 109END OF LOOP 110PRINT " "; PRINT " "; PRINT "GROUP MEANS:"; PRINT GMEANX GMEANY 111Y1LABEL FIRST DISCRIMINANT 112X1LABEL SECOND DISCRIMINANT 113CHARACTER CIRCLE SQUARE TRIANGLE 114LINE BLANK ALL 115LEGEND 1 CIRC() - SPECIES 1 116LEGEND 2 SQUA() - SPECIES 2 117LEGEND 3 TRIA() - SPECIES 3 118LEGEND FONT DUPLEX 119LEGEND SIZE 1.2 120TITLE PLOT FIRST 2 DISCRIMINANT FUNCTIONS 121PLOT ZY ZX TAG 122. 123FEEDBACK OFF 124