! Fisher's Discriminant analysis (FisherDA.lng);
! There are two categories of observations, type 0 and type 1,
which we wish to distinguish based on explanatory variables;
! Key idea: Find a scoring formula:
score( i) = beta0 + beta1*xdat( k, 1) + beta2*xdat( i, 2) + ...
so to extent possible:
score( i) < 0 if observation i is of type 0,
score( i) > 0 if observation i is of type 1;
! Reference: Fisher, R.A. (1936), “The Use of Multiple Measurements in Taxonomical Problems,”
Annals of Eugenics, vol. 7, pp. 179-188.;
!Keywords: Binary choice, Categorical variables, Discriminant analysis, Fisher, Random forest;
SETS:
var: BETA,
mu0, MU1, mutot ;
vardep( VAR); ! The dependent variable;
varexp( VAR); ! The set of explanatory variables;
varpltx( var); ! Variable on X axis in plot/chart/graph;
varplty( var); ! Variable on Y axis in plot/chart/graph;
varwgt( var); ! The weight vector column (if used);
OBS: ERR, SCORE;
oxv( OBS, var): xdat;
vxv( var, var): covar, covarinv;
! Two subsets, based on category of the observation;
OBS0( OBS) : xp0, yp0;
OBS1( OBS) : xp1, yp1;
ENDSETS
DATA:
! Various data sets;
! Case: a small circle, Type 0, inside large circle, Type 1;
!CaCircle var = X1 X2 X1SQ X2SQ type wgtof;
!CaCircle vardep = type;
!CaCircle !CaCircle varexp = X1 X2 X1SQ X2SQ; !Can if include squared terms!CaCircle varpltx = X1; !CaCircle varplty = X2; !CaCircle varwgt = wgtof; !CaCircle xdat =
22.98 21.75 528.30 473.06 0 1
28.27 24.90 799.05 620.01 1 1
21.85 22.88 477.42 523.71 0 1
24.90 28.34 620.01 803.19 1 1
20.30 23.30 412.09 542.89 0 1
20.30 29.60 412.09 876.16 1 1
18.75 22.88 351.56 523.71 0 1
15.70 28.34 246.49 803.19 1 1
17.62 21.75 310.30 473.06 0 1
12.33 24.90 152.09 620.01 1 1
17.20 20.20 295.84 408.04 0 1
11.10 20.20 123.21 408.04 1 1
17.62 18.65 310.30 347.82 0 1
12.33 15.50 152.09 240.25 1 1
18.75 17.52 351.56 306.79 0 1
15.70 12.06 246.49 145.43 1 1
20.30 17.10 412.09 292.41 0 1
20.30 10.80 412.09 116.64 1 1
21.85 17.52 477.42 306.79 0 1
24.90 12.06 620.01 145.43 1 1
22.98 18.65 528.30 347.82 0 1
28.27 15.50 799.05 240.25 1 1
23.40 20.20 547.56 408.04 0 1
29.50 20.20 870.25 408.04 1 1;
! Case 1 with Unequal class sizes;
!CaUneq01 var = value type wgtof; !CaUneq01 vardep = type; !CaUneq01 varexp = value; !CaUneq01 varpltx = value; !CaUneq01 varplty = value;
!CaUneq01 xdat =
1 1 1
2 0 1
3 0 1
7 0 1
8 0 1
9 0 1;
! Case 2 Unequal class sizes;
!CaUneq02 var = value type wgtof;
!CaUneq02 vardep = type;
!CaUneq02 varexp = value; !CaUneq02 varpltx = value;
!CaUneq02 varplty = value;
!CaUneq02 varwgt = wgtof;
!CaUneq02 xdat =
1 0 1
2 0 1
3 1 1
7 0 1
8 0 1
9 0 1;
! An inseparable case;
!CaInsep var = value type wgtof;
!CaInsep vardep = type;
!CaInsep varexp = value;
!CaInsep varpltx = value; !CaInsep varplty = wgtof; !CaInsep varwgt = wgtof;
!CaInsep alpha = 0; !CaInsep xdat =
1 0 1
2 0 1
2 1 1
3 1 1;
! A separable case;
!CaFDA var = X1 X2 type wgtof;
!CaFDA vardep = type;
!CaFDA varexp = X1 X2; !CaFDA varpltx = X1; !CaFDA varplty = X2; !CaFDA varwgt = wgtof;
!CaFDA alpha = 0; !CaFDA xdat =
4 1 0 1
2 4 0 1
2 3 0 1
3 6 0 1
4 4 0 1
9 10 1 1
6 8 1 1
9 5 1 1
8 7 1 1
10 8 1 1;
! A separable case, csd.uwo.ca, should get (beta0, beta1) ~ (-0.79, 0.89);
!CaFDA01 var = X1 X2 type wgtof;
!CaFDA01 vardep = type; !CaFDA01 varexp = X1 X2; !CaFDA01 varpltx = X1; !CaFDA01 varplty = X2; !CaFDA01 varwgt = wgtof;
!CaFDA01 alpha = 0; !CaFDA01 xdat =
1 2 0 1
2 3 0 1
3 3 0 1
4 5 0 1
5 5 0 1
1 0 1 1
2 1 1 1
3 1 1 1
3 2 1 1
5 3 1 1
6 5 1 1;
! Unequal class sizes, case 3;
!CaUneq03 var = value type wgtof;
!CaUneq03 vardep = type;
!CaUneq03 varexp = value; !CaUneq03 varpltx = value; !CaUneq03 varplty = wgtof; !CaUneq03 varwgt = wgtof;
!CaUneq03 xdat =
1 0 0.6
2 0 0.6
3 1 3
7 0 0.6
8 0 0.6
9 0 0.6;
! Illustrate separability and parsimony;
!CaSePar var = X1 X2 type wgtof;
!CaSePar vardep = type;
!CaSePar varexp = X1 X2; !CaSePar varpltx = X1; !CaSePar varplty = X2; !CaSePar varwgt = wgtof;
!CaSePar xdat =
1 8 0 1
2 6 0 1
3 9 0 1
4 7 0 1
6 3 1 1
7 1 1 1
8 4 1 1
9 2 1 1;
! The 66 variable set;
! OBS = 1..66;
!Ca66 var =
OBNO TEST1 TEST2 TEST3 TEST4 TEST5 TYPE;
!Ca66 vardep = type;
!Ca66 varexp=
TEST1 TEST2 TEST3 TEST4 TEST5;
!Ca66 varpltx = TEST1;
!Ca66 varplty = TEST2;
! Variable on X axis in plot/chart/graph;
!Ca66 xdat =
1 346.7000122 247.1999969 220.5 364.1000061 311.7000122 0
2 334 313.2999878 306.5 330.8999939 311.1000061 0
3 248.3999939 189.1999969 206.8000031 334.7000122 312.5 1
4 309 291.8999939 281.2000122 346.2000122 311.1000061 1
5 328.8999939 306.2000122 259.3999939 336.3999939 310.8999939 0
6 252.8000031 248.8000031 253.8000031 321 311.7000122 1
7 313 289.7000122 292.6000061 318 311 0
8 304.8999939 115.5 284.2000122 316.5 310.5 1
9 327.8999939 330.7999878 305.7000122 332.6000061 311 1
10 315.3999939 203.8999939 287.1000061 333.7999878 311.5 1
11 333 270.6000061 274.2999878 379.1000061 311.2000122 0
12 242.3999939 145.8999939 292.2999878 318.7000122 311.2999878 0
13 124.9000015 1.1 244.1999969 345.7000122 310.7999878 0
14 323.5 317.2000122 287.3999939 406.1000061 312 1
15 304.2999878 191.6999969 275.7999878 331.7000122 311.5 0
16 382.3999939 124.0999985 30 322.5 316.7000122 1
17 327 275.3999939 290.6000061 345.5 313.3999939 1
18 278.7999878 282.1000061 316.2999878 317 311.2999878 0
19 324.1000061 261.7999878 316.7999878 326.6000061 311.6000061 0
20 249.3999939 260.7999878 292.7999878 317.2000122 310.2999878 1
21 336.2000122 290.7999878 273.2999878 400.3999939 310.7999878 1
22 317 291.8999939 303.5 326.5 310.8999939 0
23 256.8999939 212 282 336.6000061 311.7000122 1
24 292.7999878 181 295.7999878 577.9000244 311.2999878 0
25 342.7000122 306 294.2000122 487.3999939 312.1000061 0
26 336.7000122 301.2999878 273.7000122 342.5 312.7999878 0
27 302.2999878 250.8000031 297.2000122 331.2999878 312.1000061 0
28 328 296.8999939 292.3999939 324.6000061 310.8999939 1
29 312 272 311.6000061 317.7000122 311.2000122 1
30 274.7000122 252.1000061 310.7000122 323.7000122 310.7999878 0
31 315.1000061 301.2000122 300.8999939 410.8999939 310.8999939 0
32 310 245.3000031 306 310.7000122 310.1000061 0
33 335.2000122 298.6000061 314.7999878 317 310.8999939 1
34 345.2000122 353 326.3999939 409.1000061 311.2999878 1
35 348.7999878 357 326 436.5 311.8999939 0
36 324 306.7000122 314 401.7000122 312.7000122 0
37 365.1000061 345 330.7999878 382.2999878 311.8999939 1
38 369.2999878 356.7000122 322.6000061 1034.1 310.8999939 1
39 343.6000061 330.7999878 322.5 462.7999878 312.3999939 1
40 362.7999878 343 333.6000061 785.9000244 311.5 1
41 355.6000061 336.1000061 320.3999939 597.9000244 312.1000061 0
42 357.3999939 378.6000061 323.7999878 891.2999878 311.6000061 1
43 350 347.2999878 343.3999939 538.7999878 313.5 1
44 379 369 333.1000061 716 315.5 1
45 344.2000122 359.6000061 333.7999878 436.6000061 311.8999939 1
46 357 322.5 317 363.3999939 311.7999878 0
47 325.3999939 347.2999878 344.1000061 880.0999756 311.5 1
48 366.8999939 345.2999878 314.2000122 550.2999878 310.8999939 0
49 353.7999878 359.5 335.1000061 425 312.6000061 0
50 330.7000122 328.1000061 323.5 373.1000061 314 1
51 343.7999878 341.3999939 325.7000122 454.7999878 311.8999939 0
52 345.2999878 331.5 295.6000061 400 311 1
53 334.3999939 318.5 315.7999878 459.1000061 311.5 0
54 358.8999939 350.6000061 315.7999878 392 311.7999878 0
55 359.8999939 344.6000061 336.3999939 620 311.7999878 0
56 364.7999878 329.8999939 336.7000122 549.9000244 312.2999878 1
57 349 327.3999939 322.6000061 370.5 311.2999878 1
58 363 364.7000122 324.6000061 1081.7 311.7000122 1
59 330.1000061 363.5 330.6000061 617.5 311.1000061 1
60 363.7000122 345.8999939 336.3999939 599.5 312 0
61 356.1000061 349.3999939 340.5 1010 311.8999939 1
62 358.2999878 363.1000061 317.1000061 474.3999939 311.8999939 0
63 356.7000122 349.7999878 323.7999878 539.0999756 311.2000122 0
64 370.2999878 369.5 317 536.5999756 312 1
65 327.8999939 326.2999878 330.3999939 415.6000061 311 0
66 334.7000122 331.7000122 302.2000122 428.6000061 311.6000061 0;
!Fisher's Iris Data set. setosa is easily distinguished from the other 2.
Observations 1-50 are setosa, 51-100 are versicolor, 101-150 are virginica.
!CaIris var = Order Sepallen SepalWid PetalLen PetalWid Species wgtof;
!CaIris vardep = Species; !CaIris varexp = Sepallen SepalWid PetalLen PetalWid;
!CaIris varpltx = Sepallen ; !CaIris varplty = SepalWid ; !CaIris varwgt = wgtof; !Data Sepal Sepal Petal Petal
Order length width length width Species Wgt;
!CaIris xdat =
1 5.1 3.5 1.4 0.2 0 1
2 4.9 3.0 1.4 0.2 0 1
3 4.7 3.2 1.3 0.2 0 1
4 4.6 3.1 1.5 0.2 0 1
5 5.0 3.6 1.4 0.3 0 1
6 5.4 3.9 1.7 0.4 0 1
7 4.6 3.4 1.4 0.3 0 1
8 5.0 3.4 1.5 0.2 0 1
9 4.4 2.9 1.4 0.2 0 1
10 4.9 3.1 1.5 0.1 0 1
11 5.4 3.7 1.5 0.2 0 1
12 4.8 3.4 1.6 0.2 0 1
13 4.8 3.0 1.4 0.1 0 1
14 4.3 3.0 1.1 0.1 0 1
15 5.8 4.0 1.2 0.2 0 1
16 5.7 4.4 1.5 0.4 0 1
17 5.4 3.9 1.3 0.4 0 1
18 5.1 3.5 1.4 0.3 0 1
19 5.7 3.8 1.7 0.3 0 1
20 5.1 3.8 1.5 0.3 0 1
21 5.4 3.4 1.7 0.2 0 1
22 5.1 3.7 1.5 0.4 0 1
23 4.6 3.6 1.0 0.2 0 1
24 5.1 3.3 1.7 0.5 0 1
25 4.8 3.4 1.9 0.2 0 1
26 5.0 3.0 1.6 0.2 0 1
27 5.0 3.4 1.6 0.4 0 1
28 5.2 3.5 1.5 0.2 0 1
29 5.2 3.4 1.4 0.2 0 1
30 4.7 3.2 1.6 0.2 0 1
31 4.8 3.1 1.6 0.2 0 1
32 5.4 3.4 1.5 0.4 0 1
33 5.2 4.1 1.5 0.1 0 1
34 5.5 4.2 1.4 0.2 0 1
35 4.9 3.1 1.5 0.2 0 1
36 5.0 3.2 1.2 0.2 0 1
37 5.5 3.5 1.3 0.2 0 1
38 4.9 3.6 1.4 0.1 0 1
39 4.4 3.0 1.3 0.2 0 1
40 5.1 3.4 1.5 0.2 0 1
41 5.0 3.5 1.3 0.3 0 1
42 4.5 2.3 1.3 0.3 0 1
43 4.4 3.2 1.3 0.2 0 1
44 5.0 3.5 1.6 0.6 0 1
45 5.1 3.8 1.9 0.4 0 1
46 4.8 3.0 1.4 0.3 0 1
47 5.1 3.8 1.6 0.2 0 1
48 4.6 3.2 1.4 0.2 0 1
49 5.3 3.7 1.5 0.2 0 1
50 5.0 3.3 1.4 0.2 0 1
51 7.0 3.2 4.7 1.4 1 1
52 6.4 3.2 4.5 1.5 1 1
53 6.9 3.1 4.9 1.5 1 1
54 5.5 2.3 4.0 1.3 1 1
55 6.5 2.8 4.6 1.5 1 1
56 5.7 2.8 4.5 1.3 1 1
57 6.3 3.3 4.7 1.6 1 1
58 4.9 2.4 3.3 1.0 1 1
59 6.6 2.9 4.6 1.3 1 1
60 5.2 2.7 3.9 1.4 1 1
61 5.0 2.0 3.5 1.0 1 1
62 5.9 3.0 4.2 1.5 1 1
63 6.0 2.2 4.0 1.0 1 1
64 6.1 2.9 4.7 1.4 1 1
65 5.6 2.9 3.6 1.3 1 1
66 6.7 3.1 4.4 1.4 1 1
67 5.6 3.0 4.5 1.5 1 1
68 5.8 2.7 4.1 1.0 1 1
69 6.2 2.2 4.5 1.5 1 1
70 5.6 2.5 3.9 1.1 1 1
71 5.9 3.2 4.8 1.8 1 1
72 6.1 2.8 4.0 1.3 1 1
73 6.3 2.5 4.9 1.5 1 1
74 6.1 2.8 4.7 1.2 1 1
75 6.4 2.9 4.3 1.3 1 1
76 6.6 3.0 4.4 1.4 1 1
77 6.8 2.8 4.8 1.4 1 1
78 6.7 3.0 5.0 1.7 1 1
79 6.0 2.9 4.5 1.5 1 1
80 5.7 2.6 3.5 1.0 1 1
81 5.5 2.4 3.8 1.1 1 1
82 5.5 2.4 3.7 1.0 1 1
83 5.8 2.7 3.9 1.2 1 1
84 6.0 2.7 5.1 1.6 1 1
85 5.4 3.0 4.5 1.5 1 1
86 6.0 3.4 4.5 1.6 1 1
87 6.7 3.1 4.7 1.5 1 1
88 6.3 2.3 4.4 1.3 1 1
89 5.6 3.0 4.1 1.3 1 1
90 5.5 2.5 4.0 1.3 1 1
91 5.5 2.6 4.4 1.2 1 1
92 6.1 3.0 4.6 1.4 1 1
93 5.8 2.6 4.0 1.2 1 1
94 5.0 2.3 3.3 1.0 1 1
95 5.6 2.7 4.2 1.3 1 1
96 5.7 3.0 4.2 1.2 1 1
97 5.7 2.9 4.2 1.3 1 1
98 6.2 2.9 4.3 1.3 1 1
99 5.1 2.5 3.0 1.1 1 1
100 5.7 2.8 4.1 1.3 1 1
101 6.3 3.3 6.0 2.5 1 1
102 5.8 2.7 5.1 1.9 1 1
103 7.1 3.0 5.9 2.1 1 1
104 6.3 2.9 5.6 1.8 1 1
105 6.5 3.0 5.8 2.2 1 1
106 7.6 3.0 6.6 2.1 1 1
107 4.9 2.5 4.5 1.7 1 1
108 7.3 2.9 6.3 1.8 1 1
109 6.7 2.5 5.8 1.8 1 1
110 7.2 3.6 6.1 2.5 1 1
111 6.5 3.2 5.1 2.0 1 1
112 6.4 2.7 5.3 1.9 1 1
113 6.8 3.0 5.5 2.1 1 1
114 5.7 2.5 5.0 2.0 1 1
115 5.8 2.8 5.1 2.4 1 1
116 6.4 3.2 5.3 2.3 1 1
117 6.5 3.0 5.5 1.8 1 1
118 7.7 3.8 6.7 2.2 1 1
119 7.7 2.6 6.9 2.3 1 1
120 6.0 2.2 5.0 1.5 1 1
121 6.9 3.2 5.7 2.3 1 1
122 5.6 2.8 4.9 2.0 1 1
123 7.7 2.8 6.7 2.0 1 1
124 6.3 2.7 4.9 1.8 1 1
125 6.7 3.3 5.7 2.1 1 1
126 7.2 3.2 6.0 1.8 1 1
127 6.2 2.8 4.8 1.8 1 1
128 6.1 3.0 4.9 1.8 1 1
129 6.4 2.8 5.6 2.1 1 1
130 7.2 3.0 5.8 1.6 1 1
131 7.4 2.8 6.1 1.9 1 1
132 7.9 3.8 6.4 2.0 1 1
133 6.4 2.8 5.6 2.2 1 1
134 6.3 2.8 5.1 1.5 1 1
135 6.1 2.6 5.6 1.4 1 1
136 7.7 3.0 6.1 2.3 1 1
137 6.3 3.4 5.6 2.4 1 1
138 6.4 3.1 5.5 1.8 1 1
139 6.0 3.0 4.8 1.8 1 1
140 6.9 3.1 5.4 2.1 1 1
141 6.7 3.1 5.6 2.4 1 1
142 6.9 3.1 5.1 2.3 1 1
143 5.8 2.7 5.1 1.9 1 1
144 6.8 3.2 5.9 2.3 1 1
145 6.7 3.3 5.7 2.5 1 1
146 6.7 3.0 5.2 2.3 1 1
147 6.3 2.5 5.0 1.9 1 1
148 6.5 3.0 5.2 2.0 1 1
149 6.2 3.4 5.4 2.3 1 1
150 5.9 3.0 5.1 1.8 1 1
;
! Genuine and counterfeit banknotes (100 Swiss Francs),
various measurements.
Banknotes BN1 to BN100 are genuine (Good=1),
all others are counterfeit (Good=0).
Dataset courtesy of H. Riedwyl, Bern, Switzerland;
!CaSwiss; var =
Length Left Right Bottom Top Diagonal Good wgtof ;
!CaSwiss; vardep = Good!CaSwiss; varexp = Length Left Right Bottom Top Diagonal!CaSwiss; varpltx = Right!CaSwiss; varplty = Diagonal!CaSwiss; alpha = 0.0001!CaSwiss; varwgt = wgtof
!CaSwiss; OBS, xdat =
BN1 214.8 131.0 131.1 9.0 9.7 141.0 1 1
BN2 214.6 129.7 129.7 8.1 9.5 141.7 1 1
BN3 214.8 129.7 129.7 8.7 9.6 142.2 1 1
BN4 214.8 129.7 129.6 7.5 10.4 142.0 1 1
BN5 215.0 129.6 129.7 10.4 7.7 141.8 1 1
BN6 215.7 130.8 130.5 9.0 10.1 141.4 1 1
BN7 215.5 129.5 129.7 7.9 9.6 141.6 1 1
BN8 214.5 129.6 129.2 7.2 10.7 141.7 1 1
BN9 214.9 129.4 129.7 8.2 11.0 141.9 1 1
BN10 215.2 130.4 130.3 9.2 10.0 140.7 1 1
BN11 215.3 130.4 130.3 7.9 11.7 141.8 1 1
BN12 215.1 129.5 129.6 7.7 10.5 142.2 1 1
BN13 215.2 130.8 129.6 7.9 10.8 141.4 1 1
BN14 214.7 129.7 129.7 7.7 10.9 141.7 1 1
BN15 215.1 129.9 129.7 7.7 10.8 141.8 1 1
BN16 214.5 129.8 129.8 9.3 8.5 141.6 1 1
BN17 214.6 129.9 130.1 8.2 9.8 141.7 1 1
BN18 215.0 129.9 129.7 9.0 9.0 141.9 1 1
BN19 215.2 129.6 129.6 7.4 11.5 141.5 1 1
BN20 214.7 130.2 129.9 8.6 10.0 141.9 1 1
BN21 215.0 129.9 129.3 8.4 10.0 141.4 1 1
BN22 215.6 130.5 130.0 8.1 10.3 141.6 1 1
BN23 215.3 130.6 130.0 8.4 10.8 141.5 1 1
BN24 215.7 130.2 130.0 8.7 10.0 141.6 1 1
BN25 215.1 129.7 129.9 7.4 10.8 141.1 1 1
BN26 215.3 130.4 130.4 8.0 11.0 142.3 1 1
BN27 215.5 130.2 130.1 8.9 9.8 142.4 1 1
BN28 215.1 130.3 130.3 9.8 9.5 141.9 1 1
BN29 215.1 130.0 130.0 7.4 10.5 141.8 1 1
BN30 214.8 129.7 129.3 8.3 9.0 142.0 1 1
BN31 215.2 130.1 129.8 7.9 10.7 141.8 1 1
BN32 214.8 129.7 129.7 8.6 9.1 142.3 1 1
BN33 215.0 130.0 129.6 7.7 10.5 140.7 1 1
BN34 215.6 130.4 130.1 8.4 10.3 141.0 1 1
BN35 215.9 130.4 130.0 8.9 10.6 141.4 1 1
BN36 214.6 130.2 130.2 9.4 9.7 141.8 1 1
BN37 215.5 130.3 130.0 8.4 9.7 141.8 1 1
BN38 215.3 129.9 129.4 7.9 10.0 142.0 1 1
BN39 215.3 130.3 130.1 8.5 9.3 142.1 1 1
BN40 213.9 130.3 129.0 8.1 9.7 141.3 1 1
BN41 214.4 129.8 129.2 8.9 9.4 142.3 1 1
BN42 214.8 130.1 129.6 8.8 9.9 140.9 1 1
BN43 214.9 129.6 129.4 9.3 9.0 141.7 1 1
BN44 214.9 130.4 129.7 9.0 9.8 140.9 1 1
BN45 214.8 129.4 129.1 8.2 10.2 141.0 1 1
BN46 214.3 129.5 129.4 8.3 10.2 141.8 1 1
BN47 214.8 129.9 129.7 8.3 10.2 141.5 1 1
BN48 214.8 129.9 129.7 7.3 10.9 142.0 1 1
BN49 214.6 129.7 129.8 7.9 10.3 141.1 1 1
BN50 214.5 129.0 129.6 7.8 9.8 142.0 1 1
BN51 214.6 129.8 129.4 7.2 10.0 141.3 1 1
BN52 215.3 130.6 130.0 9.5 9.7 141.1 1 1
BN53 214.5 130.1 130.0 7.8 10.9 140.9 1 1
BN54 215.4 130.2 130.2 7.6 10.9 141.6 1 1
BN55 214.5 129.4 129.5 7.9 10.0 141.4 1 1
BN56 215.2 129.7 129.4 9.2 9.4 142.0 1 1
BN57 215.7 130.0 129.4 9.2 10.4 141.2 1 1
BN58 215.0 129.6 129.4 8.8 9.0 141.1 1 1
BN59 215.1 130.1 129.9 7.9 11.0 141.3 1 1
BN60 215.1 130.0 129.8 8.2 10.3 141.4 1 1
BN61 215.1 129.6 129.3 8.3 9.9 141.6 1 1
BN62 215.3 129.7 129.4 7.5 10.5 141.5 1 1
BN63 215.4 129.8 129.4 8.0 10.6 141.5 1 1
BN64 214.5 130.0 129.5 8.0 10.8 141.4 1 1
BN65 215.0 130.0 129.8 8.6 10.6 141.5 1 1
BN66 215.2 130.6 130.0 8.8 10.6 140.8 1 1
BN67 214.6 129.5 129.2 7.7 10.3 141.3 1 1
BN68 214.8 129.7 129.3 9.1 9.5 141.5 1 1
BN69 215.1 129.6 129.8 8.6 9.8 141.8 1 1
BN70 214.9 130.2 130.2 8.0 11.2 139.6 1 1
BN71 213.8 129.8 129.5 8.4 11.1 140.9 1 1
BN72 215.2 129.9 129.5 8.2 10.3 141.4 1 1
BN73 215.0 129.6 130.2 8.7 10.0 141.2 1 1
BN74 214.4 129.9 129.6 7.5 10.5 141.8 1 1
BN75 215.2 129.9 129.7 7.2 10.6 142.1 1 1
BN76 214.1 129.6 129.3 7.6 10.7 141.7 1 1
BN77 214.9 129.9 130.1 8.8 10.0 141.2 1 1
BN78 214.6 129.8 129.4 7.4 10.6 141.0 1 1
BN79 215.2 130.5 129.8 7.9 10.9 140.9 1 1
BN80 214.6 129.9 129.4 7.9 10.0 141.8 1 1
BN81 215.1 129.7 129.7 8.6 10.3 140.6 1 1
BN82 214.9 129.8 129.6 7.5 10.3 141.0 1 1
BN83 215.2 129.7 129.1 9.0 9.7 141.9 1 1
BN84 215.2 130.1 129.9 7.9 10.8 141.3 1 1
BN85 215.4 130.7 130.2 9.0 11.1 141.2 1 1
BN86 215.1 129.9 129.6 8.9 10.2 141.5 1 1
BN87 215.2 129.9 129.7 8.7 9.5 141.6 1 1
BN88 215.0 129.6 129.2 8.4 10.2 142.1 1 1
BN89 214.9 130.3 129.9 7.4 11.2 141.5 1 1
BN90 215.0 129.9 129.7 8.0 10.5 142.0 1 1
BN91 214.7 129.7 129.3 8.6 9.6 141.6 1 1
BN92 215.4 130.0 129.9 8.5 9.7 141.4 1 1
BN93 214.9 129.4 129.5 8.2 9.9 141.5 1 1
BN94 214.5 129.5 129.3 7.4 10.7 141.5 1 1
BN95 214.7 129.6 129.5 8.3 10.0 142.0 1 1
BN96 215.6 129.9 129.9 9.0 9.5 141.7 1 1
BN97 215.0 130.4 130.3 9.1 10.2 141.1 1 1
BN98 214.4 129.7 129.5 8.0 10.3 141.2 1 1
BN99 215.1 130.0 129.8 9.1 10.2 141.5 1 1
BN100 214.7 130.0 129.4 7.8 10.0 141.2 1 1
BN101 214.4 130.1 130.3 9.7 11.7 139.8 0 1
BN102 214.9 130.5 130.2 11.0 11.5 139.5 0 1
BN103 214.9 130.3 130.1 8.7 11.7 140.2 0 1
BN104 215.0 130.4 130.6 9.9 10.9 140.3 0 1
BN105 214.7 130.2 130.3 11.8 10.9 139.7 0 1
BN106 215.0 130.2 130.2 10.6 10.7 139.9 0 1
BN107 215.3 130.3 130.1 9.3 12.1 140.2 0 1
BN108 214.8 130.1 130.4 9.8 11.5 139.9 0 1
BN109 215.0 130.2 129.9 10.0 11.9 139.4 0 1
BN110 215.2 130.6 130.8 10.4 11.2 140.3 0 1
BN111 215.2 130.4 130.3 8.0 11.5 139.2 0 1
BN112 215.1 130.5 130.3 10.6 11.5 140.1 0 1
BN113 215.4 130.7 131.1 9.7 11.8 140.6 0 1
BN114 214.9 130.4 129.9 11.4 11.0 139.9 0 1
BN115 215.1 130.3 130.0 10.6 10.8 139.7 0 1
BN116 215.5 130.4 130.0 8.2 11.2 139.2 0 1
BN117 214.7 130.6 130.1 11.8 10.5 139.8 0 1
BN118 214.7 130.4 130.1 12.1 10.4 139.9 0 1
BN119 214.8 130.5 130.2 11.0 11.0 140.0 0 1
BN120 214.4 130.2 129.9 10.1 12.0 139.2 0 1
BN121 214.8 130.3 130.4 10.1 12.1 139.6 0 1
BN122 215.1 130.6 130.3 12.3 10.2 139.6 0 1
BN123 215.3 130.8 131.1 11.6 10.6 140.2 0 1
BN124 215.1 130.7 130.4 10.5 11.2 139.7 0 1
BN125 214.7 130.5 130.5 9.9 10.3 140.1 0 1
BN126 214.9 130.0 130.3 10.2 11.4 139.6 0 1
BN127 215.0 130.4 130.4 9.4 11.6 140.2 0 1
BN128 215.5 130.7 130.3 10.2 11.8 140.0 0 1
BN129 215.1 130.2 130.2 10.1 11.3 140.3 0 1
BN130 214.5 130.2 130.6 9.8 12.1 139.9 0 1
BN131 214.3 130.2 130.0 10.7 10.5 139.8 0 1
BN132 214.5 130.2 129.8 12.3 11.2 139.2 0 1
BN133 214.9 130.5 130.2 10.6 11.5 139.9 0 1
BN134 214.6 130.2 130.4 10.5 11.8 139.7 0 1
BN135 214.2 130.0 130.2 11.0 11.2 139.5 0 1
BN136 214.8 130.1 130.1 11.9 11.1 139.5 0 1
BN137 214.6 129.8 130.2 10.7 11.1 139.4 0 1
BN138 214.9 130.7 130.3 9.3 11.2 138.3 0 1
BN139 214.6 130.4 130.4 11.3 10.8 139.8 0 1
BN140 214.5 130.5 130.2 11.8 10.2 139.6 0 1
BN141 214.8 130.2 130.3 10.0 11.9 139.3 0 1
BN142 214.7 130.0 129.4 10.2 11.0 139.2 0 1
BN143 214.6 130.2 130.4 11.2 10.7 139.9 0 1
BN144 215.0 130.5 130.4 10.6 11.1 139.9 0 1
BN145 214.5 129.8 129.8 11.4 10.0 139.3 0 1
BN146 214.9 130.6 130.4 11.9 10.5 139.8 0 1
BN147 215.0 130.5 130.4 11.4 10.7 139.9 0 1
BN148 215.3 130.6 130.3 9.3 11.3 138.1 0 1
BN149 214.7 130.2 130.1 10.7 11.0 139.4 0 1
BN150 214.9 129.9 130.0 9.9 12.3 139.4 0 1
BN151 214.9 130.3 129.9 11.9 10.6 139.8 0 1
BN152 214.6 129.9 129.7 11.9 10.1 139.0 0 1
BN153 214.6 129.7 129.3 10.4 11.0 139.3 0 1
BN154 214.5 130.1 130.1 12.1 10.3 139.4 0 1
BN155 214.5 130.3 130.0 11.0 11.5 139.5 0 1
BN156 215.1 130.0 130.3 11.6 10.5 139.7 0 1
BN157 214.2 129.7 129.6 10.3 11.4 139.5 0 1
BN158 214.4 130.1 130.0 11.3 10.7 139.2 0 1
BN159 214.8 130.4 130.6 12.5 10.0 139.3 0 1
BN160 214.6 130.6 130.1 8.1 12.1 137.9 0 1
BN161 215.6 130.1 129.7 7.4 12.2 138.4 0 1
BN162 214.9 130.5 130.1 9.9 10.2 138.1 0 1
BN163 214.6 130.1 130.0 11.5 10.6 139.5 0 1
BN164 214.7 130.1 130.2 11.6 10.9 139.1 0 1
BN165 214.3 130.3 130.0 11.4 10.5 139.8 0 1
BN166 215.1 130.3 130.6 10.3 12.0 139.7 0 1
BN167 216.3 130.7 130.4 10.0 10.1 138.8 0 1
BN168 215.6 130.4 130.1 9.6 11.2 138.6 0 1
BN169 214.8 129.9 129.8 9.6 12.0 139.6 0 1
BN170 214.9 130.0 129.9 11.4 10.9 139.7 0 1
BN171 213.9 130.7 130.5 8.7 11.5 137.8 0 1
BN172 214.2 130.6 130.4 12.0 10.2 139.6 0 1
BN173 214.8 130.5 130.3 11.8 10.5 139.4 0 1
BN174 214.8 129.6 130.0 10.4 11.6 139.2 0 1
BN175 214.8 130.1 130.0 11.4 10.5 139.6 0 1
BN176 214.9 130.4 130.2 11.9 10.7 139.0 0 1
BN177 214.3 130.1 130.1 11.6 10.5 139.7 0 1
BN178 214.5 130.4 130.0 9.9 12.0 139.6 0 1
BN179 214.8 130.5 130.3 10.2 12.1 139.1 0 1
BN180 214.5 130.2 130.4 8.2 11.8 137.8 0 1
BN181 215.0 130.4 130.1 11.4 10.7 139.1 0 1
BN182 214.8 130.6 130.6 8.0 11.4 138.7 0 1
BN183 215.0 130.5 130.1 11.0 11.4 139.3 0 1
BN184 214.6 130.5 130.4 10.1 11.4 139.3 0 1
BN185 214.7 130.2 130.1 10.7 11.1 139.5 0 1
BN186 214.7 130.4 130.0 11.5 10.7 139.4 0 1
BN187 214.5 130.4 130.0 8.0 12.2 138.5 0 1
BN188 214.8 130.0 129.7 11.4 10.6 139.2 0 1
BN189 214.8 129.9 130.2 9.6 11.9 139.4 0 1
BN190 214.6 130.3 130.2 12.7 9.1 139.2 0 1
BN191 215.1 130.2 129.8 10.2 12.0 139.4 0 1
BN192 215.4 130.5 130.6 8.8 11.0 138.6 0 1
BN193 214.7 130.3 130.2 10.8 11.1 139.2 0 1
BN194 215.0 130.5 130.3 9.6 11.0 138.5 0 1
BN195 214.9 130.3 130.5 11.6 10.6 139.8 0 1
BN196 215.0 130.4 130.3 9.9 12.1 139.6 0 1
BN197 215.1 130.3 129.9 10.3 11.5 139.7 0 1
BN198 214.8 130.3 130.4 10.6 11.1 140.0 0 1
BN199 214.7 130.7 130.8 11.2 11.2 139.4 0 1
BN200 214.3 129.9 129.9 10.2 11.5 139.6 0 1
;
ENDDATA
CALC:
@SET( 'OROUTE',1); ! Output to window after this many lines in buffer;
@SET( 'WNLINE',10000); ! (27) Max command window lines (Windows only);
! Get index of dependent variable;
@FOR( vardep( k): depndx = k);
! Count number observations in each class;
nobs0 = @SUM( obs( i) | xdat( i, depndx) #eq# 0: 1);
nobs1 = @SUM( obs( i) | xdat( i, depndx) #eq# 1: 1);
! Compute the means: mu1(k) and mu2(k), within group and overall means;
! First get the sums;
@FOR( varexp( k):
mu0( k) = @SUM( obs( i) | xdat( i, depndx) #eq# 0: xdat( i, k));
mu1( k) = @SUM( obs( i) | xdat( i, depndx) #eq# 1: xdat( i, k));
! and now convert to means, overall and within class;
mutot( k) = (mu0( k) + mu1( k))/( nobs0 + nobs1);
mu0( k) = mu0( k)/ nobs0;
mu1( k) = mu1( k)/ nobs1;
);
@WRITE(' Expvar Mean0 Mean1 MeanTot', @NEWLINE(1));
@FOR( varexp( k):
@WRITE(' ', @FORMAT( varexp( k),'9s'),' ', @FORMAT( mu0(k), '9.4f') ,' ', @FORMAT( mu1(k), '9.4f') ,
' ', @FORMAT( mutot(k), '9.4f') , @NEWLINE(1));
);
! Get ready to compute the covariance matrix for all the data;
! Initialize full matrix, so invertible;
@FOR( var( k1):
@FOR( var( k2):
covar( k1, k2) = 0;
);
covar( k1, k1) = 1;
);
! Now actually compute within class covariance.
The -2 in the denominator compensates for estimating mu0 and mu2;
@FOR( varexp( k1):
@FOR( varexp( k2) | k2 #ge# k1:
covar( k1, k2) =
( @SUM( obs( i) | xdat( i, depndx) #eq# 0: ( xdat( i, k1) - mu0( k1))*( xdat( i, k2) - mu0( k2)))
+ @SUM( obs( i) | xdat( i, depndx) #eq# 1: ( xdat( i, k1) - mu1( k1))*( xdat( i, k2) - mu1( k2))))/( nobs0 + nobs1 -2);
covar( k2, k1) = covar( k1, k2); ! It is symmetric;
);
);
! In case we want to see it;
@WRITE( @NEWLINE(1),' Covariance matrix', @NEWLINE( 1));
@FOR( varexp( k1):
@FOR( varexp( k2):
@WRITE(' ', @FORMAT( covar( k1, k2),'9.3f'));
);
@WRITE( @NEWLINE( 1));
);
@WRITE( @NEWLINE( 1));
! Invert the covariance matrix;
covarINV = @INVERSE( covar);
! In case we want to see the inverse;
@WRITE( @NEWLINE(1),' Inverse of Covariance matrix', @NEWLINE( 1));
@FOR( varexp( k1):
@FOR( varexp( k2):
@WRITE(' ', @FORMAT( covarinv( k1, k2),'9.3f'));
);
@WRITE( @NEWLINE( 1));
);
@WRITE( @NEWLINE( 1));
! The beta's are given (by sigma inverse) * (mu2 - mu1);
! Intuitively, if the correlations = 0, then explanatory variable(EV) k gets
a very positive weight if both variance of EV k is small and
outcome type 1 is associate with a large EV k, and
a very negative weight if both variance of EV k is small and
outcome type 0 is assocated with a very large EV k;
@FOR( varexp( k1):
beta( k1) = @SUM( varexp( k2): covarinv( k1, k2)*( mu1( k2) - mu0( k2)));
);
! Compute -score of the mean point;
beta0 = - @SUM( varexp( k): beta( k)*( mu1(k) + mu0( k))/2);
@WRITE(' ExpVar Beta ', @NEWLINE(1));
@WRITE(' Beta0 ', @FORMAT( beta0, '12.4f'), @NEWLINE( 1));
@FOR( varexp( k):
@WRITE( ' ', @FORMAT( varexp( k),'9s'),' ', @FORMAT( beta( k), '12.4f'), @NEWLINE( 1));
);
! Write score of each observation;
@WRITE( @NEWLINE(1),' Obs Type Score Error', @NEWLINE( 1));
@FOR( obs( i):
SCORE( I) =
BETA0 + @SUM( varexp( J): BETA( J)* xdat(I,J));
@IFC( xdat( I, depndx) #LT# 1:
ERR( I) = @SMAX( 0, SCORE( I));
@ELSE
ERR( i) = @SMAX( 0, -SCORE( i));
);
@WRITE( @FORMAT( i, '4.0f'), ' ', xdat( i, depndx), ' ',
@FORMAT( score( i),'10.2f'), ' ', @FORMAT( ERR( i), '10.2f'),@NEWLINE( 1));
);
! Prepare data for a chart of the dependent variable vs. one other variable;
! Get the index of the explanatory variables x and y axis;
@FOR( varpltx( j): pltxndx = j);
@FOR( varplty( j): pltyndx = j);
! Create two sets, based on the category of the dependent variable;
@FOR( obs( i) | xdat( i, depndx) #EQ# 0:
@INSERT( OBS0, i);
xp0(i) = xdat( i, pltxndx);
yp0(i) = xdat( i, pltyndx);
);
@FOR( obs( i) | xdat( i, depndx) #EQ# 1:
@INSERT( OBS1, i);
xp1(i) = xdat( i, pltxndx);
yp1(i) = xdat( i, pltyndx);
);
! Beware when interpreting scatter plots, a red point may hide a green point;
@CHARTSCATTER( 'Discriminant Analysis in 2-space', var( pltxndx), var( pltyndx),
'Type 0 points', xp0, yp0, 'Type 1 points', xp1, yp1) ;
ENDCALC
|