RuG/L04

Tutorial

7. Voorbeeld: Duitsland

In dit deel maken we gebruik van een tabel van dialectverschillen voor Duitsland, gebaseerd op data uit 186 plaatsen. [bron: Forschungsinstitut für deutsche Sprache, Marburg?] De data zelf is niet beschikbaar. De tabel en bestanden voor het tekenen van kaarten vind je in het volgende zipbestand:

    de.zip

In dit deel maken we kaarten met het programma mapdiff. Met dit programma kun je een kaart tekenen direct van een tabel met verschillen:

    mapdiff -c 2 de.cfg de.dif > de00.ps

Hieronder zie je de kaart die dan ontstaat. De kleur van een lijn geeft aan hoe groot het verschil tussen de plaatsen aan weerszijde van de lijn is. Hoe donkerder de lijn des te groter het verschil.

Echt nuttig is zo'n kaart als hierboven niet. Je ziet alleen de lokale verschillen, die op zich weinig zeggen. Het globale beeld ontbreekt.

Anders wordt het als je eerst gaat clusteren.

7.1 Van verschillen naar clusters naar verschillen

Als je gaat clusteren op basis van verschillen krijg je een indeling in groepen. Die indeling in groepen zegt weer iets over de verschillen tussen elementen, nu niet gebaseerd op individuele verschillen, maar gebaseerd op verschillen tussen de groepen waar individuele elementen bij zijn ingedeeld.

Je begint simpel. Je maakt een clustering en verdeelt die in een aantal groepen. Uit die groepsindeling maak je een nieuwe tabel met verschillen. Wanneer twee plaatsen in dezelfde groep zijn ingedeeld dan is hun nieuwe verschil 0, en anders is het 1.

Met het programma cluster kun je clusteren, en het resultaat direct omzetten in een nieuwe tabel met verschillen. Om verschillen te krijgen op basis van een groepsindeling gebruik je de optie -b. Met de optie -m geef je aan op hoeveel groepen de verschillen gebaseerd moeten worden. Hier een voorbeeld met een indeling in acht groepen:

    cluster -wm -b -m 8 de.dif > tmp
    mapdiff de.cfg tmp > de01.ps

Met mapdiff zet je de nieuwe tabel van verschillen om in een kaart, en het resultaat zie je hieronder:

Dit ziet er uit als een gewone clusterkaart, waarbij clusters niet met kleuren, maar met grenslijnen zijn aangegeven. Maar wanneer we het iets ingewikkelder maken krijgen we veel meer te zien...

We clusteren, en maken een indeling in een aantal groepen. Liggen twee plaatsen in dezelfde groep dan is hun verschil 0, anders is het 1. Dan maken we een indeling in een ander aantal groepen. Liggen twee plaatsen dan in verschillende groepen, dan wordt hun afstand met 1 verhoogd.

We beginnen met een indeling in twee groepen, dan in drie, steeds een niveau verder, tot acht groepen:

    cluster -wm -b -m 2-8 de.dif > tmp
    mapdiff -C .1 de.cfg tmp > de02.ps

Het resultaat zie je hieronder. De donkerste lijn geeft de belangrijkste opdeling aan, de iets lichtere lijn de volgende opdeling, enzovoort. Je krijgt niet een "platte" indeling in clusters te zien, maar een stapsgewijze.

Waarom stoppen bij acht groepen? Er zijn 186 plaatsen. Laten we doorgaan met opdelen tot aan die 186. (Om de lijnen redelijk zichtbaar te krijgen moet je wat spelen met contrast, de opties -c en -C van mapdiff.)

    cluster -wm -b -m 2-186 de.dif > tmp
    mapdiff -c 6 -C .1 de.cfg tmp > de03.ps

7.2 Cophenetic maps

Bij het clusteren worden groepen samengevoegd op basis van verschillen. In het begin is elk element een cluster, een cluster met maar één element. De twee clusters die onderling het kleinste verschil hebben worden samengevoegd tot een nieuw cluster. Het verschil tussen dat nieuwe cluster, en elk van de overgebleven clusters wordt berekend. (Hoe dat precies berekend wordt, dat is wat de verschillende clustermethoden van elkaar onderscheidt.) Daarna worden weer de twee clusters met het kleinste verschil samengevoegd. Enzovoort, tot alles is samengevoegd in één groot cluster.

De afstanden tussen clusters (subclusters, subsubclusters) worden gebruikt bij het tekenen van een dendrogram:

Die verschillen tussen clusters kunnen ook gebruikt worden als nieuwe verschillen tussen elementen. Het verschil tussen twee elementen is dan het verschil tussen de clusters die samengevoegd werden waarbij de twee elementen samen in hetzelfde cluster terecht kwamen. Uit bovenstaand dendrogram kun je zo de volgende tabel van verschillen afleiden:

 ABCD
 A0.02.64.04.0
 B2.60.04.04.0
 C4.04.00.01.0
 D4.04.01.00.0

De verschillen in bovenstaande tabel worden de cophenetic distances genoemd.

Met de optie -c kun je aangeven dat het programma cluster een tabel van cofenetische verschillen moet maken. Op basis van die tabel kun je een kaart tekenen. Een voorbeeld, waarbij de clustermethode weighted average wordt gebruikt:

    cluster -wa -c de.dif > tmp
    mapdiff -c 2 de.cfg tmp > de04.ps

Het wordt wat overzichtelijker als we een maximum aan het aantal groepen stellen:

    cluster -wa -c -m 24 de.dif > tmp
    mapdiff -c 4 de.cfg tmp > de05.ps

Een ander voorbeeld, nu met de clustering volgens Ward's method:

    cluster -wm -c -m 12 de.dif > tmp
    mapdiff -c .6 de.cfg tmp > de06.ps

7.3 Fuzzy clustering

Clustering, zoals we dat tot nu toe hebben gebruikt, heeft een belangrijke zwakheid: het is instabiel. Kleine veranderingen (bijvoorbeeld ruis) in de oorspronkelijke meetgegevens kunnen soms een groot effect hebben op de clustering, met name als het om clustergrenzen gaat die in werkelijkheid helemaal niet zo duidelijk zijn als door een gewone clusterkaart wordt gesuggereerd.

Die instabiliteit kunnen we benutten. We maken van een nadeel een voordeel. Voordat we gaan clusteren voegen we zelf ruis toe aan de meetgegevens, en kijken wat het effect is op de clustering. We doen dit niet een enkele keer, maar vele malen. En dan tellen we hoe vaak een clustergrens getrokken wordt. Als we daarvan een kaart tekenen dan geeft de kleur van de lijn aan hoe groot de kans is dat een lijn daadwerkelijk deel is van een clustergrens.

Een voorbeeld, clustering volgens Ward's method, een indeling in acht groepen, ruisniveau 1, de clustering vijftig keer herhaald:

    cluster -wm -b -m 8 -N 1 -r 50 de.dif > tmp
    mapdiff de.cfg tmp > de07.ps

Een ander voorbeeld, deze keer clustering met weighted average en een indeling in twaalf groepen:

    cluster -wa -b -m 12 -N 1 -r 50 de.dif > tmp
    mapdiff de.cfg tmp > de08.ps

Het programma cluster kan maar één clustermethode uitvoeren, en ook maar één tabel van verschillen gebruiken. Met het programma difsum kun je tabellen samenvoegen, zodat je toch kaarten kunt maken waarvoor meerdere clustermethoden gecombineerd worden. In het volgende voorbeeld worden drie methoden gecombineerd. (Omdat de eerste twee methoden sterk aan elkaar verwant zijn worden ze samen even zwaar gewogen als de derde alleen.)

    cluster -wa -b -m 12 -N 1 -r 50 de.dif > tmp-wa
    cluster -ga -b -m 24 -N 1 -r 50 de.dif > tmp-ga
    cluster -wm -b -m  8 -N 1 -r 50 de.dif > tmp-wm
    difsum .5 tmp-wa .5 tmp-ga tmp-wm > tmp
    mapdiff de.cfg tmp > de09.ps

7.4 Clustering en multidimensional scaling

We hebben al gezien dat clustering een afstandstabel omzet in een nieuwe afstandstabel. Op die nieuwe afstandstabel kun je multidimensional scaling (MDS) toepassen en daar een kleurenkaart van maken, net zoals bij de originele afstandstabel, maar nu zie je het effect van de clustering in de kleurenkaart terug. Met deze methode kun je clusters goed zichtbaar maken, zonder het nadeel van een gewone clusterkaart, echter met nog wel wat nadelen die aan MDS kleven. De kleurruimte is beperkt, en er kan dus ook maar een beperkt aantal clusters worden weergegeven.

Uit tests met grote en kleine afstandstabellen onder uiteenlopende omstandigheden kon een set parameters afgeleid worden waarmee in de meeste gevallen een goed resultaat wordt verkregen:

Het laatste item heeft alleen duidelijk effect in zeer kleine gebieden, waar minder dan vier "superclusters" zijn.

Met deze methode krijg je kaarten waarop clusters zijn ingedeeld in vier hoofdkleuren, waarbinnen kleinere clusters worden aangegeven door variaties binnen die hoofdkleuren.

Hier volgt een voorbeeld waarbij de bovengenoemde parameters worden gebruikt:

    cluster -wa -c -N .5 -r 50 de.dif > tmp1
    cluster -ga -c -N .5 -r 50 de.dif > tmp2
    difsum -a tmp1 tmp2 > tmp
    mds 3 tmp > tmp.vec
    maprgb -e de.cfg tmp.vec > de10.ps

Hieronder volgen nog een aantal voorbeelden met andere parameters:

    cluster -wm -b -m 8 de.dif > tmp1
    difsum de.dif 4 tmp1 > tmp
    mds -K 3 tmp > tmp.vec
    maprgb de.cfg tmp.vec > de11.ps

    cluster -wm -b -m 8 -N 2 -r 100 de.dif > tmp
    mds 3 tmp > tmp.vec
    maprgb de.cfg tmp.vec > de12.ps

    cluster -wa -c de.dif > tmp
    mds 3 tmp > tmp.vec
    maprgb de.cfg tmp.vec > de13.ps

    cluster -wa -c -N 4 -r 100 de.dif > tmp
    mds 3 tmp > tmp.vec
    maprgb de.cfg tmp.vec > de14.ps

7.5 Vectorkaarten

Het gebruik van mapdiff direct op de onbewerkte afstandstabel is niet erg zinvol. Maar er is een manier om die onbewerkte afstandstabellen wel direct in kaart te brengen, en dat is in de zogenaamde vectorkaart, die je maakt met het programma mapvec.

Direct hieronder zie je het commando waarmee je zo'n kaart maakt. Daaronder links staat het resultaat. Om te verduidelijken hoe je zo'n vectorkaart moet interpreteren staat ter vergelijking rechts een clusterkaart.

    mapvec -n .2 de.cfg de.dif > de15.ps

De blauwe stippen zijn de plaatsen, de meetpunten. De zwarte streepjes zijn de vectoren. Een vector wijst in de richting van het gebied met de plaatsen waarmee het dialectverschil het kleinst is. Je kunt dialectgrenzen herkennen doordat aan weerszijde van een grens de vectoren van elkaar af wijzen.

Bij de bepaling van de vector van een plaats wordt alleen gekeken naar de dialectafstand van die plaats met andere plaatsen in de buurt. Alle plaatsen buiten het gebied worden genegeerd. De grootte van die buurt kun je instellen met de optie -n. Kies je een waarde dicht bij nul, dan is het gebied erg klein. Kies je de waarde één, dan is het gebied gelijk aan heel de kaart.

Het effect van verschillende waardes kun je zien in deze animatie. Wanneer je een kleine waarde kiest zie je meer lokale effecten, de niet zo belangrijke dialectgrenzen. In de kaart hierboven kun je in het zuiden nog de dialectgrens herkennen tussen het rode en het paarse gebied. Wanneer je de maximale waarde kiest, dan verdwijnen de kleinere dialectgrenzen, en tekenen de belangrijkste dialectgrenzen zich het duidelijkst af.