Naast het boek · Schil

Schil · Kruistabel en χ²

Samenhang tussen twee categorische variabelen · contingency table & chi-square

Data bij deze oefeningtitanic.csv passagiers van de Titanic · diamantjes.csv de twaalf steentjes uit het boek · wat elke kolom betekent

prikkel

Dezelfde ijsberg, andere kansen

kansen per klasse · echt verschil of toeval

In de nacht van 14 op 15 april 1912 vaart het grootste schip ter wereld tegen een ijsberg. Het water is twee graden koud. Er zijn 2201 mensen aan boord; als de ochtend komt, leven er nog 711.1 Van elke opvarende zijn later twee dingen genoteerd, meer niet: in welke klasse hij of zij reisde — eerste, tweede, derde, of bemanning — en of hij of zij het overleefde. Twee kolommetjes tekst. Elke rij was iemand.

En nu wij. Want tel je die twee kolommetjes tegen elkaar af, dan rolt er iets uit dat je even stil maakt. In de eerste klasse overleefde 62%. In de derde klasse 25%. Bij de bemanning 24%. Dezelfde ijsberg, hetzelfde water — en toch zulke andere kansen. De vraag jeukt meteen: had je plek op dat schip iets te maken met je plek in die reddingsboot? Of kan zo’n verschil ook gewoon… toeval zijn, het soort scheefheid dat elke telling nu eenmaal heeft?

Trek even mee. We gaan het zelf natellen — en onderweg leer je het gereedschap dat precies voor deze vraag is gemaakt.

speel het

Tel de tabel en bereken χ² in JASP

kruistabel · verwachte aantallen · vuistregel van vijf

Geen stippenwolk deze keer: beide variabelen zijn categorieën, dus we tellen. Het huis waar getelde categorieën wonen heet de kruistabel (contingency table): de ene variabele als rijen, de andere als kolommen, en in elke cel hoeveel er daar zitten. Begin klein — het kleinste huis dat er bestaat ken je al.

OpmerkingEerst zoals in het boek — de twaalf diamantjes · JASP 0.98.1
  1. Open diamantjes.csv en ga naar Frequencies → Contingency Tables.
  2. merk naar Rows, gepakt naar Columns.
  3. Open Cells en vink Expected counts aan.
  4. Vink onder Statistics naast χ² ook χ² continuity correction en Fisher’s exact test aan (die laatste kan alleen bij een 2×2 — en dit ís er een).

Daar staan de vier hokjes uit het boek — Tabel 12.3. Van de zes sterretjes pakte de kraai er vier op, van de zes golfjes twee. Meer heeft een kruistabel niet nodig: geen gemiddelden, geen spreiding, alleen tellingen.

En dan kijk je naar de rest van wat JASP je net gaf, en daar zit het halve blok in. Eerst de verwachte aantallen: vier keer 3. De vuistregel is dat geen enkele verwachte cel onder de 5 mag zakken, en hier zakt er niet één bóven. χ² is namelijk geen exacte som maar een benadering — het toeval-bergje dat je zo gaat bouwen wordt bij grote tabellen mooi glad, maar bij twaalf stenen is het een handvol losse blokjes, en de gladde formule past er niet omheen.

Je ziet dat meteen aan de drie antwoorden die dezelfde vier hokjes je geven, en die JASP nu netjes onder elkaar voor je zet. De kale χ² = 1.33 zegt p = .248 — de kleinste van de drie. Met continuïteitscorrectie wordt het χ² = 0.33 en p = .564 — ruim twee keer zo groot. En Fisher, die niks benadert maar alle mogelijke tabellen met deze randtotalen gewoon uittelt, komt op p = .567 uit.

Kijk waar die laatste twee liggen: bijna op elkaar. Dat is geen toeval — de continuïteitscorrectie bestáát om de benadering richting de exacte uitkomst te duwen. De ongecorrigeerde χ² zit er meer dan een factor twee naast. Eén tabel, drie vinkjes, en alleen het derde rekent werkelijk uit wat er in de vier hokjes zit. Het boek kiest hier daarom Fishers exacte toets — en trekt er de enige conclusie uit die twaalf stenen toestaan: hier valt niets te bewijzen. Dat de sterretjes-odds vier keer zo groot zijn als de golfjes-odds (OR = 4, en het relatieve risico 2) blijft waar; het is alleen een schatting uit vier hokjes waar je bijna niks van weet.

Onthoud dat, want het is de belangrijkste zin over χ²: de toets heeft aantallen nodig om iets te mogen zeggen. Vandaar dat we hem nu op iets groters loslaten.

Nu jij — met de Titanic: 2201 opvarenden, en daar mág χ² wel.

Zelfde huis, groter: klassen als rijen, overleefd ja/nee als kolommen, en in elke cel hoeveel mensen daar zitten. Vier rijen dit keer in plaats van twee.

OpmerkingIn JASP · trek eraan · JASP 0.98.1
  1. Open titanic.csv in JASP (menu linksboven → Open).
  2. Klik bovenin op Frequencies en kies Contingency Tables.
  3. Sleep klasse naar Rows en overleefd naar Columns.
  4. Open het kopje Cells en vink bij Percentages de optie Row aan — zo zie je per klasse wie overleefde. Vink ook Expected counts aan.
  5. Onder Statistics staat χ² al aan; vink daar ook Phi and Cramer’s V aan.

Daar staat de tabel: 203 van de 325 eersteklassers overleefden, 212 van de 885 bemanningsleden. En daaronder één getal voor de héle tabel: χ² = 190.4 (spreek uit: chi-kwadraat, chi-square). Wat dat getal doet: het vergelijkt elke cel met de saaiste tabel denkbaar — de tabel die je zou krijgen als klasse en overleven níéts met elkaar te maken hadden en elke klasse gewoon het scheepsbrede 32% zou volgen. Onder die saaie tabel zouden er in de eerste klasse zo’n 105 overlevenden “horen” te zitten — de verwachte aantallen weer, die je net opnieuw hebt aangevinkt; de magerste van deze acht cellen verwacht er 92 in plaats van 3, dus hier mag de benadering wél. Het waren er 203. χ² telt al die verschillen tussen geteld en verwacht op tot één maat voor “hoe scheef is deze tabel?”. Nul betekent: precies zo saai als verwacht. En 190.4 — is dat veel? Geen idee, nog. Daarvoor moeten we eerst weten hoe scheef púúr toeval kan zijn.

schud het

Is die scheefheid echt, of toeval?

schudden · werelden zonder verband · toeval-bergje

Dus dat zou je willen maken: toeval, met je eigen handen. De kolom overleefd losknippen van de kolom klasse en lukraak opnieuw uitdelen — iedereen houdt z’n klasse, de 711 “ja”s blijven 711 “ja”s, maar wíé overleeft, is nu puur lot. Zo koppel je klasse en overleven los van elkaar: je haalt met eigen handen weg dat een bepaalde klasse en een bepaalde afloop bij dezelfde opvarende horen. Doe dat duizend keer, en je hebt duizend werelden gebouwd waarin er écht geen samenhang is tussen klasse en overleven; reken in elk van die werelden χ² uit en kijk waar de echte 190.4 valt.

En hier moet ik eerlijk zijn: dat schudden is geen knop in JASP. JASP rekent één keurige uitkomst uit; het duizend keer husselen en opnieuw kijken is code- of speeltje-werk. Dat is geen gemis van jou of van JASP — het boek doet het bewust zo: de simulatie-ervaring loopt via een schud-speeltje in de browser (of via het R-broertje, waar het een paar regels code is).

▶ Speel het schud-speeltje

Kijk naar wat het speeltje je laat zien. Duizend werelden die dansen rond nul — want in elke geschudde wereld is de echte samenhang doorgeknipt, maar toeval laat de scheefheid nooit precies op nul landen. In duizend werelden waarin de waarheid “geen verband” is, was de kleinste geschudde χ² 0.02, en de meeste liggen er ruim boven. Toeval deelt nooit perfect eerlijk uit; een beetje scheefheid krijg je altijd cadeau. Al die geschudde χ²’s samen vormen het toeval-bergje: zó ver komt puur geluk — tot een keer of 22, en dan houdt het op.

En dan die rode streep op 190.4. Niet aan de rand van het bergje — er mijlenver voorbij, bijna tien keer zo ver als het wildste toeval in duizend pogingen. Geen p-waarde die je moet geloven, maar een afstand die je zíét. De echte nacht van 1912 ligt niet in de wereld van het lot. De samenhang tussen klasse en overleven is echt.

snap het

Wat χ² wél en niet zegt

Cramérs V · residuen · vrijheidsgraden

Echt — maar wat wéét je daarmee precies? Minder dan je denkt, en dat is de kern van dit blok. χ² beantwoordt maar één vraag, met veel gezag en weinig woorden: hangen deze twee samen, of is dit toeval-scheefheid? Antwoord: ze hangen samen. Punt. Het is een kaal ja — het zegt niet hoe stérk, niet wáár in de tabel, en al helemaal niet waaróm. Voor die drie vragen heb je drie andere dingen nodig, en die heb je eigenlijk al in handen.

Hoe sterk? Daar is een apart getal voor: Cramérs V, dat χ² terugschaalt naar een bandbreedte van 0 (geen samenhang) tot 1 (perfect voorspelbaar). Je hebt ’m net aangevinkt: V = .29 — een stevige, duidelijk zichtbare samenhang, maar geen lotsbestemming; ook in de derde klasse overleefde één op de vier.

Wáár zit het? Vraag de tabel welke cellen het hardst afwijken van verwacht — de residuen (residuals):

OpmerkingIn JASP · waar zit de scheefheid?
  1. In dezelfde Contingency Tables-analyse, open Cells en vink onder Residuals de optie Pearson aan.
  2. Elke cel krijgt nu een extra getal: hoe ver zit geteld van verwacht af?

De uitschieters vertellen het verhaal: eerste klasse zit ver bóven verwacht bij de overlevenden (+9.6), bemanning en derde klasse ver erónder (−4.4 en −3.3). De scheefheid is geen gelijkmatig waas over de tabel — het is een trap, van boven naar beneden door het schip.

En waaróm? Hier houdt de statistiek haar mond, en terecht. De kruistabel zegt dat klasse en overleven samenhangen; ze zegt niet dat je ticket je redde. De verklaring is historisch, geen getal: de eersteklashutten lagen dekken dichter bij de reddingsboten, de bemanning bleef werken terwijl anderen instapten, hekken en gangen en taal zaten ertussen. Dat verhaal is waarschijnlijk wáár — maar het komt uit de geschiedenisboeken, niet uit χ². Wie alleen de toets rapporteert (“χ²(3) = 190.4, p < .001, dus er is een verband”) heeft het minst interessante deel te pakken. De percentages — 62, 41, 25, 24 — vertellen wat er die nacht gebeurde; de residuen wijzen aan waar; χ² zegt alleen dat het geen toeval was. Je hebt ze alle drie nodig, in die volgorde. En één ding nog, omdat het makkelijk wegzakt achter de getallen: dit waren tellingen van mensen. Wat de saaie verwachte tabel “gladstrijkt”, waren er die nacht honderden.

(Dat kleine getal df = 3 dat JASP erbij zet — de vrijheidsgraden — is boekhouding over de maat van de tabel: (4−1)×(2−1) = 3. Het vertelt de toets hoe groot het toeval-bergje voor een tabel van dit formaat hoort te zijn. Precies wat het speeltje voor je bouwde door te schudden.)

jouw beurt

Van klasse naar rol

klassen samenvoegen · 2×2-tabel · χ² · Cramérs V

Jouw beurt. De vier klassen verbergen nog een simpeler tweedeling: wie bétaalde om aan boord te zijn (de passagiers — eerste tot en met derde klasse) en wie er wérkte (de bemanning). Een echte kruistabel-vraag: maakte het uit of je passagier was of bemanning?

Zet eerst de analyse hieronder klaar, en beantwoord daarna de vragen. Tussen haakjes staat telkens wat er in een compleet antwoord hoort, zodat je jezelf kunt nakijken zonder ons antwoord te openen. De laatste heet weer Z): de aannames staan altijd achteraan.

OpmerkingIn JASP · van klasse naar rol
  1. Maak eerst de tweedeling. Klik in het datavenster op het + rechts van de laatste kolom (Compute Columns), noem de nieuwe kolom rol, kies de R-modus (het kleine R-icoontje) en typ ifelse(klasse == "Crew", "bemanning", "passagier"). Klik Compute column.
  2. Draai Contingency Tables opnieuw met rol bij Rows en overleefd bij Columns.
  3. Vink onder Cells weer Percentages → Row aan, en onder Statistics χ² plus Phi and Cramer’s V. Vink bij een 2×2-tabel óók Continuity correction aan — dat is de gecorrigeerde χ² die R standaard voor een 2×2 rekent.
OpmerkingJouw beurt

a) Hoeveel mensen staan er in de vier hokjes? (vier getallen, en het totaal)

b) Reken de rijpercentages uit: hoeveel procent overleefde er per rol? (twee percentages)

c) Toets de tabel met χ². (rapporteer χ², df en p, en zeg wát je verwerpt)

d) Waarom is df hier 1 en in de tabel met vier klassen 3? (één som, en één zin)

e) Zoek de magerste verwachte cel op. Haalt deze tabel de vuistregel van vijf? (één getal, en één zin)

f) Reken Cramérs V uit. (één getal op twee decimalen)

g) Over de vier klassen heen was V = .29 en hier is hij kleiner. Er is niet mínder gebeurd — je bent minder gaan kíjken. Wat heb je weggegooid door eerste, tweede en derde klasse op één hoop te vegen? (één zin)

h) Welke cel wijkt in deze 2×2 het verst van verwacht af, en welke kant op? (één cel, één getal, en de richting)

i) Leg de residuen van de vier klassen ernaast — +9.6, +2.7, −3.3 en −4.4. Welk verschil verdwijnt zodra je de eerste drie “passagier” noemt? (twee getallen, en één zin)

j) R zet op een 2×2 standaard Yates’ correctie aan. Reken χ² ook zonder, en kijk wat dat met Cramérs V doet. (twee keer χ², twee keer V, en één zin over of het uitmaakt)

k) Geef een inhoudelijke conclusie in niet meer dan vijf zinnen. (over de mensen aan boord, niet over getallen)

Z) Mag je alles hierboven geloven? Loop na:

  • is elke opvarende precies één keer geteld?
  • zijn de verwachte aantallen groot genoeg voor de benadering?
  • is dit een steekproef — en zo nee, waar gaat die p dan over?

En dan de vraag die er altijd achteraan hoort: gaat er iets mis, welke antwoorden hierboven doe je dan over en welke mogen blijven staan?

a) Bemanning: 212 overleefden, 673 niet. Passagiers: 499 overleefden, 817 niet. Samen 2201 — iedereen aan boord.

b) Van de passagiers overleefde 37.9%, van de bemanning 24.0%. Ruim een derde tegen bijna een kwart.

c) χ²(1, N = 2201) = 46.54, p < .001. Wat je verwerpt is de nulhypothese dat rol en overleven niets met elkaar te maken hebben — oftewel dat beide rollen gewoon het scheepsbrede overlevingspercentage van 32.3% zouden volgen. Die tabel is te scheef om van toeval te komen.

d) (2−1) × (2−1) = 1 hier, en (4−1) × (2−1) = 3 daar. In woorden: de randtotalen liggen vast, dus zodra je één cel van een 2×2 invult liggen de andere drie er al. Er is maar één cel echt vrij, en dat is de df. Bij vier rijen zijn dat er drie.

e) De magerste verwachte cel is 285.9 — de overlevende bemanningsleden. Ruim vijftig keer de vuistregel van vijf, dus hier mag χ² zijn werk doen. Vergelijk dat met de twaalf diamantjes aan het begin van dit blok: daar verwachtte elke cel er 3, en zei R er meteen een waarschuwing bij.

f) V = .15.

g) Je hebt het verschil tussen de drie passagiersklassen weggegooid. Een eersteklasser en een derdeklasser tellen na het samenvoegen als hetzelfde soort mens, terwijl juist tussen die twee het grootste verschil van de hele tabel zat. Wat overblijft is het verschil tussen twee groepen die elk al een mengsel zijn — en een mengsel middelt naar het scheepsgemiddelde toe.

h) De overlevende bemanningsleden, met een residu van −4.4: van alle acht cellen ligt deze het verst onder wat je zou verwachten als rol en overleven niets met elkaar te maken hadden. Er “hoorden” er 285.9 te zijn en het waren er 212.

i) Bij vier klassen liep het van +9.6 (eerste klasse) tot −4.4 (bemanning) — een spanwijdte van veertien. Plat je de eerste drie tot “passagier”, dan smelten +9.6, +2.7 en −3.3 samen tot één getal en blijft er +3.6 over. De trap van boven naar beneden door het schip is dan één stap geworden, en die ene stap is korter dan de trap hoog was.

j) Met Yates: χ² = 46.54, V = .1454. Zonder: χ² = 47.18, V = .1464. Het maakt hier niets uit — op twee decimalen is V allebei de keren .15, en de p blijft ver onder .001. Dat is precies andersom dan bij de twaalf diamantjes, waar dezelfde knop p = .248 in p = .564 veranderde. De correctie duwt een vaste hoeveelheid van χ² af, en 2201 mensen merken dat niet.

k) Bijvoorbeeld: van de 2201 opvarenden overleefde ruim een derde van de passagiers en bijna een kwart van de bemanning, en dat verschil is te groot voor toeval. Sterk is het niet: Cramérs V blijft op .15 steken, en ook onder de bemanning overleefde bijna een op de vier. De tweedeling passagier-bemanning vertelt daarmee maar een deel van het verhaal — over de vier klassen heen was de samenhang twee keer zo sterk. Wie er die nacht van af kwam, hing dus meer samen met wáár je aan boord hoorde dan met óf je betaald had.

Z) Ja, met twee slagen om de arm, en de tweede is de interessantste.

  • Blijft staan: a), b), e), h) en i). Dat zijn tellingen en afstanden binnen deze tabel; er komt geen verdeling aan te pas. En elke opvarende staat precies één keer in de tabel — de vier hokjes tellen op tot 2201, dus niemand is dubbel geteld of vergeten. Dat lijkt een formaliteit, maar het is de enige aanname waar χ² echt op leunt.
  • Doe je over: de p bij c), en daarmee de conclusie bij k). Die komen uit de χ²-verdeling, en die is een benadering. Hier mag dat: e) liet zien dat de magerste verwachte cel op 285.9 staat.
  • Blijft staan, maar betekent iets anders dan je denkt: f) en j). Cramérs V is een functie van de tabel zelf en heeft geen verdeling nodig; hij beschrijft gewoon hoe scheef deze 2201 mensen verdeeld zijn.

En dan de derde vraag, want die is scherper dan hij lijkt. Dit is geen steekproef. Er zaten 2201 mensen op de Titanic en je hebt ze alle 2201. Er is geen grotere groep waar dit er een greep uit is, dus de gewone lezing van een p-waarde — “hoe vaak zou een andere steekproef dit namaken?” — heeft hier geen betekenis. Wát je dan getoetst hebt, staat een paar treden hoger in dit blok: je hebt de overlevenden lukraak opnieuw uitgedeeld en gekeken hoe scheef het dan werd. Die vraag heeft geen steekproef nodig. Ze luidt niet “is dit verband er in de populatie?” maar “had het lot dit kunnen doen?” — en dat is precies waarom je in dit boekje eerst schudt en pas daarna een p uit een verdeling haalt.

rapportage

Schrijf het op als een onderzoeker

APA-rapportage · χ² rechtop · geen nul vóór de punt

OpmerkingRapportage

Een kruistabel rapporteren klinkt zwaarder dan het is — het blijft een boodschappenlijstje in zinsvorm: wat kruiste je, hoeveel mensen, en hoe scheef bleek de tabel. Kijk maar:

Om te onderzoeken of reisklasse samenhing met overleven, kruisten we de klasse van alle 2201 opvarenden tegen of ze de ramp overleefden. De twee bleken duidelijk samen te hangen, χ²(3, N = 2201) = 190.40, p < .001, met een matige effectgrootte (Cramérs V = .29).

Dat is ’m. De zin staat op eigen benen: wie er geteld werden, welke twee dingen gekruist, en tussen de komma’s de maat. De afspraken die je al kent, plus een paar nieuwe: alleen de symbolen N, p en V zijn cursief (χ² is al zijn eigen teken en blijft rechtop), de getallen staan op twee decimalen, decimalen krijgen een punt, en omdat V nooit voorbij de 1 kan, laat je de nul vóór de punt weg (.29). De zin staat in de verleden tijd, want je vertelt wat je vónd.

Jouw beurt: schrijf zo’n zelfstandige zin voor jouw passagier-vs-bemanning-tabel uit de taak hierboven (χ²(1, N = 2201) = 46.54, p < .001, Cramérs V = .15). Benoem de opvarenden en beide variabelen — de zin moet op eigen benen kunnen staan, ook voor iemand die dit blok nooit las. Hardop voorlezen mag.

Zelfde vorm in het boek

Hier: hangen twee categorische variabelen samen — tellen, verwachten, en zien hoe ver de echte telling van saai afligt.

In het boek: nog niet — dit hoort bij de schil S2 · Tellen en kruistabellen.

Als die schil er komt, begint ze waar dit blok begon: bij de tabel en de percentages, niet bij de toets.

Voetnoten

  1. De échte passagierslijst van de Titanic, zoals samengevat in het onderzoek van de British Board of Trade (1912); via de R-dataset Titanic (zie ook Dawson, 1995, Journal of Statistics Education). Alle getallen in dit blok zijn op die échte data nagerekend.↩︎