bse.
AFDELING DER ELEKTROTECHNIEK #
TECHNISCHE HOGESCHOOL EINDHOVEN
GROEF METEN EN REGELEN
Statistische methoden voor het gebruik van een oomputer bij het diagnostiseren van patienten met chronische respiratoira aandoeningeno
CoJo de Wito
Rapport van het afstudeerwerk uitgevoerd van juni 1969 tot maart 1970 in opdracht en onder leiding van Profodr.ir o Po Eykhoff
2
Inhoudsopgave. bIz. 1.
Inleiding.
4
2.
Een onderzoek van de patientengegevens. 2.1. Inleiding.
6 6
2.. 2.
Het gemidde1de en de spreiding van de symptomen.
10
2.3.
De correlaties tussen de symptomen.
12
3. De methode van Bayes - Warner. 3.1 0
Prinoipe.
3.2.
Correctiemethoden bij afhanke1ijke symptomen.
17 17 19
3.. 3..
De herkenning van longpatienten met de methode van Bayes ~ Warner.
22
De lineaire regressiemethode.
24
4 10
24
4020
Principe De berekening van de regressie constanten..
403.
Het diagnoseprogramma LIN. DIAG.
27 31
4.4.
De herkenning van longpatienten met de lineaire regressiemethodeo
35
0
0
De multipe1e discriminant analyse methode.
37
5.1. 502.
Inleidingo Het bepalen van de discriminant functies.
37
5.3.
De classificatiemethode. De programma's.
43 46
504.
39
5.5. De herkenning van longpatienten met multipele discriminant analyse methode.
54
6.
Slotbeschouwingo
60
7.
Literatuur.
62
Bijlage A.
De patientenbanden.
64
3
blz.
Bijlage B.
Inventarisatie van de programma's.
66
Bijlage C.
Tekst van de programma's.
69 70 76
Het programma LIN. REG. Het programma LIN
DIAG. Het programma DISCANALYS. Het programma DISC. DIAG. 0
82
88
Het programma ELVAR.
93
Het programma N.P.
95
4 1.
Inleiding. In het najaar van 1967 is de groep "Meten en Regelen" gestart met een onderzoek naar toepassingen van de oomputer bij de medische diagnostiek. Dit is het vierde rapport dat hierover versohijnt. De vorigen zijn van J~W. Kirohhof (lit. 12) en J.R. Durinok (lit.l, 2). De eerate onderzoekingen waren op literatuurgebied. Hierbij bleek dat in een korte periode een grote hoeveelheid publikaties over dit onderwerp zijn versohenen. Veel publikaties geven een theoretisohe beschouwing en slechts
w~i
nigen behandelen een praktisohe toepassing.
Om tot een praktische uitvoering te komen begon J.R. Durinck in het najaar van 1968 een onderzoek op het gebied der comateuze toestanden. Bij de aanvang van mijn afstudeerperiode was men in het stadium gekomen dat daadwerkelijke hulp en informatie van medische zijde onontbeerlijk was. Dit bleek helaas een grote moeilijkheid te zijn. Rond die tijd ontstond het kontakt met
Dr.. R.J. van Meerten van de Dr. v. Spanjekliniek
in Groesbeek,waardoor we
de beschikking kregen over gegevens van CARA- patienten (CARA
= cbronische
aspecifieke respiatoire aandoeningen)o Met dit materiaal was het mogelijk om toch nag tot sen praktische uitvoering te komen o Alhoewel het materiaal niet kompleet was door het ontbreken van gegevens over de anamnese van de patient 9 leek het toch zinvol om de eerste pogingen om tot een computerdiagnose te komen 9 te doen met dit
materiaal~
Vaoral bij dit saort
ziektes die vele gemeenschappelijke kenmerken vertonen, kan het gebruik van de computer bijzonder nuttig zijn. De eerste methode, die J.H.Durinok hierbij gebruikt heeft, is gebaseerd op de voorwaardelijke kansformules van Bayesc We hebben deze methode nog eens nader bekeken en daarbij gezocht naar magelijke correcties voor de bij deze methode optredende fouten. Aangezien dit bij dit materiaal niet mogelijk was, ontstond de noodzaak om andere methoden te zoeken en de resultaten te vergelijken. Hierbij bleek steeds dat veronderstellingen gedaan moesten warden die niet helemaal met de realiteit avereen kwamen. Het zou mogelijk zijn geweest om met theoretische modellen te onderzoeken welke methode het meest zinvol zou zijn. Dit vereist echter een theoretisch onderzoek dat langer zou duren als normaliter voor een afstudeerperiode gepland wordt .. De regressie analyse, bekend van de patroonherkenning, leek ons een methode die geschikt zou kunnen zijn voor dit onderzoek. Dat de lineaire regressie analyse onmiddelijk goede resultaten zou leveren is een te simpele gedachten.
5
De methode is echter gekozen als aanzet voor een eventuele niet- lineaire benadering. De discriminant analyse is een statistische methode die vooral in de psychologie bekend is. Evenals bij de regressie analyse geldt bij deze methode dat we gebruik kunnen maken van continue variabelen. Het kwantiseren, noodzakelijk voor de Bayes-Warner methode, is hierbij niet nodig. Bovendien geldt bij deze methoden niet de eis van onafhankelijkheid der symptomen.zoals bij de BayesWarner methode. Bij het testen van de verschillende methoden hebben we steeds nagegaan hoe groot de herkenning was van de patienten die gebruikt waren voor het bepalen van de constanten. Enerzijds kwam dit doordat te weinig patienten bekend waren. Bovendien menen we dat een computeradvies diagnose pas zinvol is indien de computer instaat is om zijn basispatienten zo goed mogelijk te herkennen.
6
2.
Een onderzoek van de patientengegevens.
20 1
Inleiding. Tot onze beschikking hadden we de gegevens van een aantal longpatienten uit de Dr. van Spanje Kliniek (Dekkerswald) in Groesbeek. Dit zelfde materiaal is met uitzondering van het symptoom s14 gebruikt bij het onderzoek van J.R. Durinck, die een uitvoerige verklaring van de verschillende symptomen geeft. (lit.l). Van ieder patient is bekend de door de arts gestelde diagnose en de waarde van ieder symptoomo Met uitzondering van het symptoom s15 (geslacht) is deze waarde ingedeeld in 6en van de klassen 0 tot en met 5. De meeste symptomen (83 tot en met 814) zijn resultaten van metingen bij een longfunctie onderzoek.(lit. 3) Klasse 0 geeft hierbij een normaal resultaat van een meting aan, en klasse 5 een zeer sterk afwijkend resultaat. Bij deze metingen bestaan aIleen maar positieve of negatieve afwijkingen. De verschillende ziektes zijn: a: astma bronohialeo b: bronchitis astmaticao c: bronchitis chronicao e: emfysema
pulmonum~
De verschi11ende symptomen zijn: sl: Leeftijdo Hierbij is bepalend de leeftijd van de patient bij opname in de kliniek. De indeling is als voIgt:
°
klasse klasse 1
0 - 9 jaar
10 - 19 jaar
enz. klasse 5
ouder dan 50 jaaro
s2: Seizoen. Bij dit symptoom is bepalend in welk tijdvak de patient wordt opgenomen.
°
klasse k1asse 1 enz.
jan. - febr. mrt. - april
7
Voor de meting van de symptomen e3, s4 en e5 moet de patient gedurende enige tijd een mengael ban zuurstof en helium hebben ingeademd. : 3 Hel.50 s: Dit symptoom geeft aan het percentage He tUBsen een maximale diepe uitademing I
(1,5 minuut na het begin van de He inwas) en het niveau van enkele daaraan voorafgaande rustige ademteugen, gedeeld door het percentage He bij het begin van de inwas, en gedeeld door het aantal liters gasmengsel dat meer dan bij een gewone expiratie wordt uitgeademd o
e4: Mae Nadat men gecontroleerd heeft dat de patient zoveel helium heeft ingeademt dat de gehele longruimte gevuld is, krijgt hij weer gewone lucht om te ademen. In de uitgeademde lucht wordt nu continu de concentratie van de helium gemeten. om na te gaan hoe de helium uit de longen wordt verdreven. Bij normale longen geeft dit het volgende beeld:
Het horizontale gedeelte QR (het alveolaire plateau) wordt bepaald door het gasmengsel dat vrijwel synchroon uit de vele diepere gelegen delen van de longen (de alveolen) wordt gedreven. Omdat vanuit het bloed geen helium diffundeert in deze alveolen is dit plateau horizontaal, in tegenstelling met de meting van de CO
concentratie. 2 Bij longpatienten kan dit plateau een helling vertonen. Het symptoom
geeft de maximale helling aan.
~e
8
s5:
I1Ie
Dit symptoom geeft de kromtestraal aan van de heliumconcentratie curve bij een norma1e uitademing (punt Q fig. 1).
Dit symptoom geeft de kromtestraa1 aan van de CO
2
concentratie curve bij een
normale uitademing.
s7: FEVC. Dit is de maximale hoeveelheid lucht die de patient kan uitademen bij een zo snel mogelijke uitademing, na een zo diep mogelijke inademing. s8: FEV l
Voor dit symptoom wordt bepaald de maximale hoeveelheid lucht die de patient in 1 seco kan uitanemen bij een zeer snelle
uitademing~
FIV 1 FIVC Hierbij is FIV
de maximale hoeveelheid lucht die de patient in 1 sec. kan 1 inademen bij een zeer snelle inademingo FIVC is de vitale capaciteit bij een zeer snelle inademing.
slO: MVV
30
Het maximale ademminuut volume bij een ademfrequentie van 30 in- en uitademingen per minuut o all: FRC
Bij dit symptoom wordt de restinhoud van de longen bepaald, na uitademing
bij een normale ademfrequentieo s12: RV Dit symptoom geeft de restinhoud van de longen na een zeer diepe uitademing.
9
s13
D/o
D/o is de verhouding tussen de diffusie door de a1veolaire wand en het lichaamsoppervlako 814 Reversibiliteit o De reversibiliteit is een maat voer de verandering van de FEV ala gevo1g van 1 de toediening van dyspnoesano Revo
=
n - v
sw
~
v
Hierbij is: sw v n
de standaardwaarde voor de FEV
1 de gemeten F£V voor teediening van dyspnoesan 1 de gemeten FEY na toediening van dyspnoesan 1
815 Ges1acht klasse 0
indien vrouwelijk en
klasse 1
indien manne1ijko
10
2.2. Het gemidde1de en de spreiding van de symptomen. Per ziekte is berekend hat gemidde1de en de spreiding van ieder symptoom. Hierbij zijn de volgende definities gebruikt.
n1-
S = n1 ~s. . J. z ~= I
voor het gemiddelde:
(1)
voor de spreiding:
nz = aantal
Hierbij is
patienten met ziekte z
si = de waarde van het symptoom s bij pato i
astma brono 86 pato s cr ~
bronchitis a o 213 pato
-s
bronchitis ch o emfysema pUl. 201 pat .. 143 pato = 0cr S S
1 0619
s 2
2,720 2,430
cr 30 297 1 0663
1 9 653
2,458
s 3
1 0 884
1 9 638
2,344
1 9 555 1,819
s 4
2 9 °47 1 0044 0,9 0 7 1,207
2 9 352
1,031
2 9 559 2,818
1,498
10541
2 9 133
1 0°88
2,308 1,359 1 9403
3 0007 1 0657
0 9 954 1 9 605
1,037 1 9210
1,370 1,381 1,387
1 9 400
1,930
0,640
1,151
all
1,302
812
s 1
4 0741 2 9 224
0,634 1 9 645 1,616
4,866 2 9 °80
0,369 1 9 588
3 9587 39 28 4
°0819
3 9184
1 9432
1,267
3,970 2,284
0,992 1,501
1,084
1,361
2,995
1,318
1 9487
20 063
1,454
1,372
0,791
1,248
0,532
1,556
1,348
1 0551
0 0790
0 9 995 1,096
3,363 1,668 1,881
1,434
1,814
1 9 914
2,114
1,716
1,622
1,495
2,647
1,503
s13
0,600
1,254
1,514
1,415
1,583
2,722
1,533
s14
3,213 1,560 0,512 0,500
0,934 2,466
1,626
1,445
0,923
0,568
0,495
1,754 0,881
0,324
0,950
0,875 0,218
s 5 s 6 s 7 s 8 s 9 s10
s15
1,709 0,687
0 9858 1,543 1,260
tabel 1. Hat gemiddelde an de spreiding van de symptomen.
1 9419
1,537
11
De symptomen 813 en 814 waren bij een aanta1
patie~ten
niet gemeten.
Daardoor zijn het gemiddelde en de spreiding voor deze symptomen berekend met de gegevens van een klein aantal patienteno Van verschi11ende symptomen blijkt het gemiddelde voor de vier ziektes een duidelijke verschuiving te vertonen o De spreiding is bij de meeste symptomen echter vrij
gr~oto
De berekende gemiddelden liggen soms tussen twee top-
pen en komen dan niet overeen met de meest voorkomende waarden o
12
203. De correlatiematrices. De correlatiecoefficient
tussen twee symptomen s
Q J
en s
p
q
hankelijke maat voor de samenhang tussen deze symptomen. De
is een schaalonafi.
correlatiecoefficient bezit de volgende eigenschappen.
a.
- 1~
b.
~ ~
S ~+
1
± 1 aIleen indien er een lineair verband s p tU6sen s en s • p
cov. (s • s ) p
+ b bestaat
p
- s-
- s
p
0
q
q
- Vvar(s )ovar(s ) \
s en crzijn
q
q
1 ~ -
as
q
=
gedefinieerd in formules 1 en 2.
De volgende matrices bevattan de berekende correlatiecoefficienten o Bij deze berekening is weer gebruikt het oorspronkelijke patienten materiaal aIle afwijkingen positief worden gerekend.
9
waarbij
61 81
+1.000
52 ~. 146
53
54
65
56
-0012
+0352
+0314
+0297
87
s8
+.072 -0 185
810
514
511
812
813
+0187 -0285
-0294
-0197
+.255
-.110 -0242
s9
s15
+.038 -0082
-.038 -0105
+0133
+.115
+.013
+.149
+0 185
+0029
+0363
+.200
+.327
+0 11 5 +.420
+.355
+0286
+.219
+0234 -.052 -.078 -0084
+.352 -0018
+0363 +1 0000
+.548
+0636
+.196
+0204
+.355
+.082
+0084
+0161
+.332 -.074 -.001
85
+.314 -.038
+0200
+.548 +1 0000
+.697
+0172
+0236
+0315
+.227
+.176
+.204
+.230 -.153
+.195
86
+.297 -.105
+.327
+0636
+0697 +1 0000
+0136
+0343
+.406
+0186
+.258
+0203
+.023
-.ern
+.188
57
+0°72
+.133
+0 11 5 +0196
+0172
+0136 +1 0000
+0044
+0 139
+0012
+.167
+.222
+.244 -.509
+.153
s8
-.185
+0115
+0420
+02}6
+0343
+0044 +1 0000
+0648
+0732
+0261
+.202 -.096 -.323
+.020
82
-. 146 +10000
53
-.012
s4
+.147 =0018
+. 147 +10000
+0204
+0015
.....
VI
+0301
+.27 4
+0190 -0053 -0173
+.090
+0732
+0301 +1 000
+0165
+.086 -0131
-.278
+0038
+.167
+0261
+0274
+.165 +1.000
+0792 -0100
-.265
+.190
+0203
+0222
+0202
+0190
+.086
-0212 -.214
+.oi4
+.023
+0244 -0096 -0053 -.131
-0100 -0212 +1 0000 -.117
-.159
-0214 -.117 +1.000
+0046
a9
+.187
+.013
+0355
+0355
+0315
+0406
+0139
+0648 +1 0000
510
-.285
+.149
+0286
+0082
+0227
+.186
+0012
all
-.294
+0185
+0219
+0084
+.176
+.258
512
-.197
+.029
+0234
+0 ': 61
+0204
513
+.255
-0110 -0052
+033P
+0230
514
+.038 -0242 -0078 -0074
0
+0792 +1.000
-0509
-0323
-0173 -.278 -0265
-.082 +.015 -0084 -0001 +0195 +0 188 +0 53 515 ' tab.l 2. Correlatiematrix van ustma bronchialeo
+0020
+0090
-0153 =.071
+.038
+.190
+.014 -.159
+.046 +1.000 ,
51 61
52
+1 0000 -0085
83
84
+.346
+0443
85
86
+0488 +.484~0089
81
s8
+0245
+.093
-0114 -0054 -.050
89
610
+.313 -0081
all
a12
-0220 -.180
+0012 -0083 -0040 -0011
a13
814
s15
+0166 -0016
+.125
+.101
-0019
82
-0085 +1 0000 -.153 -0078
83
+0346 -.153 +1.000
s4
+.443 -.018
+0562 +1 0000 +0648
85
+0488 -0089
+0540
s6
+0484- -.114 +.595
+0701
87
+0245 -0054
+0324
+0238 +0283 +0381 +1 0000 +0234 +0312 +0186 +.196 +0263 +0380 -.410 -0116
88
+.093 -0050
+0282
+0282
+0562
+05 40 +0595
+0324 +.282 +0262 +0241
+.191
+.167
-0101
+.349 -.145 -.054
+0282
+0337
+0231
+0159 +.151
+0381 -.162
+.161
+0648 +1 0000 +0180 +0283 +0285
+0336
+.220
+.160
+0202
+.487 -.114
+.112
+0392 +.400
+0282
+0225
+.242
+0 420 -0266
+.1 47
+0701
+0780 +1 0000
+0285
+0392
+0238
+0381
+0234 +1 000 +.502 0
+0677
+.400
+.299
+0183 -.484
+.136
I-'
~
89
+.373 +0012 +0262
+0337
+0336
+0400
+0312 +0502 +10000
810
-.081
-0083 +0241
+0231
+0220
+0282
+.186
811
-.220 -.040
+.197
+0159
+0160
+.225
812
-.180 -0011
+0167
+0151
+.202
+.242 +0263
+.299
+.122
+.290
+.749 +1.000
613
+.166 -.101
-J- a
3L~9
+.387
+.487
+.420
+0183
+.122
+.157
+.299
614
-.076
-0145
~o 162
-.114 -0266 -0470 -0484 -0315 -.345 -0248 -.262 -.307 +1.000 -.028
615
+.125 -.019 -.054
+.161
+.172
+.101
+0255
+0137
+.122
+.122 -.315
+.255 +1.000
+0380
+.290
+.157 -.345 -.045
+0196 +0400 +0 137 +0380 +10000 +0749
+.299 -.248 -.080
+.380
+0 147 -0116
+0671
+0136
+.137 -0045
tabel 3. De correlatieJ tUGGcn de sympto~en bij bronchitis a~tmatica.
+0131
+.273 -.262 -.067
+0273 +1.000 -.307 -.147
-.080 -.067 -0147 -.028 +1.000
51
s2
83
54
55
86
s7
s8
s9
510
811
812
813
814
515
+1.000
-0045
+.094
+0261
+.228
+0230
+0 159
+0033
+0116
+0007
-0038
+0044
+.238
-0055
+0055
s2
-0045 +1 0ecO
-0031
-.035 -0086
~0055
+0040
-0071
-0050
-.128
-0164-
-0159
+.103
-0023
+0050
53
+.09 4
-0031 +1 0000 +0391
+0514 +0610
+0165
+0370
+.232
+0259
+.370
+0420
+.027
-0191
+.100
84
+.261
-0085
+.391 +1 0000
+.525
+.532
+.200
+0288 +0149
+0146
+0235
+.214
+0291
-0208
-0027
85
+.228
-0086
+0514 +0525 +1 000 +0715
+0166
+0301
+0214 +0310 +0279 +0336 -.214
+0158
86
+.230 -0055
+.610
+.532
+.715 +1 0000
+0115
+0473 +.305
+0360
+0467
+.376
+0302
-.273
+.156
87
+.159
+0040
+0165
+.200
+0166 +0115 +1 000 +.162 +0042
+0200
+0 139 +0157
+.355
-.600
-.133
s8
+.033
-.071
+0370
+0288
+0301
+.383
+0317
-.380
+.086
89
+.116
-.050
+0232 +0149
-.165
+.001
810
+.007
=0128
+.259
+0 146
+0214
811
-.038
-.164
+0370
+0235
512
+.044
-.159
+.420
513
+.238
+.103
514
-.055
815
+.055
81
tabel 4. De
0
+.218
0
+0 473
+.162 +1 0000
+0218 +.305 +0042
+0594 +0736 +0527
+ 0594 +10000
+0334
+0232
+.178
+.196
+0360 +0200 +.736
+.334 +1 0000
+0506
+0304
+0262 -0320 +0022
+0310
+0467 +0139
+.527
+0232
+.506 +1 0000
+.660
+0091
-.196
+.048
+0214
+0279
+0376 +0157
+0383 +0178
+.304
+0660 +1.000
+.010
-.143
+.052
+0027
+0291
+0336
+0302
+.355
+0317 +0196
+.262
+0091
+.010 +1 0000
-.347
-0119
-0023
-.191
-0208
-0214
-.273
-0600
-0380
-.165
-0320
-.196
-.143
-.347 +1.000
+0001
+.050
+0100
-0027
+0158
+.156
-0133 +0086
+.001
+0022
+.048
+.052
-0119
correlatie~
tussen de
syrnpto~en
bij bronchi:is chronica.
+.001 +1.000
I--' \J1
51
62
53
54
85
86
87
58
+1.000
+0171
-0058
+0077
+0103
+.057
+0096
+0050
+0008 -0044 -0265 -.202
62
+.171 +1 0000 -0034- -.029 -0009
-.046
+0045
+.031
-.064 -0050 -0125
63
-.058 -.034
64
+0077
65
+.103
61
+~
610
59
811
612
513
614
515
+.123 -.051
+.165
-0 109
+0268
-.076
-0032
+.272
+0265
+0359
+.331
+0 108
+0220
+.044
+.015
+.060
+.398 -.199
+0030
-0029
+0212 +1 0000
+0 401
+0433
+.210
+.140
+0125
+.067
+0258
+0203
+.259
-0146
-.005
~oOO9
+0265
+0401 +1 0000
+0666
+.161
+.240
+.199
+.184
+.214
+.134-
+0263 -.192
+0093
56
+.057 -0046
+0359
+0433
+0666 +1 0000
+.250
+0415
+0341
+0264
+.34-7
+.247
+0402 -.281
+0062
57
+0096
+0045
+.331
+.210
+0161
+0250 +1 0000 =0110
+0020 -0084
+.154
+0285
+0339
-.451
-0201
68
+.050
+.031
+.108
+.140
+.240
+.415 -0110 +1.000
+0521
+0690
+0321
+0087
+.285
-.)03
~.OOl
69
+.008 -0064
+.220
+.125
+.199
+.341
+0521 + J .000
+.215
+.229
+0120
+.261
-.266
+0027
610
-0044 -0050
+.044
+.067
+.184
+0264 -0084
+.690
+0215 +1 0000
+0370
+.141
+0165
-.219
+0084
611
-0265
=.125
+.015
+0258
+.214
+.347
+0154
+.321
+.229
+.370 +1 .000
+.733
+.120 -.141
-.035
512
-0202 -.109
+.060
+.203
+0 134
+0247 +0285
+.081
+.120
+.141
+.733 +1.000 -.066 -.089
-.008
513
+0123
+0268
+.398
+0259
+.263
+.402
+.339
+0285
+.261
+.165
+0120 -0066 +1.000 -.336
-.144
614
-.051
-.076 -.199
-0146 -.192 -.281
-.457
=0303 -026G
-.219 -0141
-.089 -0336 +1.000
615
+.165 -.032
-0001
+.084- -0035
-.008 -.144 +.054 +1.000
0000
+.030
+.020
-.005 +0093 +.062 -0201
+0027
tabel 5. De correlaties tussen de symptomen bij emfysema pulmonumo
+0054
I-' 0\
17
3.
De methode van Bayes- Warner.
)010 Principe
0
Uit de literatuur blijkt dat deze methode dikwijls wordt gebruikto(lito2) De belangrijkste reden hiervoor is de zeer eenvoudige wiskundige vorm die bij een goed gebruik tot goede resultaten kan leiden. De methode is reeds uitgebreid behandeld in het verslag van J.R o Durinck (lito 1), Het principe wil ik echter nog eens aangeveno We moeten beschikken over een voldoende groot aantal geregistreerde en gediagnostiseerde patienten 9 waarbij de waarde van ieder symptoom in een beperkt aantal klassen moet worden ingedeeld. Dan kunnen we bepalen: P(Zi) de kans op ziekte z!o pes)
de kans op het symptomen-complex ~
p(s/zt) de kans op hat symptomen-complex ~ indien gegeven is dat de patient ziekte zi heeft o Voor de kans op ziekte Zig gegeven het symptomen-complex
~
kunnen we dan
achrijven volgens het theorema van Bayes: P(Zi/S ) = P(Zi)o
pC
~Zi)
p( ~ ) Met behulp van deze vergeIijking kan de meest waarschijnlijke ziekte worden bepaald o Het grote nadeel van deze methode is dat voor de bepaling van P(~Zi) aIle mogelijke kombinatles van
~
in het patienten-materiaal aanwezig
moeten zijno Bij meerdere symptomen die in verschillende klassen
worden
ingedeeld is het praktisch onmogelijk om P(~Zi) op verantwoorde wijze
te bepaleno In de praktijk gaat men dan ook als voIgt te werko Stel er zijn m symptomen 9 aIle geklassifiseerd tussen
0
en k o Uit het geregistreerde materi-
aal wordt dan berekend de kans dat een bepaald symptoom sb de waarde j heert indien ziekte zi aanwezig is: Dit is P(Sb
= j/Zi).
We noteren dit voortaan ala P(Sb/Zt).
18
Voor P(~Zi) kunnen we dan schrijven:
p( zi o
SIo
82
00
0
.sm ) =
P(Zi) =
P(Zi)o p(sr/ Zi)o P(S2/ Zi sIlo --- p(sm /ZioSr 82" .sm-l ) (5) P(Zi)
Indien de symptomen onafhankelijk zijn is dit gelijk aan:
(6)
Vergelijking (4) krijgt dan de volgende vorm:
De grote moeilijkheid bij toepassing van deze methode blijkt de voorwaarde
v~~
onafhankelijkheid der symptomen te zijn. Door het berekenen
van de correlatiematrices kunnen we nagaan of aan deze eis voldaan wordt. Uit praktische toepassingen in de literatuur blijkt dat correlaties die niet al te groat zijn worden verwaarloosd o
19
~.2
Correctiemethoden bij afhanke1ijke symptomen. Indien hoge correlaties tussen de symptomen aanwezig zijn dan kan met de volgende methoden worden gecorrigeerdo ~o
Gebruik maken van de voorwaardelijke kans o
Qo Transforrnatie van de symptoomvectoren.
ado a. Indien op enkele verspreide plaatsen in de correlatiematrix een te hoge correlatie tussen enkele symptomen aanwezig iS 9 dan kunnen we deze corrigeren door voor deze symptomen weI de voorwaardelijke kansen in de berekening te gebruikeno Bijvo
SI
S~
S6
In deze correlatiematrix veronderstellen we hoge correlaties tussen de symptomen s2 en 83 9
en s5 en tussen s5 en s6 4 Volgens verg. 5 wordt dit dan: 8
P(sl/Zi)o P(S2/ Zi)0 p(S3 o/ Z i S 2)0 P(S4/ Zi)o p(s5/ Zi s 4)o P(S6/ Zi S 5s 4)
(8) Indien we k klassen per symptoom hebben dan zijn er k 2 kombinaties van s2s3 en k 3 kombinaties van 84s5s6o Voor een verantwoorde bepaling van P(S2os3/~i)
is dus een groter aantal geregistreerde patienten noodza-
kelijk dan voor de bepaling van P(Sl/Zi)o Voor p(s4s5s6/Zi) geldt dit nog sterker o We kunnen dan konkluderen dat deze methode aIleen maar zinvol is indien: 1 Het aantal hoge correlaties klein is. 2 Het aanta1 geregistreerde patienten zeer groot is.
20
ad.b
In het ideale geval, waarbij de symptomen onafhankelijk zijn, zal
de variantie-covariantie matrix C van de symptomen een diagonaal matrix zijno Indien dit niet het geval is dan kunnen we de symptoom-vectoren
~
dusdanig
transformeren dat de nieuwe variantie- covariantie matrix C' weI een diagonaal matrix Iso In dit nieuwe stelsel zijn de getransformeerde symptomen onafhankelijk o De gezochte transformatie naar het nieuwe stelsel is een rotatie met een matrix Ro Deze matrix R kunnen we bepalen door het berekenen van de eigen vectoren van Co De m orthogonalen eigenvectoren vormen als kolomvectoren de matrix Ro Omdat C symmetrisch is bestaat de orthogonale matrix R met det
= +
Ip waar-
bij geldt dat de getransponeerde matrix R gelijk is aan de inverse matrix van
R: RT = R-I o De matrix R bevat dan de komponenten van de oude basis. Voor de ,-1 ~ = R ~
=
van de nieuwe basisvectoren ten op-zichte
symptoomvector~'
in het nieuwe stelsel geldt dan
T R ~o 9
Voor de nieuwevariantie-covariantie matrix C geldt dan:
(10)
C' is een diagonaalmatrixo We hebben nu een nieuw assenstelsel verkregen waarin de nieuwe symptomen onafhankelijk zijno Deze nieuwe symptomen zijn kombinaties van de oude
s~npto-
Door deze transformatie is echter de oorspronkelijke indeling van de symptomen in klassen verloren gegaan o We kunnen dit demonstreren door (9) uitge~ braider op te schrijveno
,.
r
sl
n
,
s.
r .,
JL
J
s
,
r
ml
sl
rIm 0
0
r. Jm r
m1
mml
0
(ll )
s.
J
s
m
De je komponent van ~' is het produkt van de je rij van R en
~
sl
,
s. J
::0
( r j1
()
r jm) •
(12)
• s
m
21
De nieuwe waarde van vector
~o
sj wordt
dus bepaald door de hele oorspronkelijke
Op de je as in het nieuwe stelsel krijgen we een continue verde-
ling van punteno De oorspronkelijke indeling van de symptomen in een beperkt aantal klassen is hierbij verIoren gegaano Indien .deze punten een normale verdeling vormen dan kunnen we gebruik maken van de methode van Baileyo (lito4) Deze geeft formules am uit onafhankeli,ike en normaal verdeelde symptomen meer dimensionale verdelingen te berekenen waarmee de Bayesmethode weer kan worden toegepasto Bij de afleiding van deze formules is men uitgegaan van normaal verdeelde symptoomwaarnemingen p wat nu weer de grote moeilijkheid oplevert.
22
3.3
De herkenning van longpatienten met de methode van Bayes-Warner. Door J.R. Durinck is een computerprogramma gemaakt waarin de kans op een bepaa1de ziekte wordt berekend vo1gens (7).(lit.1)
I: '
Bij deze berekening wordt dus geen rekening gehouden met de corre1aties tussen de verschillende symptomen. De kansberekening wordt voor de vier verschi11ende longziektes uitgevoerd o Door de uitkomsten te vergelijken p bepaalt de computer de meest waarschijnlijke ziekte. Dit programma kon door enkele
wijz~gen
geschikt gemaakt worden voor
15 inp1aats van 14 symptomeno De oorspronkelijke patientenband werd eveneens gewijzigd. Per patient zijn nu aanwezig de ponsingen van: ao De door de arts gestelde diagnose. b. Het patientkode nummer. co De symptomen sl tot en met s15 in de zelfde volgorde als in hst o 201 Totaal zijn bekend de gegevens van 103 patienteno Met deze gegevens kunnen we met het "matrix-programma" de kans matrices berekenen. Voor iedere k1asse j van een bepaald symptoom sp berekent dit programma de kans op ieder van de vier ziektes indien het symptoom sp waarde j
heeft p dus P(Zi/SP=j)o
Deze matrices hebben we nodig voor de berekening van de kans, die een patient p met een bepaalde symptornenvector p heeft op een hepaalde ziekteo Van de-ze1fde 103 patienten 1aten we de computer, met behulp van deze kans matrices, de rneest waarschijnlijke ziekte bepaleno Uit de resultaten b1ijkt dan in hoeverre de computer instaat is om volgens deze methode de door de arts vastgestelde diagnose te herkenneno Dit geeft de volgende tabe1: gediago pat. aantal astma bronchiale
86
herkende pat. aantal
%
47 126
5395 45,8
71
bronchitis astmatica
273
bronchitis chronica
143 201
161
50 93 80,6
703
405
57,6
emfysema pulmonum totaal
tabel 6 0
De volgende tabel laat zien welke verwisselingen zijn opgetreden.
23
diagnose arts
diagnose computer
tabel 7.
a
b
c
a
47
66
b
126
c
34 2
e
3
43
14 19 71 39
38
Verwisae1ingen door de computer.
e
1 10
29 161
i
j
24
4 401
De lineaire regressiemethode.
0
)?rincipe. In het vorige hoofdstuk is aangetoond dat het correct bepalen van P(zi/.!!.) diverse problemen
~eeft.
We kunnen proberen om deze moeilijkheden te ver-
rnijden door pCz./s) te benaderen met een functie van de symptomen. In de ~-
literatuur is deze methode bekend als de scheidingsvlak methode. Hij wordt ondermeer gebruikt bij de patroonherkenning (lit.5)o Als grote voordeel ten opzichte van de Bayes-Warner methode geldt dat de symptomen niet onafhankelijk behoeven te zijn. De benaderingsfunctie f(~) kan willekeurig gekozen worden. Wij hebben hiervoor een lineaire functie gekozen. Het gevolg hiervan is dat we aIleen een optimaal resultaat kunnen verwachten indien er een lineair verband bestaat tussen z en ~o Ret voordeel van deze keuze voor f(~) is echter dat we hierdoor te maken krijgen met de reeds lang bekende multipele lineaire regressie.
(lit.6). Voor een algemene beschouwing van de gebruikte methode voar classificatie tussen twee ziektes namen we het volgende model g 2
zie~teB
zl en z20
m symptomen slo.oo.osm n is het totale aantal patienten van de ziektes zl en z2 De waarde van ieder symptoom wordt bij aIle patienten gegeven door een getal. Bij metingen kan het numerieke meetresultaat worden genomen o Bij klinische symptomen kan de ernst van een symptoom worden weergegeven door deze symptomen in klassen in te delen o De heide ziektes geven we een willekeurige numerieke waarde o b.vo zl=O en z2= 10 Voor de benaderingsfunctie f(~) nemen weg
m
f (.2.)
De constanten
0
=c
+ o
Lp=' c p (s p
-
S) p
moeten nu bepaald worden o
Hiervoor minimaliseren we de verwachtingswaarde van de kwadratische fout o EGz -
fC~)12J=
m E[{Z - Co -LcpCsp - Sp)} 2] =
p='
25
'M
.. E [z2
-
20 z - 2z o
M
~
L LO c (s
+
f' ':, ,.:: I
.,. Elz 2]
p q
- S ) (s
p
p
2
o
"" E[z2] ~
20
o
L0P (8 P -
S)
[0 EUa p= P-op 0-zs L
2
0
+
o
20
p='
P
~
q
+
S P 0
2 +
P
- S ) + P
i
rn m ft'\
0 + p:L L9-= 0Cq [s 2
+
E
O
M
I
~'c p C q C-s
L L
F'I ~::I
P
(s
\
)~
0
I' c
0\'=1 P
- S )] '"
q
1 P
Z-
+
P
0-\ ,-
Z-
- 20
't'*'
2
I P
P
sp )(s q - sqTI
s p q
We vinden het minimum door te stellen:
6n Dit geeft:
- 2z + 20 .,. 0 o
= 2 ()
zSp
(16) lIV'I
'0
+ 2 ~ q 0"'S Sq '" 0 ~=l
(17)
P
Hieruit voIgt dan als oplossing: c
=
en
.. Z
0
=
Q.
Q:'"z!!.
(18)
[=1
~
Hierbij is:
=
C
<J zs
G:)
o
en
ei zs
o
(Jzs
m
waarbij
~s
1
O:s
P
CJzs
=
"n' -~ 1
{
tzrE
z ~ i s pi L:I Y\
1
(20) p m
spi } .
(21)
is de variant ie- covariantiematrix van de symptomen gerekend over aIle
patH~nteno
4J's 161
~s I m
0
•
[ss '"
(22)
era a m1
Cfa a
•
mm
n
Hierbij is
O";s p q
1 '"
n - 1
{
n Ls
.s .
l;:1 p~ q~
-
'" . ~s =L p~.. ~s :::1 q~ n
}
(23)
26
Nu de constanten c bekend zijn kunnen we voor iedere patient met symptomencombinatie ~ de functie f(~) bepalen. Bij een zodanige numerieke keuze van zl en z2 dat zl
geldt dan als beslissingsregel: z + z De patient heeft ziekte zlindien f(~) ( 1 2 2 P
(24)
De patient heeft ziekte z2 indien f(~»> Bij de keuze van zl
=
° en z2
ziekt zl indien f(~)
(0 5
ziekt z2 indien f(~J
>0,5
=
1 krijgen we dus:
9
Deze beslissingsregel is optimaal indien het risico vqn een foutieve klassering voor be ide ziektes gelijk iso Zo kan men ook een veiligheidsmarge invoeren door in een grensinterval ( bov o 0 9 4 «f(~) te doen.
<0 6 ) geen uitspraak 9
21
402
De berekening van de regressie constanten e De in hat. 4.1 aangegeven methode is in principe direkt uit te breiden voor meerdere ziektes. Dit is echter aIleen zinvol indien deze ziektes'duidelijk gescheiden groepen vormen. Bij de longziektes ( CARA ) is dit niet het geval. Bij de diagnosestelling wordt in de Dr. van Spanjekliniek rekening gehouden met het gecombineerd voorkomen van 2 ziekteso Bij sommige patienten stelt men dan een zogenaamde "dubbeldiagnose".
Om deze redenen hebben we een andere methode gevolgd. Uit de 4 zi~ktes kunnen 6 verachillende combinaties van 2 ziektes worden gevormd. Deze combinaties zijn: a - b ; a - c ; a - e ; b - c ; b - e ; c - e
0
Om een patient te diagnostiseren met behulp van de lineaire regressiemethode g leek het ons hetmeest zinvol om steeds 2 ziektes te beschouwen. Door dit voor de 6 verschillende combinaties te doen, krijgen we 6 uitkomsten 9 de zogenaamde "tussendiagnoses"o Met een bepaalde beslissingsregel kunnen we de computer uit deze 6 tuseendiagnoses een einddiagnose laten vaststellen.(zie hst o 403)0 Allereerst moeten echter de constanten c
o
%
c
m
berekend worden voor de 6
combinatieso Hiervoor is het algolprogramma LINoREG. geschreveno De werkwijze van dit programma is als volgt: Eerst least de computer welke constanten moeten worden bepaald( met welke symptomen) en daarna worden de gegevens van de patienten ingelezen waarmee we deze constanten willen berekeneno De computer zoekt nu uit deze gegevens alle patienten met ziekte a en aIle
pati~nten
met ziekte b o
Voor de eerste ziekte wordt gedefinieerd z = 0 en voor de tweede ziekte z = 10 Deze keuze is volledig willekeurigo Voor aIle 6 combinaties wordt dezelfde keuze gedaano Net de gegevens van de
patH~nten
Het gemiddelde van de ziektan:
z
met ziekte a of ziekte b wordt nu berekend:
Het gemiddelde van ieder symptoom: s p De covariantie tussen z en s:
-
cr -z!.
De variantie- covariantiematrix van de symptomen:
L ss
m
+ LC (a - Sp) 0 _\ P P kregen we ale oploasing: P- c c: z en .£ = o Bij de keuze f(s) = c
Sfzs
,-1 L...
- -ss
28
wordt dus eerst de variantie- covariantiem [-1 uitgerekend. gelnverteerd en daarna wordt het product ss -z!!. ~
Voor de bepaling van Cl% matrix
L
c
cr
We kunnen f(~) ook als voIgt schrijven: f (!!.) .. c
o
-
tY\
VV\
0\
L s
c + ~c s p=\ P P p=' p P
= 0'
o
+
Lc s ,,=1 P P
(26)
r'I'
Uit (18) en (26) voIgt dan c'
o
=Z-
Lc S ,,"I P P
Om de berekening bij de classificatie te vereenvoudigen gebruiken we c' in o
plaats van c
o
0
Op ponsband levert de computer de constanten
c~
en c tot en met cmo 1
Dezelfde berekening wordt hierna gedaan voor de ziektecombinaties a - c a - e enz. Het flowdiagram van het programma LIN. REG. is gegeven in figuur 2. De pro.~ammatekst
staat in bijlage Co
De volgende notaties z1Jn gebruikt: m is het aantal symptomen van de patientenband o av is het totale aantal te gebruiken symptomeno ap is het aantal patienteno x[bJ
is de symptoomvector !!.O
pat[npb]
is het array met de gegevens van de patienten.
zgem is het gemiddelde z.
sp sgem[bJ is de rij van de gemiddelden C- o sigmazs[b] is de rij van covarianties -zs sigmass[p,q] is de variantie- covariantiematrix [sso con(O] is de constante c of c'. 0
0
0
con[p] is de rij van constanten c p
(p
1 o.
av) .
29
i I
lees: m (aantal symptomen) lees nummers van de te gebruiken
somzes[p] = sx[p] = sxz[p]
PiV[PJ::z 0; zesa[z,p] d[Ppq] = 0; n 0
=
0
~
::I
schrij f nummers van de te gebruiken sym tomen. lees: ap (aantal patienten) ziekte[zJ 0 n ... 0 ja
lees gegevens van n pat[npO] ::z
e
patient
Z
pat[npb] ::z :x(bJ ziekte[z] = ziekte[z] + 1 neen zesa[z 9 p] ja
somzes[pJ '
::I
=:
zesa [z 9 P.J
somzes[pJ + 1
x[p] = 0 x(pJ
t ... t + 1 r
t
xx
+].
30
ja
.I
noemer = noemer - somzes[q] sxz[p] = sxz[p] + x[p]
sigmass[p,q] =
noemer
SX[p] Xsx[q] (nz - somzes[p] )( nz - somzes[q] )
nz = ziekte[tJ + ziekte[r] zgem = ziekte r Inz
procedure voor berekenen sigmainv[pgq]
= (
van
sigmas~[p9qJ )=1
con[o] = zgem con[p] = a
noemer = nz - somzes[bJ sgem[b]= sx[bJ
I
noemer
sigmazs[b] = sxz[b] - ( ziekte[r]- zesa[rgbJ)pSx[b] noemer noemer - 1
schrijf en pons: conCa] con[p] neen
c
sigmazs[b] neen noemer
=
nz - somzes[p]
fig. 2. F10wdiagram van programma LIN. REG. p, q, b
=
1
m;
B
31
4.3 Hat diagnoseprogramma LIN. DIAG. Het programma LIN. DIAG. leest allereerst de constanten die door het programma LIN. REG. op ponsband zijn geleverd. Daarna worden de gegevens ingelezen van de patient die gediagnostiseerd moet worden. We hadden de volgende combinatiemogelijkheden: a - b ; a - c ; a - e ; b - c ; b - e ; c - e Met de procedure "linberek" wordt voor iedere combinatie de meest waarschijnlijke ziekte berekend. Dit geeft ons 6 tussendiagnoses, waarbij we kunnen nagaan hoeveel keer een bepaalde ziekte a 9 b 9 c of e bij deze tussendiagnoses voorkomt. Met behulp hiervan bepaalt de procedure "diagnose" de einddiagnose voor de betreffende patient. Als tussendiagnoses zijn veel combinaties mogelijk o De belangrijkste zijn:
10 3
x zi +
3 andere tussendiagnoseso
(3 x z. ~n 3 x z. is niet mogelijk) 1
.
J
Een bepaalde ziekte z. kan maximaal 3 keer voorkomen bij de tussendiag1
noses omdat deze ziekte 3 keer vergeleken wordt met een van de andere ziekteso Indien bij deze vergelijkingen steeds ziekte z. wordt toege1
kend p dan concluderen we als einddiagnoss eveneens z.o 1
£0
2 x zi + 2 x Zj + 1 x zk + 1 x zho Bij deze combinatie blijkt de computer voorkeur te hebben voor 2 ver= schillende ziektes z. en z. 1
J
0
Om nu een einddiagnose vast te stellen gaan
we kijken naar het resultaat van de combinatie zi - zjo Dit resultaat moet nu de bslissing geven o Doordat we rekening moe ten houden met het voorkomen van "dubbeldiagnoses" (zie hst o 402) hebben we voor deze situatie de volgende beslissingsregel genomen: Bij de combinatie zi = Zj was gedefinieerd zi
=
° en Zj
1
0
Indien nu
f(~);>
Op75 dan stellen we ala einddiagnose Z.9 J f(~) 0 9 25 dan stellen we als einddiagnose zi 9 0 9 25 ~ f(.§.) ~ 0 9 75 dan stellen we als einddiagnose ziZjo
<
i.
2 x zi + 2 x Zj + 2 x zko Indien deze combinatie van tussen diagnoses voorkomt dan wordt door de computer geen einddiagnose vastgesteld. De enige conclusie die we kunnen stellen is dat de patient in ieder geval niet de resterende ziekte zh heeft.
Figuur 3 geeft het flowdiagram van het programma LIN. DIAG. De programma tekst staat in bijlage C.
De volgende notaties zijn gebruikt: tote is het totaal aantal constanten. ap is het santal patienten dat gediagnostiseerd moet worden. constanten[i,b] is het array dat de constantan
c p bevat.
ziekte[zJ bevat de tussendiagnoses. diag(p,qJ bevat de uitkomsten van de regressie berekening.
33
diag[p,q]
lees totco lees nummers van de constanten.
= diag[p,q]
+
+ constanten[i,bJ)(S[bJ
inlezen van de constanten. schrijf constanten. ziekte[qJ
ziekte[qJ + 1
ziekte[p]
ziekte[p] + 1
n '" n + 1
ziekte[zJ
neen =
B
0
lees gegevens van de n
e
patiento neen
i = 0
p '" 0
p = p + I
q = p
schrijf diagnose x ga naar D.
ziekte[x]
2 6n
ziekte[yJ
2
q '" q + 1 i '" i + 1
neen
x
=
x +
I
ga naar E
?
ja
34
D
ja
neen
schrijf diagnose y ga naar Do
neen schrijf diagnose x ga
naar Do
schrijf diagnose XYo
neen
A
fig. 3. Flowdiagram van programma LIN. DIAG. b
::I
1.
15.
35
4.4
De herkenning van longpatienten met de lineaire regressie methode. Zoals bij de Bayes- Warner methode hebben we de gegevens van de 703 patienten weer gebruikt voor het bepalen van de regressieconstanten.
Me~,deze
stanten laten we daarna de computer een computerdiagnose stellen
van
con-
deze
zelfde 703 patienten. Hierdoor kunnen we nagaan in hoeverre de computer in staat is om zijn eigen basismateriaal te herkenneno De resultaten van 703 patienten, waarbij van iedere patient 15 symptomen zijn gegeven, zijn als volgt: gediag.. pat.
herkende pat. aantal
%
86
22
25,5
bronchitis astmatica
273
51
19,5
bronchitis chronica
143 201
17
12
1'4
81,5
703
254
36
aanta1 astma bronchiale
emfysema pulmonum totaal
tabel 8
Bij een verder bestudering van de patienten gegevens bleek dat de codering van de symptomen 52 p 513 en s14 voor deze methode minder geschikt was (zie hsto
5.5)0 Om de methode te testen zonder van deze symptomen gebruik te
maken, moest het oorspronkelijke programma p dat aIleen geschikt was voor 15 symptomen p gewijzigd worden. Met de nieuwe programma'sp gegeven in hst. 4.2 en 4.3p kunnen symptomen worden weggelateno De resultaten met 12 symptomen (zonder s2 p s13 en s14) bleken veel beter te zijno De herkenning was als volgt: gediag. pat. aantal astma bronchiale
herkende pat. aantal
%
86
0
0
bronchitis astmatica
273
194
71
bronchitis chronica
143 201
75 162
52,5 80 p5
703
431
61,5
emfysema pulmonum totaal
36
De verwisse1ingen door de computer waren: diagnose arts
diagnose computer
tabe1 9.
c
b
a
e
a
0
0
0
0
b
194
28
14
c
73 10
33
75
25
e
3
46
40
162
Yerwisse1ingen door de computer. (zander s2 p s13 en s14)
37
5.
De multipele discriminant analyse methode.
5010 Inleidingo Discriminant analyse is de eerate wiskundige methode voor het bepa1en van functiea om onbekende elementen in verschillende groepen in te delen. Deze functies worden berekend uit de variabelen van de elementen, die reeds in deze verschillende groepen zijn ingedee1d. Toepassing van de discriminant analyse vindt men vooral bij de psycho1ogie waar men proefpersonen door middel van tests in verschi11ende groepen tracht in te deleno De eerste publicatie over de discriminant analyse verscheen in 1936 en was van R.A. Fisher (lit.7)o Deze had een discriminant analyse ontwikkeld, waarbij een 1ineaire functie van de variabelen werd berekend o De methode is rekentechnisch zeer overzichtelijk maar veronderstelt norma1e
verdeling~n
van de
variabelen. Door Welch (liteS) werd in 1939 een methode gepubliseerd die deze verdelingseis niet stelde maar die in de praktijk zeer moeilijk toJpasbaar waso Hierna zijn verschillende methoden ontwikkeld die meesta1
var~aties
of
uitbreidingen waren van de methoden van Fisher en Welch o Een goed overzicht hiervan wordt gegeven door Bauer (lit09)0 De discriminant analyse kan het beste worden gedemonstreerd aan een voorbeeld van twee groepen en twee variabelen ( figo4)o De twee variabelen x en ij zijn enigszins gecorreleerd p wat ook blijkt uit de figuur o Voor de discriminant analyse zijn deze correlaties niet belangrijk o
ij
B
x
fig o
4.
38 ladera ell ips is de rand van het kleinste gebied waarin een bepaald percentage elementen van een groep ligt. In de engelee literatuur worden deze ellipsen
"centours" (afkorting van centile contour) genoemd. De snijpunten
van overeenstemmende centours bepalen de lijn II. Lijn I staat loodrecht op lijn II. De projecties van de punten van de groepen A en B zullen;bp deze lijn ,' I elkaar minimaal overlappen. De discriminant functie transformeert de testresultaten van een element in de testruimte naar een punt op deze lijn e Door de plaats van het punt op deze lijn worden voor het element de waarschijnlijkheden bepaald om te behoren tot groep A of groep B. In een meer-dimensionale testruimte (aantal variabelen en aantal 'groepen groter dan twee) zal ~~n goede lijn zelden bestaan. Om een goede scheiding te krijgen voor aIle groepen worden door de multipele discriminant analJse orthogonale discriminant functies berekend. Orthogonaal wil hierbij zeggen dat de discriminant scores niet gecorreleerd zijno ne discriminant score is het produkt van discriminant functie en de vector van testvariabelen o Hierdoor ontstaat naast de testruimte een discriminant
ruimte~
De classificatie methode uit hsto 503 kan in principe ook in de testruimte worden gebruikt o De multipele discriminant analyse heeft echter de volgende voordelen: ao De dimensie van de discriminant ruimte is veel kleiner dan de dimensie van de testruimte o Dit verkleinen gebeurt zonder belangrijk inforrnatie- verlies en bovendien zodanig dat een optimale scheiding tussen de groepen wordt verkregen o b o De rekentijd bij de classificatie is korter o co De classificatie methode van hat o 5030 veronderstelt een multi-normale verdelingo Aangezien volgens de centrale limietstelling geldt dat lineaire functies van variabelen eerder normaal verdeeld zullen zijn dan de component variabelen p zullen we in de discriminant ruimte eerder ann deze voorwaarde voldoen dan in de testruimte o
39
5G2. Het bepalen van de discriminant functies. Voor het bepalen van de discriminant functies hebben we hetzelfde soort patienten-materiaal nodig als bij de regressie analyse (hst.
4).
Al1 7, patienten
met een zelfde ziekte beschouwen we als een groep.
We gebruiken weer de volgende symbolen: g is het aantal groepen (ziektes)o m is het aantal symptomen.. sp is de waarde van het pe symptoom.. N is het aantal patienten van groep i. i N
is het totale aantal patienteno
De discriminant functies Y zijn lineaire functies van de symptomen: j
= Y j
Y.
j
(.§)
j
COl
1
0
0
r
(28)
Voor de discriminant score geldt dang m f. = J
L.VpjB P
p:\
De coefficienten v . van de je discriminant functie moeten zodanig Z1Jn dat de PJ
waarde van f j binnen elke groep (ziekte) minimaal en tussen de groepen maximaal in grootte verschilt o Dit betekent dat de binnengroep- variantie van f. minimaal en de tussengroep= variantie van f j maximaal moet zijn o Matrix W is de som van de
~adraat=
J
kruisproduktsommen matrices van de ver-
schillende groepeno Voor het element "'pq van W geldt dan: N~
w pq
=.1-{~(s ~~ ti pin -8pi ).(s qin =8)} qi
(30)
Matrix T is de kwadraat-kruisproduktsommem matrix van aIle patienteno Voor t
pq
geldt g
N
t
r~trix
Voor a
pq
=
L n:
I
(s
pn
- S ). (s p
qn
- S ) q
(31)
A is de matrix van de kwadraat-kruisproduktsommen tussen de groepen. pq
geldt a
N
i
(8 pi
-
8y ). (8 q1. -
sq )
(32)
40
Bovendien geldt: Nu is v!A\l'j -J -
de tussengroep-kwadraatsom van f. en v!Wv. de binnengroep-kwaJ
-J -J
draatsom van f.o Om te voldoen aan de voorwaarde dat de binnengr~ep-varianJ
tie van f. minimaal en de tussengroep-variantie van f. maximaal is, moeten J
J
we het maximum bepalen van
onder de bijvoorwaarde
vj'v ... 1
- -J
De oplossing hiervan vinden we door partieel te differentieren: =
Q
, -1 -J -J
Omdat v.W v. aen constanta is kunnen we BchriJ'ven v.'Av. -J -J v 'VIv. - j -J
..
l v.'W- v.v.'Av. -J -J-J -J
1 v.'W- v.v.'Wv . -J -J-J-J
Hierbij is gebruik gemaakt van de associatieve eigenschap van matrices en van ( 35)0 Dus (36) wordt dan:
~ o Y.j
{VI W-1Av -j
-j
-1 '" ~ W A Yj
A~ an ~ worden dus gevonden als een eigenwaarde en de bijbehorende eigenvector van w-1A~ AlB algemone oplossing krijgen we de determinant vergelijking IW=lA =
AI I . . i
De componenten van elke eigenvector Yj zijn de coefficienten van de je discriminant fUnctie. Het onderscheidend vermogen van iedere discriminant functie wordt bepaald door de relatieve grootte van de bijbehorende eigenwaarde. In prooenten is het onderscheidende vermogen van de je discrirrdnant
41
functie: 100
)..~
~ p=\ r
We moeten nu beslissen hoeveel discriminant functies we wensen te
~ebruik-
en. Hiervoor kunnen we een test gebruiken om de belangrijkheid van de verschillende functies te bepalen o We kunnen ook de methoden volgen die bij de factoranalyse wordt gebruikt en waarbij men aIleen de eigen-vectoren neemt met de grootste eigenwaardeno Het aantal eigen-vectoren bepaalt men dan door te stellen dat het totale onderscheidende vermogen minimaal 90 moet bedragen o
%
I
=1 Omdat aIle eigenwaarden van W A bekend zijn, kunnen we met een eenvoudige test nagaan of er duideIijke verschillen bestaan tUBsen de groepen van het patientenmateriaal. Uit deze test blijkt dan of het zinvol is om nieuwe
p~
tienten te classificeren o Hiervoor stellen we als hypothese dat alle elementen (patienten) steekproe~6n
ven zijn uit
grote multinormmle verdeling en berekenen kans dat deze
hypothese waar is" Indien deze kans
<5%
dan verwerpen we de hypothese"
We gebruiken hierbij het lambda = criterium van Wilks (lito 10)0 Lambda is hierbij gedefinieerd
alSg
(41) =1 eigenwaarde van T Wo Omdat T
\y~iseen
= W + A en omdat aile matrices re-
gu1ier zijn kunnen we schrijven g
Dus
waaruit voIgt
We moeten nu nagaan of J\significant is voor de gestelde hypothese. Dit kunnen we doen met een F= teats l1a;:.rbij we gebruik maken van de benadering van Rao (lito 10)0
Ste1:
q
:s
g
n
::I
N - 1
x
::I
=
1
V
4
m2q 2 -
2
m + q
2
-
5
\
42
q + 1 ) p "" n - (m + 2 (){= _ 1J19. -
(45 )
2
(49)
4
r
==
~
(50) ..L
~""X
(51)
= (1 - y ) ( px + 20( ) en ~r + px 201. y 2r 2r en px + 20< zijn respectievelijk het aanta1
(52) vrijheid~graden
van de teller
en van de noemer o De kans dat de gestelde hypothese waar is p kunnen we nu berekenen Sf opzoeken in tabellen met behulp van deze vrijheidsgraden en de waarde van Fe De
gese1~oteerds
orthogona1e eigenvectoren moeten nog genormeerd worden o
Hierdoor kunnen we tevens zien hoe groot de re1atieve bijdrage is van de variabelen aan de discriminant functie o Voor deze normering worden de eigenvectoren vermenigvuldigd met de worte1 van de diagonaa1elementen van matrix W" Dus
Indien
d pj "vpj~ pp ~discriminant
p = 1
ooom
functies zijn geselecteerd dan krijgen we een
minant matrix D met r ko1ommen en m rijen o
discri~
43
5.3d De classificatiemethode. De matrix van discriminant functies D kunnen we be schouwen ala een transformatiematrix van de
m-d~ensionale
testruimte naar de r-dimensionale
discriminant: ratmte. We kunnen de groepsgemiddelden (groepscentr~Iden) en de spreidingsmatrices in de discriminant ruimte bepalen door dezen te transformeren van de testruimte naar de discriminant ruimte met matrix D. Stel dat in de testruimte G de matrix van groepsgemiddelde is en V. de val.
riantie- covariantiematrix van groep i o Dan geldt voor de matrix van groepsgemiddelden in de discriminant ruimte
en voor de variant ie- covariantiematrix van groep i in de discriminant ruimte
. T Matr1x D is de getransponeerde matrix van matrix Do II -
'ltl!l
,=0.
fig. 50 Voorbeeld van een 2=dimensionale discriminant ruimte. ( 2 groepen). Indien we van een patient willen nagaan tot welke ziektegroep hij behoort dan moeten we zijn symptoomvector
~
in de discriminant ruimte bepalen door zijn
symptoomvector ~ te transformerenc (figo5)
%
T
= D.!
Vector sd bepaalt een punt in de discriminant ruimte o Voor de
classifica~
tie is de afstand van dit punt tot de groepsgemiddelde be angrijk dooldat
44 hierdoor wordt bepaald op welke centour van een groep dit punt ligt. Zoals reeds aangegeven in hst o 501 0 veronderstellen we dat de verdeling van punten rond de groepscentroiden multinormaal is. Hierdoor kunnen we voor de afstand gebruik maken van de
chikwadr~at
verdeling o Vaar groep i geldt dan !
1
dat -1
V . = de inverse van de variant ie- covariantiematri~ van groep i in de disd fJ. e criminant ruimte en ~ is de afstand van ~ naar de i groepscentroide:
(58)
De algemene verdelingsvergelijking van f (
?t f:I2 ) d ).. 2v
=
A(
2
~V=l• exp {
'X y )
~
.x.;; is X~} d ~y2
~""2
(59)
V is het aantal vrijheidsgraden o Uit deze vergelijking blijkt dat de verdelingsdichtheid kleiner wordt naarmate 1-
Xvgroter wordt o Ala gevolg van deze eigenschap kunnen we als beslissingsregel nemen dat de patient met symptoomvector ~ behoort tot ziekte i indien )l~ het kleinste i8 0
~ E
Zi
indien
)L7 < 'X~
1
0
0 00
g;
i
+k
(60)
Deze beslissingsregel is optimaal indien: a o De spreidingsmatrices van de oorspronkelijke groepen gelijk zijn o b o Deze groepen bestonden uit gelijke aantallen patienteno Indien dit niet zo is danlcunnen we de meer algemene regel nemen:
(61) i
+k
Pi en Pk zijn de apriorikansen om te behoren tot groep i of groep k. Deze beslissingsregel is afgeleid van de volgende algemene Bayes-regel voor de berekening van de waarschijnlijkheid om tot een bepaalde groep te behoren.
45
P(Zi) P(zi/%)
==
IVd,~t
L;CZkt~ d,k :t
l~
exp(- -") 2
exp(-
(62)
X~) 2
Hierbij hoort dan als beslissingsregel:
is> k ... 1
0
o
g;
i
+k
46
5.. 40 De programma's. Voor de discriminant analyse methode beschreven in hst. 502 en programma's aaIlwezig in de groep
It
5.3 waren
Onderwijsresearch " van de Technische
Hogeschool o Deze programma's zijn geschreven volgens de methoden die wordt gegeven door W. 'vI o CooleY in zijn boek
It
Multivariate Procedures for the Be-
havioral Sciences" (lito n) Alhoewel het noodzakelijk was om enige wijzigingen aan te brengen 9 waren deze programma's toch zeer goed bruikbaar o De patientengegevens behoeven geen gehele getallen te zijn waardoor het mogelijk is om meetresultaten zonder kodering of kwantisering te gebruiken o De ponsband met patientengegevens moet ingedeeld zijn volgens type II (bijlage Ao)o
50401 Het programma DISCANALYSo De discriminant funeties worden berekend met het programma DISCANALYS o Uit de patientengegevens worden
allereer§~
de kcradraat-kruisproductsommen matrices
Wp T en A berekend en vervolgens de variantie - covariantiematrices
van de
verschillende groepen o Tenslotte wordt de matrix van groepsgemiddelden berekend o Met de systeemprocedure " General eigenvalue problem den en eigenvectoren van W
~l
It
worden de eigenwaar-
A berekend o
Om het aantal eigenvectoren te hepalen wordt een totaal onderscheidend ver-
;>
95% geeisto Tenslotte wordt Wilks lambda berekend en met een F-toets wordt de kans berekend dat de gestelde nulhypothe waar is o
mogen
Het programma levert een ponsband met 1
0
De variantie = covariantiematrices in de testruimte van de verschillende groepen o
20 Het aantal symptomen p het aantal groepen p het aantal discriminant functies en
de aantallen patienten per groepo
30 De matrix van genormeerde significante eigenvectoren o 40 De matrix van groepsgemiddelden in de testruimte o Het flowdiagram van het programma DISCANALYS is gegeven in fig.6. De programmatekst wordt gegeven in bijlage C.
47
In dit flowdiagram zijn de volgende notaties gebruikt: k is het aantal groepen g m is het aantal variabelen
~
n is het totale aantal patienten N ng[i] is het aantal patienten van groep i nf is het aantal discriminant.fUncties w[p,q] is de matrix W ts[p,q]
is de matrix T
dtppq] is de matrix A x[p] is de symptoomvector ~ gg[ppi] is de matrix van groepsgemiddelden G SSd[ppq] is de variant ie- covariantiematrix Vi _1
Na het berekenen van de eigenwaarden en eigenvectoren van 'vi - A gebruiken we sSd[ppq] is de matrix van eigenvectoren ts[ppiiJ is de matrix van genormeerde discriminant functies D~
48
lees:
e
I
k (aantal groepen)
ts[p,q] ~ tsIp,q] + d[p,q]
m (aantal symptomen)
sSd[ppq]
= sSd[p,q]/(ng[iJ
schrijf en pons ssd[p,q] (spreidingsmatrix) schrijf gg(p,i] (groepsgemidde1den)
=0
=1
i
I i=i+1 I
0 ~
~
A
ja
lees: ng[i] (aantal pato)
ts[ppq] = ts[ppq] - somt[p]
(aantal symPo)
d[ppq]
= ts[ppq]
?
somt[q]/n
- w[ppq]
t
sx[p] = 0; d[ppq] = 0
procedure voor berekenen van eigenwaarden -1
nn = 1
en eigenvectoren van w od
~
sd[p] = eigenwaarden ssd[p,q]
lees x[p] (symptoomvector)
I
= eigenvectoren
trace
?
=
schrijf trace
t
d[ppq] = d[p,q] + x[p]
x[q] sSd[ppq] = d[ppq] ~ sx[p] ax[qJ/ng[i]
~
schrijf sd[p] schrijf 100
sd[pJ/trace schrijf ssd[p,q]
I nn~nn+11 nn )ng{i]
0
trace = trace + sd[p]
sx[p] = sx[p] + x[p]
.
ja gg(p,iJ
neen
i )k
lees titel van groep i
m
- 1)
t
n (totaal santa1 pato) V som[p] ~ wtp] = ts[p]
,
neen
+
B
bereken nf (aantal disc. functies)
~ ts[ppii]
=
W[P9P]
SSd[P,ii]
= Sx[PJ;ng[i]
somt[p] = somt[p] + sx[p] w(p,q] = w[p,q] + ssd[p,q] I
pons: m, k, nf en ng[iJ
I
49
pons en schrijf ts[pgii]
bereken F en kana p
figuur 6
0
Flowdiagram van het prograrmna DISCANALYS ( p 9 q =- 1
0
0
m,
i
= 1
0
0
k; i i = 1
o
o
nf )
50
5.4 0 2. Het programma DISC. DIAG. Het programma DISC DIAG. berekent de centrolden en spreidingsmatrices van de verschil1ende groepen in de discriminant ruimteo Hiervoor maakt. het proI
gramma gebruik van de ponsband die door het programma DISCANALYS wordt geleverd. Deze pmnsband kan niet onmidde11ijk worden gebruikt omdat deze
ge~
gevens moeten worden inge1ezen in de vo1gorde (2), (3)9 (4) en (1) ( zie hst. 50 40 10)0 De reden van d~e andere vo1gorde is het besparen van rekentijd en geheugenruimte voor beide programma'so Men moet deze ponsband dus doorknippenen de nieuwe vo1gorde aan elkaar plakken o Voor het diagnmstiseren van patienten moeten de patientgegevens staan op een ponsband volgens type 11 0 (bijlage A) Van iedere patient wordt dan berekend: De discriminant scores o 2. De chikwadrateno
1
0
30 De kansen om tot de verschil1ende groepen te behoreno Voor het berekenen van deze kansen wordt gebruik gemaakt van formule 62 uit hst o 5030 Het fiowdiagrSID. van het programma DISC DIAG o is gegeven in figo 70 De programmatekst staat in bij1age Eo De vo1gende notaties zijn gebruikt: k is het aantal groepen go m is het aantal variabelen m nf is het aantal discriminant functies gn[iiJ is het aanta1 patienten van groep ii njobs is het aantal groepen op de patientenband av is het aanta1 variabelen m ap is het totale aanta1 patienten van de patientenband n is het aanta1 patienten van de groep tS[P9f]
is de matrix van discriminant functies D
gg(ppiiJ is de matrix van groepsgemiddelden in de testruimten cent[iivfJ is de matrix van groepscentroiden in de discriminantrtlimte G d arp~q] is de var o - covariantiematrix in de testruimte Vi ed[fpg] is de
varo~covariantiematrix
1
dd(fpg,ii] bevat de matrices V- . d ,~ x[p] is de patientvector ~
in de discriminant ruimte V
.
d,~
51 disc[f] is de symptoomvector ~ in de discriminant ruimte dif[r] is de verschilvector x.
~
chisq[ii] bevat de chikwadraten
52
lees:
m (aantal symptomen) k (aantal groepen) nf(aantal disco functies)
lees:
gn[ii]p ts[ppf] en gg[ppiiJ
cent[Epf]
=
0
cent[iipf]
=
cent[iipf] + gg[ppiiJ
tS[fppJ
schrijf
lees x[p] (patientvector) lees diSc[r] = 0; chi[f]: 0 cc[ppfJ
= 0;
ed[fpgJ
=0
disc[f] : disc[r] + x[p]
cc[ppfJ = cc[ppfJ + ts[qpfJ
d[pgq]
ed[f 9 gJ = ed[f 9 gJ + cC[PofJ
ts[gppJ
ts[ppr]
dir[r] = disc[r] - cent[iipr] chi[r] = 0
112~-d~oor het berekenen van determinant en inverse van ed[fpgJ deterrn = determinant(ed[fpg]) ed[fpgJ : inverse(ed[fpgJ)
I
chiEr] = chiCr] + dir[gJ
dd[f 9 g pii]
chisq[ii]
=
0
chisq[ii]
=
chisq[ii] + dir[r]
chi[rJ
schrijr chisq[iiJ determ
p2 = 0
pI[ii]
= ratio[ii] exp( - chisq[ii]/2)
p2 = p2 + pI
J
53
schrijf pl[iiJ/ p2
neen
njobs
=
C
njobs - 1 neen
B
figuur 70 Flowdiagram van het programma DISC.DrAG. (P9Q
=1
0
m9 i i = 1
0
0
k; g9f
=
1
o
nf
0
)
54
505e De herkenning van longpatienten met de multipele discriminant analyse methodeno De gegevens van de 703 longpatienten zijn weer
op
de zelfde wijze gebruikt I
als bij de vorige methoden o Allereerts zijn met deze gegevens de discrimi~ nant functies bepaald o Met deze functies hebben we hierna de computer een computerdiagnose laten stellen van deze zelfde patienten om na te gaan in hoeverre de computer met deze methode in staat was om zijn basismateriaal te herkennel;lo Omdat enkele symptomen voor deze methode verkecrd gecodeerd warenphebben we deze symptomen uit het patientenmateriaal verwijderd met het programma ELVAR (bijlage Bo ) Deze symptomen waren: 1 Symptoom s2 9 het seizoen o De codering van sS was jan/feb
0
mrto/april
1
novo/deco
5
De overgang van febr o naar mrt komt niet overeen met de overgang van deco naar janoDeze overgangen moeten echter gelijk zijno 2 Symptoom s139
Dlo
De bepaling van sl' was bij veel patienten niet verricht o Om dit aan te geven is dan op de patientenband het cijfer 6 geponst o Bij het bepalen van de discriminant functies kunnen we hiermee rekening houden o Bij het transfor,j;eren van de symptoomvector van de testruimte naar de discriminant ruimte is dit echter niet mogelijk waardoor we foutieve uitkomsten krijgen o Met de resterende 13 symptomen kregen we de vo1gende resultaten: gediago pat o
herkende pat. aantal
%
86
0
0
bronchitis astmatica
273
175
64
bronchitis chronica
143
79
55
emfysema pulmonum
201
169
84
703
423
60,5
aanta1 astma bronchiale
totaal tabel 10
0
Resultaten van de discriminant analyse methode. (zonder s2 en s13).
55 De vo1gende tabe1 1aat de verwisselingen van de computer zien. diagnose arts. b
a a
°
f---~
°
e
0
°8
°
diagnose
b
72
115
23
computer
0
11
46
e
3
52
79 41
24 169
tabel 11 0 Ve~isselingen door de computer. (zonder 82 en sI3). Bij de codering van het symptoom s14 is eveneens gebruik gemaakt van het cijfer 60 Hiermee wordt dan aangegeven dat de patient bij de eerste FEV01 meting (voor toediening van het medicijn dYBpnoesan p zie hst 0 201) geen afwijking vertoonde ten opzichte van de standaard normaalwaarde e Om zo zuiver mogelijk materiaa1 te krijgen is dit symptoom eveneens verwijderdo De resu1taten van de discriminant analyse methode met de resterende 12 symptomen zijn in de volgende tabe11en gegeven o gediago pato santa1 86
astma bronchiale
herkende pato aantal
%
° 168
0 61 9 5
bronchitis astmatica
273
bronchitis chronica
143 201
168
83 9 5
703
422
60
emfysema pu1monum totaal
86
60
tabel 12. Resu1taten van de disco methode (zonder s2 9 s13 en 814)0 De verwisselingen van de computer staan in tabe1 130 diagnose arts a a
b
diagnose
b
° 72
computer
0
11
e
3
° 168
° 18
52 53
86
tabe1 13. Verwi8se1ingen door de computer (zonder s2, a13 en s14).
c
39
e 0 8 25 168
56
Bij deze resultaten va1t onmidde11ijk op dat voor geen enkele patient door de computer de diagnose a wordt gegeven. Dit bleek een gevolg te zijn van: ~o
ziekte a heeft een kleine apriori-kans.
l.
in de discriminant ruimte liggen de groepscentroiden van ziekten a en b I I
dicht bij elkaar.
1.
in de discriminant ruimte is de spreiding van ziekte b groter dan de spreiding van ziekte a o
De volgende figuur geeft de 2- dimensionale discriminant ruimte met de groepscentroIden indien we 12 symptomen gebruiken o
disco f o 2 10
-120
-80
-100
=60
-40
~b ~
-20
disco f o 1 -10
a
-20 =30
)!o figo 8 Discriminant ruimte met groepscentroideno (12 sympt omen) 0 De spreidingsmatrices in de discriminant ruimte zijn als voIgt: (zonder s2 9 s13 en s14) ziekte a
disc o fal
disc of.2
disc of ol
675 9 12
135 9 95
disC of.2
135 9 95
1394 9 98
dieco fa 1
1156 9 36
discof02
-103 9 35
-1 0 3 9 35 1262 9 57
disc of ol
480 9 69
-451,73
disCofo2
-451 9 73
1100 9 34
disc.f.1
314,04
dieo.f.2
-335,75
-335,75 843,20
ziekte bo
ziekte Co
ziekte e. tabel 14.
57
Indien we de kansverdeling van groep a en b beschouwen in een richting (bijvQ de richting van discriminant functie 1), dan krijgen we de volgende figuur: 'I
p(x)
I
t
Doordat de apriori-kans van ziekte b ongeveer 3x zo groot is, is ook de kansverdeling 3 x zo groot. Uit de figuur blijkt dat aIle punten die in de buurt van de centroIden van ziekte a en b liggen, een veel grot ere kane hebben om tot b te behoren dan tot a. Zelfs het oorspronkelijke gemiddelde van ziekte a heeft een grotere kans om tot ziekte b te behoren. We kunnen dit nagaan door de groepsgemiddelden als nieuwe patienten door de computer te laten diagnostisereno We krijgen dan de volgende tabel:
kans op ziekte: a
b
c
groepsgemiddelde
a
0,31
0,68
0,01
groepsgemiddelde
b
0,21
0,71
0,07
groepsgemiddelde
c
0,04
0,24
0,48
groepsgemiddelde
e
°
0,10
0,13
tabel 150
e
°
0,01 1
I
0,24 0,76
Computerdiagnose van de groepsgemiddeldeno ( 12 symptomen, zonder 82, 813 en s14)0
Uit bovenstaande tabel blijkt dat het groepsgemiddelde van ziekte a ruim 2 x zovee1 kana heeft om tot groep b te behoren dan tot groep a. Evenals bij de Bayes- Warner methode blijkt nu bij de discriminant analyse methode dat het voor de computer zeer moeilijk is om met deze
f~egcvens onder~
scheid te maken tussen de ziekten a en b. De patienten van beide ziekten vertonen kennelijk veel overeenkomende symptomen. Om deze redenen zijn we nagegaan hoe de herkenning door de computer is als we de ziekten a en b als een
58
ziekte a en b beschouwen. De volgende tabe1 geeft hiervan de resultaten en de verwisselingen door de computer. diagnose arts a + b computer diagnose.
tabe1 16.
c
e
a + b
251
22
c
55 53
82
9 26
39
166
e
Verwisse1ingen door de computer ( 12 symptomen, zonder s2, s13 en 814).
Hat totale aantal herkende patienten is nu gestegen tot 4990 Deze toename was te verwachten omdat de kans op een verkeerde diagnose kleiner is gewordeno De verwisselingen tussen de ziektes a en b zijn nu niet meer mogelijk o Als we deze tabe1 vergelijken met tabel 13 dan blijkt dat van de a en b patienten een kleiner aantal een verkeerde diagnose c of e heeft gekregen. De herkenning van de patienten van ziekte c of e neemt weer iets af o
Tenslotte willen we de coefficienten beschouwen van de twee discriminant functies die berekend zijn zonder de symptomen s2? s13 en s140 De coefficienten zijn genormeerd volgens (53)0 Grote coefficienten van een discriminant functies geven aan dat de betreffende symptomen zorgen vaar een sterke scheiding langs de as van deze discriminant functie.
59
De coefficienten zijn:
disc. fie I
aymptoom
disc. fie II ;'1
81 a3 s4 a5 s6
-11,499 2,909
-0,254 -0,516
-1,663
-5,431
7,164 -7,261
-5,497
0,889 21,202
s9 s10
-8,955 0,972 -0,046
all
1 9 343
s12
~19528
3,178 1,608
s15
~99110
-6 9 678
87 s8
tabel 170
-12,493 0,686
,
2,443 -4,751
Coefficienten van de discriminant functies ( 12 syrnptomen, zonder 82, s13 en a14)0
Uit deze tabe1 b1ijkt dat de beste symptomen zijn: s1 (leeftijd), a5 (~e)' s6 (R
c02
)' s8 ( FEVl) 9 en s15 (geslacht)o
i"' "~-I.
60
6~
Slotbeschouwing. De volgende tabel geeft nog eens de resultaten van de verschillende methoalen: gediag.
astma bronchiale
herkende patienten
(%).
multo discro
patienten
Bayes-W.
lin. regr.
(aantal)
methode
analyse
analyse
15 symp.
12 syrup.
12 sympo
0
0
71
61,5 60
86
bronchitis astmatica
273
53,5 45 9 8
bronchitis chronica
143 201
50,3 80,6
52,5 80,5
83,5
703
57~5
61 9 5
60
emfysema pulmonum totaal
-. I
tabel 18. Herkenningaresultaten van de verschillende methodeno De lineaire regressie analyse geeft slechte resultaten indien we 15 symptomen gebruikeno De methode is kennelijk gevoelig voor minder goede symptomen 0 Bij de andere methoden is dit niet zo sterk het geva10 Indien we de minder goede symptomen verwijderen dan geven de verschi11ende methoden in totaliteit vrijwel identieke resultaten. De multipele discriminant analyse methode blijkt zeer gevoelig te zijn voor de apriori-kans van de verschillende ziektes
Q
Hierdoor wordt ziekte a helemaal
niet herkendo Het is zinvol om ons af te vragen of het mogelijk is om met dit materiaal tot nog beters herkenningsresultaten te komeno Zovel bij de Bayes-Warner methode als bij de discriminant analyse bleek de computer een zeer sterke voorkeur te hebben voor een diagnose die volledig in tegenspraak is met de door de arts gestelde diagnose. Bij de discriminant analyse methode werden ongeveer 280 patienten door de computer foutief gediagnostiseerd. Van deze 280 patienten bleken er door de Bayes-Warner methode eveneens 152 patienten op de zelfde foutieve wijze gediagnostiseerd te worden. Uit de computerresultaten
blijkt dat er patienten zijn die een symptomen=
beeld vertonen dat sterk afwijkt van de andere patienten met dezelfde diagnose. We moeten hierbij echter rekening houden met het feit dat de arts bij
61
het stellen van zijn diagnose over meer informatie beschikt dan de computer. De metingen van de longfunctioloog bevatten dan kennelijk niet voldoende informatie om het totale ziektebee1d van de patient te beschrijven. De computerdiagnose moeten we dan zien ala een advies, gebaseerd op de longfunctiemetingen. Om een verantwoorde einddiagnose te stellen met de computer is het noodzakelijk om de symptomen uit te breiden met de gegevens uit de anamnese van de patient. Een verder statistische analyse van dit materiaal kan nog tot interessante en nuttige resultaten leiden. Het is dan ook verheugend dat Prof. Dr. Doornbos (afdeling Wiskunde) bereid is om in zijn groep dit werk voort te zetten.
62
70
Literatuur. 1.
Durinok, J.R. Benadering van de medische diagnose door een computerprogramma gebaseerd op Bayes kansformules. Afstudeerverslag. Technische Hogeschool Eindhoven.
2.
Durinck, J.R. De digitale computer als hulpmiddel bij het stellen van diagnose. Stageverslag. Technisohe Hogeschool Eindhoven.
3.
Meerten, R.J. van Concentration curves of expired gases. Proefschrift. Katho1ieke Universiteit te Nijmegen. Nijmegen~
40
1966
0
Bailey, N.T.I. The mathematical approach to biology and medicine. Londen p 1967.
5&
Leeuw~
A.C.J o de
Beschouwingen over methoden der patroonherkenningo Afstudeerverslago Technische Hogeschool Eindhoven. Eindhoven p 196B. 6.
Anderson p T.W. An introduction to multivariate statistical analysis. New York p 195B o
70
R.A. The use of multiple measurments in taxonomic problems. Fisher~
Annals of Eugenics. 7. (1936) 8.
pg. 179 - lBB.
Welch, B.L. Note on discriminant functions. Biometrika, 31. (1939) pg. 21B - 220.
9.
Bauer, R.K. Diskriminanzana1yse. A11g. Statist. Arch. ;8. (1954) pg. 205 - 216. .: .
10.
Rao, C.R. Advanced Statistical Methods in Biometric Research. New York, 1952.
11.
Cooley, W.W. en Lohnes, R.R. Multivariate Procedures for the Behavioral Sciences. New York, 1962.
12.
Kirchhof, J.W. Een literatuuronderzoek naar toepassingen van computers in de medische diagnostiek. Stageverslag. Technische Hogeschool Eindhoven. Eindhoven 9 19670
64 Bijlage A
De patientenbanden.
Van de ponsbanden met de patientengegevens zijn twee typen aanwezig, type I en ~ype
II. Met een onderindex wordt aangegeven hoeveel patienten opqe band staan I;
met een bovenindex wordt het aantal symptomen aangegeven. 12 . Bijv. 11 i ! een ponsband, ingedeeld volgens type II en met de gegevens
103
van 703 patienten. Per patient zijn 12 symptomen gegeven. De volgorde van de symptomen is hetze1fde als de volgorde die is gegeven in hst 2.1. Indien enkele symptomen zijn wegge1aten dan is op de band geschre, ven welke symptomen'dat zijn. Voor ieder symptoom is een getal geponst dat de wnarde van het betreffende symptoom aangeeft. Het cijfer 6 geeft aan dat de meting van het symptoom niet is verricht. Het geslacht is per patient als laatste symptoom gegeven.
Type I
De ponsband is als voIgt opgebouwd:
l .. men getal dat het totale aanta1 patienten aangeefto
l.
De gegevens per patientg a. Een letter voor de oorspronke1ijke diagnose volgens de volgende tabel: ziekte _.
letter
symwaarde
astma bronohiale
a
10
bronohitis astmatioa
b
11
bronchitis chronica emfysema pulmonum
c e
12
14
tabel 19
b. Een geta1 dat het patientkodenummer aangeeft. c. De symptomen. Voor het geslacht zijn de ponsingen m (symwaarde 22) voor mannelijk en v (symwaarde 31) voor vrouwelijk gebruikt. Type II
Deze ponaband is ala voIgt opgebouwd:
1.
Een getal dat het aanta1 ziekten aangeeft.
~
Een geta1 dat het aantal symptomen aangeeft.
i.
Een getal dat het totale aantal patienten aangeeft.
65
!.
Per ziekte de gegevens van de patienten als voIgt: a.
'naam van de ziekte' (de aphostrofe heeft symwaarde 120)
b.
Een getal dat het aantal patienten van deze ziekte aangeeft.
c.
Een getal dat het aantal symptomen aangeeft.
do
De gegevens per patient als voIgt: 1. Een getal dat het patientkodenummer aangeeft.
2. De symptomen. Voor het geslacht zijn de cijfers 0 en 1 gebruikt. Cijfer 0 wil zeggen vrouwelijk en cijfer 1 mannelijk.
66
Bijlage B.
Inventarisatie van de programma's.
Omdat verschillende programma's aanwezig zijn die voor toekomstig gebruik geschikt zijn, willen we daarvan enkele gegevens vermelden. Hierbij
z~jn
vooral
van belang de gegevens over de te gebruiken ponsbanden. De verschillende programma's zijn:
1.
BAYES- MATRIX. Dit programma berekent en ponst de Berek en Corberek matrices voor het programma BAYES - DIAG o (zie hst. 3, lit.l). Het programma is aIleen geschikt voor een patientenband van type I met
15 symptomen. Input: Patientenband van type I met 15 symptomen. Output op p6nsband: a. De Berek- matrices. bo De Corberek- matrices. 2
0
BAYES - DIAG. Dit programma berekent de computerdiagnose volgens de Bayes- Warner methode (hst. 39 litol) Het programma is aIleen geschikt voor een patientenband van type I met
15 symptomen" Input: ao Berek- of Corberek- matrices o bo Patientenband volgens type 1 met 15 symptomen o
30
LINBEREK
0
Dit programma berekent de lineaire regressieconstanteno (hst.4) Input: a. Ponsband met: 1. Het aantal symptomen van de patientenband. 2. a.Indien al deze symptomen moeten worden gebruikt dan de nummers van daze symptomen. Daarna het getal O. b.Indien enkele symptomen niet moeten worden gebruikt dan de nummara van deze symptomen. Daarna het getal -1. b. Patientenband volgens type I.
67
Output op
pe~eband:
De ponsbandLINCON. Op deze ponsband staan de constanten voor het programma LINDIAG.
.4..
'I
LINDlAG.
Dit programma bepaalt de computerdiagnose volgens de lineaire regressiemethode (hst.4). Input: a.
De ponsband LINCON.
b.
Patientenband vol gens type I. Op deze band moeten evenveel symptomen staan als op de patientenband die is gebruikt voor het berekenen van de lineaire constanten (ponsband LINCON) met het programma LINBEHEK.
2.
DISCANALYS. Dit programma berekent de discriminant functies (hst.5). Het programma kan ook gebruikt worden voor niet gehele getallen o Input & Patientenband van type 11 0 Output op ponsband: a o De
variantie~covariantie
matrices van de verschillende groepen in
de testruimteo bo
Het aantal symptomen 9 het aantal groepen 9 het aantal discriminant functies en de aantallen patienten per groep.
£0
c.
De matrix van genormeerde significante eigenvectoreno
do
De matrix van groepsgemiddelden in de testruimte.
DISC. DIAG. Dit programma berekent de groepscentroiden en spreidingsmatrices in de discriminant ruimte. Verder berekent het programma de computerdiagnose volgens de discriminant analyse methode (hst.5). Het programma kan gebruikt worden voor niet gehele getallen. Input: ao
De ponsband DISCCON. p bestaande uit: 1. rlet aantal symptomen, het aantal groepen, het aantal discriminant functies en de aantallen patienten per groep. 2. De matrix van genormeerde significante eigenvectoren.
3. De matrix van groepsgemiddelden in de testruimte.
68
4.
De variant ie- covariantiematrices van de verschillende groepen in de testruimte.
Deze ponsband wordt door het programma DISCANALYS in de volgorde -I'
(4), (1), (2)jen (3) geleverd. Deze band moet dus worden doorgeknipt en in de nieuwe vo1gorde aan elkaar geplakt worden. b.
Patientenband van type II. Op deze band moeten evenvee1 symptomen staan als op de patientenband die is gebruikt voor het berekenen van de discriminant functies (ponsband DISCON) met het programma DISCANALYS.
Dit programma ponst een patientenband volgens type II indien een patientenband van type I wordt ingelezen. Input: Patientenband van type I. Output op ponsband: Patientenband van type 11 ~o
0
ELVAR.
Met dit progranuna wordt een copie gemaakt van de ponsband van type II waarbij symptomen kunnen worden gee1imineerd. Input.; a.
Ponsband met: 1. Het aantal symptomen van de patientenband. 2. a. De nummers van de symptomen die gecopieerd moeten worden. Daarna het getal O.
6f b. De nummers van de symptomen die weggelaten moeten worden. Daarna het getal -I. b. Patientenband van type II. Output op poneband: De gewenste patientenband van type II.
69
Bijlage C.
Tekst van de programma's.
De volgende bladzijden bevatten de algoltekst van de verschillende gebruikte programma's.
-,
I-
Lale;ol 06243715 c de wit, 1 begin comment programma lin. reg. c de wit/dr.ir. r.j. van meerten berekening van regressieconstanten
t~bGv.
diagnosestelling
volgens lineaire regressiemethoden. input: oorspronkelijk aantal symptomen,
indien alle symptomen moeten worden gebruikt dan: de nummers van d.eze symptomen, 0
indien enkele symp. moeten worden weggelaten dan: mum:ners van deze symptomen, -1; integer m; m := READ; -J
o
begin integsr b, a, av, ap; boolean array boyar [ 1 : m] ; ~
b := 1 step 1 until m ~ bovar[b] := false;
!2! a := if a < 0
READ ~ a
>
0
i!£
bovar[a] := ~j
~!£r b := 1 step 1 ~
m ££ bovar[b] := l bovar[b];
RUNOUT; RUNOUT; NLCRj PUNLCRj av := OJ
!2!
b : = 1 step 1 ~ m ~
1f bovadb]
~ av : = av + 1 j
PRINTl'EXT( 1:totaal aantal gebruikte symptomerJ) j AffiFIXT( 3, 0, av) j ABSFIXP(3, 0, av + 1) j CARRIAGE ( 2); PRINl-rEXT( 1:symptomerJ); PUNLCR; AffiFIXP( 2, 0, 0) j
!2!:
b := 1 step 1 ~ m
9£ .ll
bovar[b] ~
begin AffiFIXT(4, 0, b)j PIGFIXP(4, 0, b)j ~j CARRIAGE(3)j a := 0;
'\.,
!2!: b
:= 1 step 1 ~ m .12
begin CARRIAGE (2 ) j PRINTI'EXT( 4:s.::i> ); ABSFIXT( 2 ~ 0 ~ b);
if. boYar [b]
~
begin PRINl'TEXT({wordt 55:}); a := a + 1; ABSFIXT(2, O~ a); ~
-
else ffiINrl'EXT( ·hs vervallen;f.);
~;
ap : = READ; CARRIAGE ( 4 ); PRINPrEn'( 1:aantal P1tientercl-); ABSFIXl'( 4, 0, ap); ABSFIXP( n~
begin integer z, ~
ad,
pkn~
6, 0, ap);
gesl, t, r, p,q, nz, noemer;
zgem, XX;
integer
array
ziekte[1:4], somzes[l:av], zesa[1:4, 1:av];
~ array pat[1:ap, O:av], x, sx, sxz, sgem, sigmazs, piv[1:av],
d, sigmass, sigmainv[1:av, l:av], con[O:av]; boolean ali
library CROlJI'DECrnPOS ITION, CROUTINVERSE, INPROD; procedure tabelkop; begin NLCR; PRINITEXT( 1: symp 1-);
f2!:
b : = 1 step 1
~
av
~
begin SPACE( 1); PRINTrEXT(1:ss:j.); ABSFIXT(2, 0, b); ~ ~
tabelkop;
procedure leeg; begin
!2r
p : = 1 step 1 until av
~
begin somzes[p] := 0; sx[p] := sxz[p] := p1v[p] := 0; ~ z
:= 1 step 1
~
4 2£ zesa[z, p] := 0;
f£r, q := 1 step 1 until av end
=-=
:" ~~ leeg;
2:£
d[p, q] := 0;
-J
t-'
for z -f2r n
:= 1 step 1 until 4 do ziekte(z] := 0; ~--
:= 1 step 1 until ap
~
begin volg pons:
od: = RESYM;
!!
if od /\ od S
= 93 v od = 11 9
~
goto volg pons;
(od ~ 10 14) ~ goto vervolg ~ begin NLCR; PRINTI'EXT( 1:.rout in getallenbend od=:i-); PRSYM( ad); goto volg pons end·
vervolg:
-'
1!,od
= 14
l! 11.
= 12 ~ z :=
od
od = 11
-!.£!:
if od
= 10
then z := 4;
~
~
3;
z := 2;
--
then z := 1; paten,
b := 1 step 1 until m - 1
oJ .9E.
z; ziekte[z] := ziekte[z] + 1; pkn := READ; a := 0; -.l I\)
if l boyar [b] then READ else
-
-=--
begin a := a + 1; paten, a] := READ; end·
~,
-
--
if bovar[m] then
opnieuw:
begin gesl := RESYM;
-
if gesl = 0 V gesl = 31 then paten, av] := 0 else -begin ll. gesl = 1 V gesl = 22 ~ pat en, av J : = 1 ~ goto ~~
~
RESYM; alle patienten zijn ingelezen;
!££ t : = 1 ste'K 1
~
3 §£, !2r. r := t + 1 step 1 ~ 4 do begin leeg;
opnieuw ~;
!s2£
n : = 1 ste12 1
~
ap
-=
begin z := paten, oJ; if z begin
!2r.
P :
~
=t
V
z
=r
-9£
then
1 step 1 until av
begin xx := paten, pJ;
.!.!
xx = 6 ~
begin zesa[z, pJ := zesa[z, p] + 1; somzes[p] := samzes[p] + 1; ~
if z
~;
!2!:
~
x[p] := XX;
sx[p] := sx[p] +
-
x[p] := 0
=r
x[p];
-then sxz[p]
p : = 1 step 1 until av
:= sxz[p] + x[p]
S£ !£!:
q : = 1 step 1 until av
£2
d[p, q] := d[p, qJ + x[p] x x[q];
~ end patienten;
-
-J VI
-
NEW PAGE; al : = true; PRINTTEXT( 1J:>erekening van constanten voor ziektenJ.); ABSFIXT(2, 0, t); ABSFIXT(4,p 0, r); CARRIAGE(4);
PRINrTEXT({het gemiddelde van z =:}); zgem := ziekte[rJ/(ziekte[t] + ziekte[r]); ABSFIXT( 3, 3, zgem); CARRIAGE( 5);
nz := ziekte[t] + ziekte[r];
!2r.
b : = 1 stelZ 1 until av
~
begin NLCR; PRINTrEXT( 1:het gemiddelde van ss:}); ABSFIXT( 2, 0, b); noemer := nz - somzes[b]; SPACE(5); sgem[bJ := sx[bJ/noemer; ABSFIXT(2, 3, sgem[b)); sigmazs[b] := (sxz[b] - (ziekte[rJ - zesa[r, bJ) x sx[bJ/noemer)/(noemer - 1); end·
-'
CARRIAGE ( 5);
!2!. b
: = 1 step 1 until av
~
begin NLCR; PRINTI'EXT({de covariantie van z en SS:l-); ABSFIXT(2, 0, b); SPACE(5); FIXT(2,
3, sigmazs[b]);
-end;
NEW PAGE; PRIN.rl'EXT( {:de covariantie van de symptODleni-);
!2!:
p : = 1 step 1 until av
9£
for q : = 1 step 1 until av
begin noemer := nz - somzes[p];
II
99.
p ~ q ~ noemer := noemer - somzes[q];
sigmass[p, q] := d(p, q]/noemer - sx[p] X sx(q]/«nz - somzes[p]) X (nz - somzes[q]»; ~;
NLCR; tabelkop;
!2t
p : = 1 step 1 until av
22
begin CARRIAGE(2); PRINTTEXT(.j: SS:l-); AreFIXT(2, 0, p);
!2t q
:= 1 step 1 until av
9£
FIXT( 1, 3, sigmass [p, q])
-
-J ~
end;
CROUTDECOMFGSITION( av, s igmass, sigmainv, piv, true. 2
.t. (- 39),
CROUTINVERSE(av, sigmainv, piv, sigmainv); al. : = false;
NEW PAGE; PRINrI'EXT( 1:de geinverteerde covariantie matri4);
NLCR; tabelkop;
!2!.
p:= 1 step 1 until av §£
begin CARRIAGE(2); PRINI'TEXT(.j: sS:l-); ABSFIXT(2, 0, p);
!2r. q end"
-'
:= 1 step 1 until av
2£
FIXT( 1, 3, sigma.inv[p, q])
alarm);
con[O] := zgem;
!£!:
p : = 1 step 1 tmtil av
begin con[p] := 0;
f2!:.
~
q := 1 step 1 ~ av
2£
con[p] := con(p] + sigmazs[q] X sigmainv[p, con[a] := con[a] - con[p] X sgem[p]
q]j
end berekening constanten; NEW PAGE j RUNOUT;
!2!:.
p :
=a
step 1 tmtil av ~
begin NLCRj PUNl£Rj PRINITEXT(1:c~)j ABSFIXT(2, FIXT(2, end" '
-
a,
p)j SPACE(5);
5, con[p])j FIXP(2, 5, con[p]); PUSPACE(2)j
-
NLCRj if al then PRINTTEXT( 1:ma.trix sigmass is vrijwel singulier:})
alarm: ~
herhaalde berekeningen;
~
inlezen;
-.J VI
CARRIAGE ( 6); PUNLCR; PRIN'I"I'EXT( .j:te vervolgen met programma LINDIAG:j»;
-
end
-end progend
,~
Lalgol 06243715 c de wit begin comment programna lin. diag co de wit, programma voor het diagnostiseren van longpatienten volgens de lineaire regressie methode; integer i, b, z, totc, c, acp, ap, n, od, pkn, gesl, p, q; ~
array constanten[1:6, 0:15], diag[1:4, 1:4];
inteeer arF!Y s[1:15], ziekte, kode[1:4], dtal, ctal[2:3, 1:4]; boolean arra:>: bocon [0: 15 ] ; ~rocedure
begin
!2!:
inlezen( arr ); array arr; := 1 step 1 ~
i
6
£2
begin CARRIAGE ( 2); PRINTl'EXT( ~iekte~) ; SPACE(2); aanduiding( i ) ; CARRIAGE(2) ; PRIN'PI'EXT(
-t:
cO
c1
c2
c3
c4
c5
cl0
cll
c12
c13
c14
c 15:1- );
c6
c7
c8
CARRIAGE(2) ;
!2!: b
:= 0 stek"l 1 ~ 152£
begin
1! bocon[b] FlXT(l,
~
arr[i, b] := READ
~
arr[i, b] := OJ
5, arr[i, b])j
end ~ ~
inlezen;
procedure tabelkop; begin NLCRj FRINTTEXT(~od
pkn
a-b
NLCRj
Ejnd, tabelkop;
51
82 a~
53
54 a~
85
86 b~
s7
s3 b~
59
810 811 812 813 814 815 c-e
diagt.) ;
c9
--J 0'\
procedure aanduiding( a); ~ a; integer a; begin
11 a = 1 if. a = 2 11 a = 3
~ PRINTTEXT( ~ a-b:f.);
~ PRINI'TEXT( ~ a-c:f.); ~ PRINTI'EXT( ~ a~:f.);
-
if a = 4 then PRINTTEXT( ~ b-c:f.);
~
-11
a
1!
a = 6 ~ PRINTTElCr( ~ e-e:});
=5
~ PRINTTEXT( ~ b-e~);
aanduiding;
procedure longziekte(z); ~ z; integer z; begin NLCRj
PRINTrEXT( 1:a,stma. bronchiale :f. ) ; -ifif zz == 1 -then then PRINTTEXT({hronchitis astmatica:f.)j - z = 3 -then 1:bronchitis chronica :f.); -if z = 4 -then ffiINTTEXT( PRINTTEXT({emfysema pulmonum :}); longziektej 2
if
~
-J -J
procedure resultaat(arr); arrayarr; begin
f2!. z
:= 1 ste12 1 ~ 4 ~
begin NLCRj longziekte(z);
!2!:
i
:=
3, 2
22
begin ?RINTTEX?( ~ PRINI"I'EXT(~
end ~
resultaatj
-
score:f. ); ABSFIXT( 1, 0, i) j AffiFIXT( 4, 0, arr[i, z]) end;
totaal:f.)j ABSFIXT(4, 0, arr[2, z] + arr[3, z])
procedure linberek(p, Cl, r);
~ P,
Cl, r; integer P, Cl, r;
begin diag[p, q] := constanten[r, oJ; b : = 1 step 1 ~ 15 do diag[q, p] := diag[p, Cl] := diag[p, q] + constanten[r, b] X s[bJ;
f£!:
SPACE(l); FIXT(l, 4, diag[p, q]); i f diag[p, q] > 0.5 then ziekte[q] := ziekte[q] + 1 else if diag[p, Cl] < 0.5 then ziekte[p] := ziekte[p] + 1;
~
_
--...c>
-
-
linberek;
_
procedure diagnose; begin integer i, x, y, z, q; boolean drie;
SPACE( 3);
!2.!:
x := 1 step 1 ~ 4 ~
begin
.!!
ziekte [x]
=3
-..J 0:>
~
begin q := x; drie
:=~;
i := 3; goto ddd
~;
~;
!2!:
x := 1 step 1 until 3
begin
if z iekte [x] begin
f.2!:
=
2
~
~
Y := x + 1 step 1 ~ 4 do
begin
g
ziekte [y J
begin
f2!:
=
2
~
z : = Y + 1 step 1 ~ 4
begin
g ziekte[z] = 2
-if.
~
22
goto einde
~;
--
if diag[x, y] > 0.75 then Cl := yelse diag[x, y] < 0.25
~
q := x
~
begin ffiSYM( kode [x] ); PHSYM( kode [y] ); goto einde
~;
drie
:=~;
i := 2; goto ddd
-end
~ ~ ~;
-
ddd:
i f kode[q]
~
= ad
-
then
PRSYM( od); dtal [1, q] := dtal [1, q]
if.
drie ~ PRINTl'EXT( {
d.d.d.J.)
y
1;
~ PRINrl'EXT( {
d~);
~~ begin PRSYM(kode[q]); ctal[i, q] := ctal[i, q] + 1;
-if drie -then PRINTrEXT( 1:
-end;
einde: ~
ccc~) else PRINl'TEXT( 1: ~
-:J '\0
diagnose;
!2!: z := !2!: i := !2r. b :=
1 step 1 ~ 4
2, 3
22
£e
dtal[i, z] := etal[i, z] := 0;
0 step 1 ~ 15 ~ boeon[b] :=~;
PRINTTEXT({diagnose longaandoenin~n met lineaire regressiemethode~); tote : = READ; CARRIAGE (3 ); PRINTTEXT( 1:berekening met : ~);
!2!:
cc~);
b := 1 step 1
~
tote
££
begin c := READ; SPACE(2); PRINTTEXT(1:c~); ABSFIXT(2, 0, c); bocon[e] :=~;
end·
-' CARRIAGE ( 2); aep : = READ;
PRINTI'EXT({aantal ~tienten voor berekening
vC::l.!l
cieze canstanten =i-); ABSFD."1'(4, 0, acp);
inlezen(constanten); NEW PAGE; ap : = READ; i-'FIN'I'TEA"l'( 1:aantal pa tienten:;. ); ABSFIXT( 4, 0, ap);
kode[l] := 10; kcde[2] := 11; kode[3] := 12; kode[4] := 14; tabelkop;
f2!:
n := 1 step 1
~
ap
~
begin volg pons:
ad: = RESYM;
l! od = 93 V od = 119 ~ ~ valg pons; !!. (od ~ 10 A od S 14) V od = 24 ~ ~
vervolg ~
begin NLCR; PRINTl'EXT( 1::fout in ge"t.all.enband od =:}); PRSYM( ad); ~ volg pons
end.' vervolg:
11'.
Q)
LINE NUMBER = 60 ~ begin NEW PAGE; tabelkop; ~ ~ NLCR;
SPACE( 1); PRSYM(od); pkn := READ; ABSFIXT(5, o~ pkn);
!2.!: opnieuw:
b : = 1 step 1 until 14
begin s[b] := READ; ~
1£
(0
£2
:s s[b]
1\
s[b]
S
6) ~ APSFIXT(2, 0, s[b])
gata apnieuw
~;
sexe:
gesl : = RESYl-'l;
II
= 0 V gesl = 31 ~ s [15] i! gesl = 1 \' gesl = 22 ~
gesl
begin
:= 0 ~
s [15] := 1 ~ gata sexe ~;
ABSFIXT(2, 0, s[15]); SPACE(2);
-
-
far z := 1 steE 1 until 4 da ziekte[zJ := 0;
o
i
:= 0;
!£!:
p : = 1 step 1
!2!: q
~
3
~
:= p + 1 step 1 until 4
90S
begin i := 1 + 1; linberek(p, q, i); ~; diagnose; ~
alle patlenten zijn verwerkt;
NEW PAGE; PRINTl'EXT( {:aantal. overeenstemmende diagnoses~); resultaat( dtal. ); CARRIAGE( 5 ); PRINTl'EXT( ~tal. niet overeenstemmende diagnoses~)j resultaat( ctal. );
-
end progend 0>
......
Lalgol 0d2 u3715 discanalys,l begin comment programma discanalys c. van de wijgaart, procedures c. de wit , programma gewijzigd voor diagnose onderzoek van longpatienten input: aantal groepen, aantal variabelen, totaal aantal Pltienten, per groep : ~
i
titel ' , aantal variabelen, aantal patienten van de groep;
macheps, noemer;
procedure in outmatrix(A,n,m,code,half,reedsgelezen,u); value n,m,half,reedsgelezen;integer n,m,code;Boolean half,reedsgelezen;array A;string U; begin integer d,k,i,j,p,q; procedure output(n,m,x);integer n,m;~ x; begin
1£ code=2 11. code=3
V code=5 ~ begin
11 x>o
V code=5 ~ begin
if.
~ ABSFIXT{n,m,x) ~ FIXT(n,m,x) ~;
x>O ~ ABSFIXP(n,m,x) ~ FIXP(n,m,x) ~
~;
procedure print(a); string a; begin
11. 11.
code=2 V code=5 ~ ?RINTl'EXT( a) ; code=3 V code=5 ~ LVI'EXT(a)
end·
-'
procedure regel; begin
!!.
code=l ~ begin
d: =(nr-1 )i.1 0+1 ;regel;
11
1£ 1£
code=2 V code=5
~
NI£R;
11
code=3 V code=5
k:=l step 1 until d
PUNLCR
~;
l reedsgelezen ~ begin n:=read;m:=read;half:=(read=l) ~!m£; code=2 V code=5 ~ S?A.CE( 3) ;print( u) ;re~l;
output(4,O,n); output(4,O,m);output(4,o,g half ~ 1 ~ O);regel;
!.2.!:
~
~
begin regel;regel;ll code=2
!£r, i:=p step 1 until
V
code=5 ~ SPACE( 10); p:=1(}
(if.
k~d ~ q ~ m)
2£
0>
I\:)
begin if. code=1 ~ j :=read ~ output( 10,0,i) ~; regel;regel; ~ i:=(if. half ~ P ~ 1) step 1 until n
begin
if. code=l ~ II half ~ begin 1! j:>q ~
~~ ~ begin
2£
j:=read ~ output(6,0,i);i!. code=2 V code=5 ~ SPACE(2); begin
!2!:.
j: =p steE 1 until i
~ goto nexti ~
II
~
code=l ~ A[i,j]:=A[j,1]:=read
output(5)4>A[i,j])
!2!:
2£ II code=l
j: =p step 1 until m
begin.ll j>q ~ ~ next1 ~
~ A[i,j]:=read
-else output(5,4,A[i,j])
~~;
nexti: regel;1f. code=2 V code=5 ~ begin
1£ i!
(i.:) )x5=i ~ NLCR; LlNENlMBER>54 ~ NEWPAGE
end end end end; --
procedure ftest( f,di'l ,di'2,prob) j value f,di'1,df2j integer df1 ,di'2; ~ f ,probj begin inteser dfnj
if.
f
:s 0
~
'v'di'1
x,alphaJbeta,enum,denom,px,zJffj
:s 0
V di'2
~
0
~
~rob:=1j
goto Bj
all)ha:= 2/(9Xdi'1)j beta:=2/(~di'2)j di'n:=di'2j f1':=fj ~
1'<1 ~ begin X:=alllhaj alpha:=betaj beta := Xj f1':=l/1'; di'n:=df1 j prob:=~~;
enum:=( 14leta)x1'f,~( 1/3)-1+alphaj denom:=sqrt(beta Xf1'~(2/3)+alpha)j z:=abs(enum/denom);
(Xl Vol
if.
cifn ~ 3 ~ z: =zX( 1+.0& ( z~u )/df~3 ) ;
pX:=(1+ZX(.196854+zx(0115194+zx(o000344+zx.019527))))~;
prob :=( l-prob )-{ ( o5-prob )/px ) ;
B:
end"
--'
library INPROD, TRIDIAGONALIZATION,p EIGENVALUE,p EIGENVECTOR, BACKTRANSFORMATION, CHmESKI DECOMPOSITION, GENERAL EIGENVALUE PROBIEM;
begin integer njobs, ponsen, schrijven, k,m,n,i,j,ii,ng,md,nf,fl,f2; ~
trace,s,y,xml,xl,rl,f,lambda,p,q,prob;
k:=read; m:=read; n:=read; ponsen:= 3; schrijven:= 2; begin array xm,soMt,sx,x,sd[l:m], ts,w,ssd,d[l:m,l:m],pgg[l:m,l:k]j integer array gn[l:k], zesa[1:k,1:m], somzes[l:m];
0>
~
procedure varcovar; begin integer nn, pkn; ~ xx; ng:= read; m:= read; CARRIAGE(5); PRINTTEXT(t
groep~); ABSFIXT(3,O,ii);
SPACE(5); ABSFIXT(3,O,ng); HLCR; gn[ii]:= ng;
-for
:r,)j~ ...,.,... ~
i:= 1 .:-=
stel~
---- -
1 imtil
14
tic ~x[i::=
c;
-
1 step 1 tmtil m do for j:= 1 step 1 tmtil m do d[i,j]:= OJ
nn: = 1 step 1
begin pkn :=
~
~
REiJ);~
ng ~ i:= 1 ~ 1 until
-
r.l ~
-
begin xx:= READ; if xx = 6 then begin zesa[ii,i]:= zesa[ii,i] +1; xCi] := 0 end ~
~
end"
-'
xCi] := XX; sx[i] := sx[i] + xCi];
~
i:= 1 step 1 until m ££!£r j:= 1 sten 1 until
ill
do d[i,j]:= d[i,j] + x[j] x xCi];
~; ~
start:
varcovar;
i:=1 steJ? 1 ~ m do begin somt[i]:=O; sornzes[i] := 0;
~
sten -for j:=1 -=-
!2r
ii := 1 step 1 until k ~ zesa[ii,i]:=O;
1 until m do ts[i,j]:=w[i,j]:=O
--"'
~;
!2!:
ii: =1 ste;p 1 until k
9£
begin NEW PAGE; f.s?£ i : = RESYM while i ~ 120
2£;
~ i := RESYM while i ~ 120
22
PRSYM( i );
varcovar;
f2r. i:=1 ste12
1 until m ~
0:>
U1
begin somt[i]:= somt[i] + sx[i]; sornzes[i]:=sornzes[i] + zesa[ii,i]; gg[i,ii]:= sx[i]/(ng-zesa[ii,i]);
!£!:
j
begin
:=1 step 1
1£
~ ill
.sl£
i = j ~ noemer:=ng - zesa[ii,i] ~ noemer:=ng - zesa[ii,i] - zesa[ii,j];
ssd[i,j]:= d[i,j]/noemer - sx[i]Xsx[j]/((ng-zesa[ii,i])x(ng-zesa[ii,j])); w[i,j]:=w[i,j] + noemerxssd[i,j]; ts[i,j]:=T,s[i,j] + d[i,j]; end·
~,
~;
in out matrix(ssd,
ill,
m, schrijven + ponsen, true, false, ~preiding in testruimte})~
~;
in outmatrix(eg,m,k,schrijven,false,false,{groepsgemiddel~en});
-
for
-
i~=1
ste~
1 until m do
begin sx[i]:=sqrt(w[i,i]); x[i]:=somt[i]/(n - somzes[i]);
_
foy ....':=1 .-... sten 1 until m -do =be~g~in~ if i=j then noerner := n - somzes[i] else noerner:=n - somzes[i] - somzes[j];
-
--
----
-.-.
ts[i,j]:= ts[i,j] - noemerxsamt[i]xsomt[j]/«n-somzes[i])x(n-somzes[j]));
~
end; -!2r. i:=l step 1 tll'ltil m.9£!.2r j:=l steQ 1 until m!!2. d[i,j]:=ts[i,j] - w[i,j]; RUNOUT j RUNOur j NEWPAGE j RUNDUT j RUNDur j RUNGVI';
macheps:=2 1O-12; GENERAL EIGENVALUE
PROBLEM(m,d,w,sd,ssd,1,m,finish,~)j
!E£ ii:=1 step 1 until m S£ begin p:=O;
!2r
!2!
i:=1 step 1 tll'ltil m 22 p:=p+ssd[i,ii]~; p:=sqrt(p);
i:=l step 1
~
m ~ ssd[i,ii):=ssd[i,ii]/p
end"
-'
trace:=O; !E£ i:=l step 1 tll'ltil m ~ trace:=trace + sd[i]; NLCR; PRINTrE)\."T( 1:
spoor =~); FI.DI'( 13,3, trace); NLCRj p:=q:=O; nf:=Oj
NLCRj NLCRj FRINTrlEXT( 1:
!2r
eigenwaarden van w-inverse
X
a en percentages van het spoor:l-); NLCRj NLCR;
i :=1 step 1 until m £2. P~FI}~(6,7,10OXsd[i]/trace);rIT£R~; 1~R;
begin ABSFIXT(10,7,sd[i]); ~
i:=1 step 1 ~ m ~ begin xm[i]:=10OX(sd[i]/trace);
.if xm[i]>oOOl
~
begin
p:=p+~[i];
.if abs(p-95 )
~
begin nf:=nf+1 jq:=p ~ ~
end"
~,
NLCRj NLCH; PRINTTEXT( {:
aantal significante discriminant functies=i»; ABSFTh"T( 3, O,nf); NLCR; NLCR;
())
0'\
in out matrix(ssd, m, m, schrijven, false, true. 1::eigenvectoren van w-inverse X a (als kolommen)~); ~
i:=1 step 1 until m ~ ~ j:=1 step 1 until nf
PRINTTEXT( 1:
2£ ts[i,j]:=
sx[i]xssd[i,j];
-
eerstei»; if nf=1 then
-
PRINTl'EXT( 1: kolom bevat de coefficienten van de significante discriminantfunctiel-) ~
be£in ABSFIXT(l,O,nf); PRINTTEXT({kolommen bevatten de coefficienten van de significante discr1mi nantfunctiesl-) ~;
CARRIAGE( 4); fUNI£R; ABSFIXP(3, 0, m); ABSFIXP( 3,0, k) ;
ABSFIXP(3,0,nf); ~ 11:=1 step 1 until k
2£
ABSFIXP(3,O,gn[ii]);
in out matrix(ts,m,nf,schrijven,false.true. {gescbaalde bijdragen van de variabelen aan de significante discrim;n8ntfunctie(s)~); in out matrix( ts, m, nf, ponsen, false. true. -koefficienten van de significante d1scriminantfunctie( s ):1-); in out matrix( gg, m, k, ponsen, false, false. ~oepsgemiddelde~);
.!! m
~
md:=m
~
md:=k-1;
lambda: =1 ;
!2!:
i:=1 step 1 until md
NLCR; PRINTTEXT( {
.!!2
<Xl -.:l
lambda:= lambda X (1/( l+sd[i]»;
lambda voor toetsing van 112 =:1-); ABSFIXT( 7,7, lambda); NI£R;
s:=sqrt«m,f.2 X (k-l).te .Jt)/(mf,2 + (k-1)~ -5»; y:= lamb~(1/s); xml:= n - 1 - (m+k)/2; fl:=2Xrl;
xl:=-«mx(k-l)-2)/4j
rl:=(mx(k-1»/2j
f2:=xmlXs + 2Xxl; f:=«1-y)/y)X(f2/fl);
NLCRj PRINI'TEX'I'(1:
PRINTTEXT( 1:
fl =i»; ABSFIXT(4,0,f1)j PRINTTEXT(1:
f2 =i-); ABSFIX'I'(4,O,f2)j
f =i»; ABSFIX'I'( 5,4, f) j
ftest(f ,f1 ,f2,prob); NLCR; PRINTTEX'I'( 1:
prob =i»; ABSFIXT( 2, 5,prob); NLCR; NLCRj
if prob> .05 then PRINTTEXT( 1:similar-value-orientations hyr.-othese niet verworpeni-) -else PRINTTEXT( fte vervolgen met deel 2~);
-
finish:
end· ' end end progend
Lalg0l 06243715 disc diag ~
comment programma. disc. diag, c. de wit, programns. gewijzigd t.b.v. diagnoseonderzoek met patienten u1 t de dr. van spanjekliniek in groesbeek input: disconst .. , aantal groepen, aantal variabelen, totaal aantal patienten, per groep: 'tite1', aantal pa:tienten van de groep, aantal variabelenj
integer 1, j, m, k,
-
rrr,
ii, lezen, schrijven, f, g, n, nn, z, totz, ap, av, ziekte, njobs, pkn;
reaJ. macheps, determ, p2, Zkans; l ibrary CROUTDECGfPGSITION, CRCJ.JTDE'I'ERMNANr, CR£JJTINVERSE, INPRC.D;
pr2Cedure in outmatrix(A, n,m, code, half' ,reedsgelezen, u); value n,m,hal.f,reedsgelezeni1nteger n,m,code;Boolean
half',reed.sgelezen;~A;str1ng
u;
bep¢n integer d,k,i,J,p,qj procedure output(n,m,x)jinteger n,m;~ begin.!! code=2 V code=5 ~ begin
.!!
code=3 V code:=:5 ~ begin
-
Xj
--
l:!
x>o ~ ABSFIXT(n,m,x) else FIXT(n,m,x) end;
g
x>O ~ ABSFIXP(n,m,x) else FIXP(n,m,x) end
end;
p rocedure print(a)j string ajbegin
l!
code=2 V code=5 ~ PRINPI'EXT(a)j
procedure regel; begin!! code=2 V code=5
11
~
NLCR;
!!
code=3 V code=5
-
1£
code=3 V code=5 ~ PUTEXT(a) ~;
~
PUNLCR
~;
code=l ~ begin.!! l reedsgelezen ~ begin n:=read.;m:=read;half:=(read=l) ~ ~;
d:=(m-l):10+1;regelj if code=2 V code=5 then SPACE(3);print(u);regel; -
-=
-
output(4,O,n); output(4,O,m)joutput(4,O,if then1. else ..- half _ - O)jregel; for k:=l step 1
~
d
~
OJ
OJ
5!!!
regel; regelj g code=2 V code=5 ~ SPACE( 10) j p: =1OXk-9; q:=1OXkj
!2!:
i:=p step 1 ~
(g kfd
~ q ~ m) ~ begin.!! code=l ~ j:=read ~ output(lO,O,1) ~j
regeli regeli
!2!:
n.!!2..
i:=(g half' ~ p ~ 1) step 1 ~
~!! code=l ~ j:=read ~ outPUt(9,O,i)i!!. code=2 V code=5 ~ SPACE(2)j
!!
half ~ ~
!2!.
j:=p step 1 until i
2:2
begin!! j>q ~ ~ next1 ~.Y. code=l ~ A[1,J]:=A[j,1] :-=read ~ output(5,4,A[i,j]) ~ ~ ~ ~ ~
j:=p step 1 unt1l m~
begin!! j:>q~' i2!:2 next1 ~
-g
-
l:!.
code=l ~ A[i,J] :=read ~ output(5,4,A[i,J])
.!!!!!!!!i
next1 :regel; if code=2 V code=5 then begin
---
(1.=.5 )X5=i ~ begin NLCR;
g
LlNENUMBER>54 ~ NEWPAGE ~ ~
end end endi 0>
'\0
hoofd;progr8DlDa : m:=read; k:=read; nt:=read.; lezen:=l; schr1jven:=2;
mache;ps:=2~12;
begin integer array kode[ 1 : 4]6 dtaU 1 : k], gn[ 1 :k]; ~
d.d.[ 1 :nf, 1 :nf,l :k], ts[ 1 :m6 1 :nf]jl gg[ 1 :mJll :k], cent [ 1 :k,l :nf],ed[ 1 :nf,l :nf],x[ 1 :m], chi,dif,disc,p(l:nfJ, pl,chisq,ratio[l:k]j
~ 11 :=1 step 1 ~ k ~ gn[ 11 ] :=readj
inoutmatr1x(ts,m6nf,lezen,~,~,~ ~);
12!
1noutmatr1x(gg,m,k ,lezen,fal.se,fal.se,~})j ~
11 :=l-step 1
~
k
~
f :=1 step 1
~
nf
~
begin cent[ii"f] :==0; ~ 1:=1 ste,.-e 1 ~ m ~ cent[ii,f]:= cent[ii,f] + gg[1,11]xts[i,f] ~;
------
inoutmatr1x(cent,k,nt',schrijven,fa.lse,fa.lse,~ groepscentroiden})j
!.2!:
i1 :=1 step 1
~
~
k
begin array d[ 1 :m,1 :m], cc[ 1 :m,1 :nf']; NLCR; PRINTl'EXT(t: inoutmatrix(d,m,m,lezen,~,~,t:
!2!:
1 :=1 step 1 until m .!!2
~ cc[i,f] :=0;
t2I.
:f:=1
!.2::
begin ed[f,g] :=0;
!2!:
~);
f :=1 step 1
~
nf'
~
.1:=1 step 1 until m ~ cc[1,f] :=cc[i,f]+ts[j,f]Xd[j,i]
until n:f
step 1
~
groep}); ABSFIXT( 2, 0,11); NLCR;
.22 !2.!.
.=!!!;
g:=l step 1 ~ n:f ~
until m ~ ed[f,g] :=ed.[f,g]+ cc[i,f]xts[1,g]
i :=1 step 1
~;
inoutmatrlx(ed,nf',nf' ,8Chr1Jven'~J'~,i::spreiding in d1scrim:1nantru1mte~);
-
CROlJmECClMJ?C6ITION( nf', ed, ed, p, 'true,macheps, finish) ; de~:u CRCl11DETERMINANl'( nf, ed, p) j
CROUTINVERSE( nf', ed, p, ed} j
!2£
f:=l step 1 until nf' ~
.!£!
g:=1 step 1 ~ nf' ,2;2 dd[f,g,11] :=ed[f,g]; \0
ratio[ii]:=gn[i1]/sqrt(determ)
o
--
end;
kode[ll := 10; kode[2] := 11; kode[3] := 12; kode[4] := 14; njobs := READ; NLCR; PRINrTEXT(faantal jobs = aantal groepen :~); ABSFIXT(2,0,njobs); av := READ; ap := READ; NLCR; PRINTl'EXT(ftotaal aantal pat1enten :t»; ABSFIXT(4, O,ap); NLCR; PRlmvrEXT(f.a.e..ntal symptomen :t»; ABSFIXT(3, 0, av); NEW PAGE;
-
-
-
nextjob:for 1 := RESYM While i i= 120 do; NLCR;
-
for i
--
:= RESYM while i +=120 do PRSYM(i); NLCR;
NLCR; PRINTl'EXT( t:
class1f1cat1e van de patientent»; NLCRj NLCRj
--
-
n:=read; m:=read; for 11 := 1 ste,P- 1 until k do -dtal[n-J := 0;~
nn:=1 step 1
~
--
n
~
~
-
begin pkn := READ; for i :=1 steg 1 until m do x[ i] :=read; ~
--
.!.2!:
f :=1 step 1 until n1'
begin disc[f] :=OJ
!9!:
~
i:=l step 1 ~ m ~ disc[t] :=diSc[f]+x[i]xtS[i,f] ~;
PRIIwrE.XT( f:patient}); ABSFIXT( 4,0,pkn); PRINl'TEXT(f:
!2!:
discriminantscores});
i1 :=1 step 1 until k
f:=l step 1 ~ nf ~ FIXT(5,3,disc[f])j
~
begin!s>£ t:=l step 1 until ni"
!2!.
!2::
22
f :=1 steJ2 1 until nf
dit[t] :=disc[f]-<:ent[ii,t];
~
begin chi[f] :=0; ~ g:=l steE 1 ~ nf ~ chi[f] :=ch1[f]+d1t[g]Xdd[g,t,11] ~; chisq[ 11] :=0; for f:=l step 1 ~ nf ~ chisq[ii] :=chisq[11]+dif[f]xchi[f]
-
end; p2:=O;
~ ii:=l step 1 ~ k ~ begin p1[11]:= ratio[i1]xexp(~h1sq[ii]/2);p2:=p2+p1[U] end;
NLCR; PRINrI'EXT( f.ehikwadraten
});!E ii :=1 step 1
\,()
t-J
~ k ~ FIXT( 6,2, chisq[ U]);
NLCR; PRINTrEXT(foverschr. kansen})j ~ ii:=l step 1 until k ~ FIXT(6,2,p1[ii]/p2); zkanB := 0; begin
g
!2!:
zkans
z := 1 step 1 until k
< p'l [z]/p2
~
~ begin zkans := p1 [z]/p2; ziekte := z ~ ~;
SPACE(5); ABSFIXT(2,O,ziekte);dtal[ziekte] := dtal[ziekte] + 1; SPACE(lO); PRSYM(kode[ziekte]);
!2::
i:=l ste}2 1
begin
ell:
~
m~
x[i]=6 ~ beg!!: NLCR; PRI~(f:
NLCR; NLCR
-
endj
NEW PAGE; for z := 1 sten 1 until k do -
----'»
~
--
begin NLCR;NLCR; PRSYM(kode[z])j SPACE(2)j ABSFIXT(4,O,dtal[z]); dtal[z] := 0; ~j
niet gemeten symptoonq»; ABSFIXT(3,O,i)j
2
~;
92
~I
....... III
.g "? ~
.. II
La.l.gol 06243715 c de wit, 1 ~
conment programna elver, c de wit 1 programma. voor samenstellen van een patienten-band waaru1 t enige variabelen zijn geelimineerd. input: oorspronkellJk santal variabelcen i indian aile var1abelen moeten worden
gecopieerd dan: nummers van deze veriabelen, 00
1nd1en enkele variabelen moeten 'Worden weggelaten dan: nummers v. deze varibelenJ> -1.j
inNer mvar, m, a, ngroep,
totaPJ> nay, 1, npa:t, nJ> pkn, njobs;
08.V,
mvar := READ;
begin boolean ~ pons( 1 :mvar]j ~ m := 1 step 1 ~ mvar ~ pons(m] .:=.~;
for a := READ 'While a
_
!!
~
a
<0
~
!2!:
>0
\0
do pons[a] := true;
c::::a::lIil'
Vl
~
m := 1 steg 1 ~ mvar ~ pons[m]
ngroep := READ; oay := READ; totap := READ;
naY
:=.,
pons [m]j
:= OJ
PRINrI'EXT(faantal groepent»; ABSFIXT(2, OJ> :pgroep)j ABSFIXP(2, 0, ngroep); PUSPACE(lO);
1:2:: m
:= 1 steJ2 1 unt1l mvar ~
g
pons[m] ~ nay := naY + 1;
NLCR; PRINITEXT(faantal nieuwe variabelen}); ABSFIXT(3, 0, nay); AJ3SFIXP(3, 0, nay);
PUSPACE(1O);
NLCRj
PRINrl'EXT(~totaal aantal pat1enten});
Al3SFIXT(4, OJ> totap); ABSFIXP(4, OJ> totap); PUNLCR; next job:
!2!:
~or 1 := RESYM while 1 ~
1 := RESYM ~
PUSYM( 1 ) j RUNOOT j
-
t= 120 do; RUNOUT; NEWPAGE; PUNLCR; PUSYM(i); i t= 120 ~ begin PRSYM( i ); PUSYM( i) ~j
PUNl£Rj
npat := READ; mvar := READ; NLCR; PRINTrE.XT(faantal patienten van deze groep}); ABSFIXT(4, 0, npat);
ABSFIXP( 4, 0, npat); PUSPACE( 10); NLCR; PRINI'TEXT( faantal nieuwe variabelez4» ABSFIXT(3,
!2!
oJ)
nav); ABSFIXP(3,
n := 1 step 1
~
npat
oJ)
j
nav)j PUSPACE(lO); CARRIAGE(4);
~
~ NLCR; PUNLCRj pkn := READ; ABSFIXT(4J> 0;> pkn);
ABSFIXP(4, 0, pkn); S~ACE(4);
!2!:
m := , steR 1 ~ mvar ~
begin
opnieuw:
. ..
a:= READ;
.!!
-
'"
(a < 0 Va> 6) ~ EOto opnietlWj
if pons [m] then
~
begin PUSYM(87); SPACE(2); PRSYM(a); PUSYM(a)
-
S!!;
end
-
endj
PUNLCR; ngroep := ngroep -1;
end
-
end
E ogend
.!!
ngroep > 0
~
goto nextjobj
'!) ~
Lalspl 06243715 c de
wit~l
begin comment programma. no p. pr<>gra.lml!a
voor sam.enstellen van nieuwe ponsband van longpa.tienten
gesorteerd naar verschillende ziekteno input aantal
pa.tienten~
°titel ,
output :
per patient: diagnose
pkn, symptomeno
aantal ziektes, aant.al symptomen, totaal santal patienten,
per ziekte : aantal pat" inteE ap, z,
~
Jl
aantal symptomen , pat. gegevens( pm en symptomen);
p~
procedure tabelkopZ begin NLCR; PRINTTEXT(~
pm
sl
s2
s3
s4
s5
86 s7 s8 89 s10 all s12 s13 s14
s15~)j
NLCR
~
-
\J1
end tabelkopj
procedure 8811duiding( Zp schrijven, ponsen); ~
z, schriJven, pons en; integer Zj boolean schrijven, ponsenj
begin procedure u1 tv( achrijven, ponsen, str); ~
schrijven, ponsenj boolean
begin
11: !!
--
schrijven~
ponsenj string str;
schri jven ~ begin NLCR; PRINTrEXT( str ); NLCR; ~; ponsen ~ begin PUNLCR; PUSYM( 120 ); Pl!I'EXT( atr ); PUSYM( 120) j PUNLCRj end
end uitvj
if z
.!!
z
-if zz if
~
-
=1 =2 =3 =4
a.a.nduidingj
then uitv(schrijven, ponsen, fastIm bronchiale})j """"""'" ~ ui tv( schriJven, ponsen, fbronchi tis astmatica}) j
-
then ui tv( schri jven, ponsen, fbronchi tis chromes.});
then ui tv( sehrijven, ponsen, ~emfysema pulmonuml»;
~
ap := READ; p := entier(a)/2); begin integer n... od", b... gesl; integer arral pat[1:4.. 1 :p, 0:15], ziekte[1 :4]; ~ z := 1 ste~ 1 ~ 4 ~
.ge
n := 1 step 1 until ap
ziekte[z] := 0;
~
begin volg pons:
cd := RESYM;
.!!
ad.
.!!
(od ~ 10 /\ od.
= 93
V od. = 119 then gote V9~, W~;
S
14) V cd = 24 ~ ~ vervolg ~
begin NLCR; PRINTl'EXT( ~out in getallen band cd
=t»;
PRSYM( od.) j ~ volg pons
--
end;
if od.
vervolg:
'-0
= 14 then z := 4;
~
""""""'"
if od. = 12 then z := 3; ==-= if od = 11 then z := 2; ~
if od.
= 10
~ b :=
then z := 1; zieKte[z] := ziekte[z] + 1;
° step 1 ~
~ 14
.S!2
pat[z... ziekte[z]", b] := READ;
gesl : = RESYM;
opnieuw:
-
=1
if gesl = 0 V gesl
begin
II
gesl
begin
= 22
1£
pat[z, ziekte[z] . . -then pat[z, ziekte[z], 15]
~
gesl
= 31
-
15] := gesl else := 1 ~
~ pat[z.. ziekte[z], 15] :=
°
~ goto opnieuw ~
end . ~
inlezen patienten;
RUNOUT; PUNLCR; ABSFIXP(l . . 0, 4); PUSPACE(4); ABSFIXP(2, 0,15); PUSPACE(4); PRINI'l'EXT( ~tal patientent»; ABSFIXT( 4.. 0 . . ap) i PUSPACE(4); ABSFIXP(4, 0, ap);
~ z := 1 steg 1 ~ 4 ~
begin NEW PAGE; RUNOUT; PUNLCR; aa.nduiding(z~ ~, ~); CARRIAGE(3); RUNDUT; PRIN'rl'EXT( faantal patienten met ziekte}); aanduiding( z, true, false);
-
ABSFlXT(4, O~ ziekte[z]); ABSFIXP(3~ 0;> ziekte[z]); PUSPACE(4); ABSFIXP(2, 0, 15); NLCR; tabelkop; ~ n
~
:= 1 steE 1 ~ ziekte[z] ~
l!
LINENUMBER = 60 ~
~ NEW PAGE; a.anduiding(z~ ~, ~)j tabelkop~;
NLCR; PUNI..CR;
ABSFIXT(4,
!2!.
0, pat[z, n, 0]);
ABSFIXP(4~
end; PUSYM( 87)
-
end
end· '
-
end progend.
PUNLCR'
,
pat[z, n,
0]);
b := 1 ateE 1 ~ 15 ~
~ ABSFIXT(2~ 0, pat[z, n, b]);
-
0,
puSYM(87); PUSYM(pat[z, n~ b]); end \,.()
-.J