1. 2. Macro to classify new points based on a 3. prior Fisher's discriminant analysis 4. 5. To run this macro: 6. 7. 1) Define the data matrix ZZZZX 8. 2) Define the group id variable ZTAG 9. 3) Call FISHDIS.DP to define discriminant functions 10. EVECT1, EVECT2, .. 11. 4) Define NR = number of discriminant to use (NR <= P) 12. 5) A matrix XNEW containing the new points to classify 13. 6) Enter: CALL FISHCLAS.DP 14. 15. This macro returns a variable, YGROUP, which identifies 16. the group to which the new point is classified. YGROUP 17. will have the same numbe of rows as XNEW. 18. 19FEEDBACK OFF 20DELETE YGROUP TEMP YY YX 21. 22IF NR NOT EXIST 23 LET NR = 2 24END OF IF 25. 26LET NEWPTS = MATRIX NUMBER OF ROWS XNEW 27. 28LOOP FOR I = 1 1 NEWPTS 29 LET X0 = MATRIX ROW XNEW I 30 . 31 . Calculate Yhats and Ybars 32 . 33 LET XBAR = MATRIX GROUP MEANS ZZZZX ZTAG 34 . 35 LOOP FOR J = 1 1 NG 36 LET XBARTEMP = MATRIX ROW XBAR J 37 LOOP FOR K = 1 1 NR 38 LET TEMP = EVECT^K * XBARTEMP 39 LET YBAR^J(K) = SUM TEMP 40 LET TEMP = EVECT^K * X0 41 LET Y(K) = SUM TEMP 42 END OF LOOP 43 END OF LOOP 44 . 45 . Find minimum sum of (yhat - ybar) square 46 . 47 PROBE CPUMAX 48 LET MINSUM = PROBEVAL 49 LOOP FOR J = 1 1 NG 50 LET ATEMP = (Y - YBAR^J)**2 51 LET ASUM = SUM ATEMP 52 IF ASUM < MINSUM 53 LET IGROUP = J 54 LET MINSUM = ASUM 55 END OF IF 56 END OF LOOP 57 LET YGROUP(I) = IGROUP 58 LET YX(I) = Y(1) 59 IF NR >= 2 60 LET YY(I) = Y(2) 61 END OF IF 62END OF LOOP 63. 64IF PLOTFLAG = 1 65 LET ZY = LINEAR COMBINATION ZZZZX EVECT1 66 LET ZX = LINEAR COMBINATION ZZZZX EVECT2 67 PLOT ZY ZX ZTAG 68 LIMITS FREEZE 69 PRE-ERASE OFF 70 CHARACTER FILL ON ALL 71 CHARACTER SIZE 1.2 72 PLOT YY YX 73 RESET PLOT CONTROL 74END OF IF 75. 76FEEDBACK ON 77PRINT YGROUP YX YY 78