Vierde beweging · Verschil onthechten
Oefening 9.3 · Effectgrootte: Cohens d
Een verschil gedeeld door de spreiding · effect size
In deze oefening
Data bij deze oefening — penguins.csv 342 pinguïns · plantgroei.csv plantgroei onder drie condities · diamantjes.csv de twaalf steentjes uit het boek · wat elke kolom betekent
prikkel
Is 1375 gram veel?
verschil zonder maatstok · spreiding binnen groepen
Twee pinguïnsoorten op de weegschaal. De Gentoo’s wegen gemiddeld 5076 gram, de Adélies 3701 gram.1 Het verschil: 1375 gram — ruim een kilo pinguïn.
Is dat veel?
Denk er even over na vóór je verder leest. Want eerlijk: aan “1375 gram” alleen kun je het niet zien. Veel of weinig hangt ervan af hoeveel de pinguïns binnen elke soort al onderling verschillen. Een kilo is enorm als alle Gentoo’s bijna even zwaar zijn — en niks als de één 4 kilo weegt en de ander 6. Het getal 1375 staat daar maar wat te wezen, zonder maatstok.
Trek even mee. We gaan dat verschil een maat geven die wél iets zegt.
speel het
Reken Cohens d uit in R
gepoolde SD · verschil gedeeld door de spreiding
d <- read.csv("diamantjes.csv")
# de twee groepen apart
g <- d$glans[d$merk == "golfje"]
s <- d$glans[d$merk == "sterretje"]
# de gezamenlijke spreiding: de lineaal waarmee we meten
sd_p <- sqrt(((length(g)-1)*var(g) + (length(s)-1)*var(s)) / (length(g)+length(s)-2))
sd_p # → 20
# het verschil, gemeten in die lineaal
(mean(s) - mean(g)) / sd_p # → 1.00De gepoolde SD is precies 20, dus het merkverschil is d = 1.00 — één hele standaardafwijking, een groot effect volgens elk tabelletje. En tóch was het net niet significant. Effectgrootte en significantie beantwoorden verschillende vragen.
Nu jij — bij de pinguïns: is 1375 gram verschil veel? Zelfde beesten als net, andere vraag.
Haal de pinguïns binnen, hou de twee soorten over, en kijk eerst naar de kale getallen: de twee gemiddelden, en — dit is de sleutel — hoeveel spreiding er binnen de groepen zit.
peng <- read.csv("penguins.csv")
ga <- peng[peng$soort %in% c("Gentoo", "Adelie"), ]
aggregate(gewicht ~ soort, ga, mean) # Adelie 3701, Gentoo 5076
aggregate(gewicht ~ soort, ga, sd) # Adelie 459, Gentoo 504Twee aggregate-regels voor twee getallen — dat kan ook in één keer, met het aantal erbij (en dat aantal wil je hier zien, want d leunt erop). Zie samenvatten, en per groep.
Daar staat het verschil (1375 g), en daar staat de spreiding binnen elke soort: zo’n 480 gram op en neer. Dát laatste getal is je lineaaltje — de gewone onderlinge variatie tussen twee willekeurige pinguïns van dezelfde soort. De vraag “is 1375 veel?” wordt nu een deelsom: hoeveel van die lineaaltjes passen er in het verschil?
g <- ga$gewicht[ga$soort == "Gentoo"]
a <- ga$gewicht[ga$soort == "Adelie"]
# gepoolde SD: de twee spreidingen samengevoegd tot één lineaaltje
sp <- sqrt(((length(g) - 1) * var(g) + (length(a) - 1) * var(a)) /
(length(g) + length(a) - 2))
sp # → 479.5
(mean(g) - mean(a)) / sp # Cohens d → 2.87Daar is-ie: Cohens d = 2.87. Het verschil is bijna drie lineaaltjes groot. En let op wat er met dat getal gebeurde — er zitten geen grammen meer in. We hebben grammen door grammen gedeeld; de eenheid is weggevallen. Wat overblijft is een kaal getal, en juist daardoor kan het reizen.
voel de maat
Twee bergjes die elkaar amper raken
overlap tussen groepen · grootte-vraag versus toeval-vraag
Wat betekent “2.87 lineaaltjes uit elkaar” nou eigenlijk? Teken de twee soorten als twee bergjes op dezelfde weegschaal — Adélie rond 3701, Gentoo rond 5076, elk met z’n eigen spreiding van ~480 — en kijk hoeveel ze over elkaar heen vallen.
x <- seq(2500, 6500, length = 400)
plot(x, dnorm(x, 3701, 459), type = "l", lwd = 2, # Adelie
xlab = "gewicht (g)", ylab = "")
lines(x, dnorm(x, 5076, 504), lwd = 2, col = "red") # GentooBijna geen overlap. Twee bergjes die elkaar amper raken — dát is wat d = 2.87 er in het echt uitziet: je kunt een willekeurige pinguïn oppakken en vrijwel altijd goed raden welke soort het is, puur op gewicht. Hoe groter d, hoe verder de bergjes uit elkaar schuiven; hoe kleiner, hoe meer ze in elkaar overvloeien.
Merk op: hier hoefden we niks te schudden. De schud-zet vraagt “is dit verschil echt of toeval?” — dat is de vraag van de t-toets (zie het t-toets-blok). Effectgrootte vraagt iets anders: “hóé groot is het?” Twee verschillende vragen, en dit blok gaat over de tweede.
snap het
Wat d = 2.87 wél en niet zegt
vuistregels van Cohen · meta-analyse · groep versus individu
d = 2.87 is gigantisch — in de meeste onderzoeken kom je zoiets nooit tegen. Je hebt vast de vuistregels van Cohen weleens langs zien komen: 0.2 is “klein”, 0.5 “middel”, 0.8 “groot”. Handig als eerste houvast, maar het zijn noodgrepen — Cohen bedoelde ze zelf als laatste redmiddel voor als je écht niks beters hebt. Beter is terugvertalen naar de meetlat waar je net stond: 2.87 lineaaltjes, twee bergjes die elkaar nauwelijks raken. Dát zegt meer dan het etiket “groot”.
Waaróm die kale maat de moeite waard is: omdat er geen grammen meer in zitten, kun je ’m naast een d uit een heel ander onderzoek leggen. Een d van gewichtsverschil tussen pinguïnsoorten en een d van, zeg, het effect van een therapie op een angstscore — verschillende werelden, verschillende eenheden, maar dezelfde taal. Effectgrootte is de gemeenschappelijke munt. Daarom draagt bijna elke moderne studie ’m, en daarom kan een meta-analyse tientallen onderzoeken optellen die anders onvergelijkbaar waren.
Twee dingen om vast te houden, want hier gaan mensen de mist in:
- “Significant” is niet “groot”. Het t-toets-blok vraagt of een verschil echt is (geen toeval). Dit blok vraagt hoe groot het is. Bij grote steekproeven kan een piepklein, oninteressant verschil kraakhelder significant zijn — echt, maar nietig. En omgekeerd. Echt en groot zijn twee losse knoppen.
- d gaat over de groepsgemiddelden, niet over individuen. Zelfs bij deze enorme d = 2.87 zegt het iets over de bergjes als geheel, niet over elke pinguïn. In de kleine overlap die er wél is, kan een zware Adélie best boven een lichte Gentoo uitkomen. De soorten verschillen gemiddeld enorm; dat sluit een individuele uitzondering niet uit.
Zou je het in één eerlijke zin opschrijven, dan niet “de soorten verschillen 1375 gram”, maar: de Gentoo’s zijn gemiddeld bijna drie standaardafwijkingen zwaarder dan de Adélies (d = 2.87) — de twee soorten overlappen in gewicht nauwelijks.
jouw beurt
Een d voor het halve grammetje
gepoolde SD · overlap tussen twee bergjes · twee losse knoppen
Jouw beurt — bekende data, maar uit een ander hoofdstuk: de plantjes uit plantgroei.csv, waar controle tegen voer twee nét de streep haalde met p = .048 (de oefening over de p-waarde). Dat verschil in gewicht kreeg daar een oordeel; een maat kreeg het nooit.
Zet eerst klaar, en beantwoord daarna de vragen. De laatste heet met opzet Z) en niet l): de aannames staan altijd achteraan, en die vreemde letter zegt “en ook, elke keer, deze”.
pg <- read.csv("plantgroei.csv")
ct <- pg$gewicht[pg$groep == "controle"]
v2 <- pg$gewicht[pg$groep == "behandeling2"]a) Hoeveel plantjes zitten er in elke groep? (twee getallen)
b) Hoeveel wegen ze gemiddeld, en hoeveel spreiding zit er binnen elke groep? (rapporteer M en SD per groep)
c) Hoeveel gram scheelt het, ruw? (één getal, in grammen)
d) Reken de gepoolde SD met de hand uit — de twee spreidingen samengevoegd tot één lineaaltje: sp <- sqrt(((length(ct)-1)*var(ct) + (length(v2)-1)*var(v2)) / (length(ct)+length(v2)-2)). (rapporteer de gepoolde SD)
e) Deel het verschil door dat lineaaltje. (rapporteer d, en zeg in gewone woorden wat het getal betekent)
f) Pak nu de rekenmachine en deel de twee gedrukte getallen op elkaar: 0.49 / 0.52. Je komt niet op hetzelfde uit als bij e). Hoeveel scheelt het, en waar komt dat verschil vandaan? (twee getallen en één regel)
g) Leg je d naast die van de pinguïns uit dit blok. Hoeveel keer zo groot is die? (twee d’s en één verhouding)
h) Leg elke behandelde plant naast elke controleplant en tel in hoeveel van die honderd paren de behandelde wint: mean(outer(v2, ct, ">")). Doe hetzelfde in je hoofd voor een muntje. (twee kansen, en de pinguïn-kans van .98 ernaast)
i) De p was .048 en de d is groot. Beantwoorden die twee dezelfde vraag? (twee vragen in je eigen woorden, één per getal)
j) Schrijf één eerlijke zin op over wat dit voer doet. “Het werkt nauwelijks”, “het werkt flink”, of geen van beide? (één zin, met allebei de getallen erin)
k) Deze d komt uit tien plantjes per groep. Waarom is dat getal zelf ook wiebelig, en waar in dit oefenboek gaat dat over? (één zin en een verwijzing)
Z) Mag je alles hierboven geloven? Cohens d deelt door één gezamenlijk lineaaltje. Welke aanname zit daar onder, en houdt hij hier stand? Kijk naar de twee SD’s uit b). (één aanname en het getal waarop je hem beoordeelt)
a) Tien in elke groep, dus twintig plantjes in totaal.
b) Controle M = 5.03, SD = 0.58. Voer twee M = 5.53, SD = 0.44.
c) 0.49 gram. En daar sta je dan: 0.49 gram, zonder maatstok.
d) Gepoolde SD = 0.52. Dat is de gewone onderlinge variatie tussen twee willekeurige plantjes uit dezelfde groep — je lineaaltje.
e) d = 0.95. Het verschil is bijna één heel lineaaltje groot: de twee groepsgemiddelden liggen bijna één standaardafwijking uit elkaar. De vorm is dezelfde breuk als een z-score: je kijkt gewoon hoe vaak het lineaaltje tussen die twee gemiddelden past. Bij een z-score vergelijk je één persoon met het gemiddelde, hier vergelijk je het ene gemiddelde met het andere.
f) 0.49 / 0.52 = 0.94, en bij e) stond 0.95. Dat is geen fout van jou: R deelt 0.494 door 0.5176 en rondt pas aan het eind af, jij deelt twee getallen die al afgerond waren. Eén duizendste in de invoer wordt een honderdste in de uitkomst. Rond af aan het eind, nooit onderweg.
g) Plantjes d = 0.95, pinguïns d = 2.87 — die is er 3.0 keer zo groot.
h) Van de honderd paren wint de behandelde plant er 75, dus de kans is .75. Bij de pinguïns is diezelfde kans .98, en een muntje zou op .50 uitkomen. Zo voel je wat een d van 0.95 tegenover een d van 2.87 in het echt betekent: twee bergjes die elkaar flink raken tegenover twee die elkaar amper raken.
i) Nee, twee verschillende vragen. De p beantwoordt “zijn we er vrij zeker van dát het voer iets doet?” — en hier maar nét, want .048 zit tegen de streep aan. De d beantwoordt “hoe véél doet het?” — en dat is fors. Bij de pinguïns wezen die twee knoppen dezelfde kant op; hier wijzen ze elk een andere.
j) Bijvoorbeeld: “Het voer maakte de plantjes gemiddeld bijna een halve gram zwaarder, een groot effect (d = 0.95), al is het bewijs dat er überhaupt een effect is maar nét overtuigend (p = .048).” Niet “het werkt nauwelijks” — dat verwart nét-significant met klein. En niet “het werkt flink” zonder meer — dat laat weg hoe wankel het bewijs is. Allebei de getallen, allebei hun eigen zin.
k) Omdat d uit twee gemiddelden en twee spreidingen komt, en die zijn bij tien plantjes per groep zelf al onzeker. Trek nog eens tien plantjes en er komt een andere d uit. Hoe hard dat wiebelt en wat je eraan kunt doen, gaat de oefening over power.
Z) De aanname onder de gepoolde SD is dat de twee groepen ongeveer even veel spreiden. Je voegt hun spreidingen namelijk samen tot één lineaaltje, en dat mag alleen als het bij allebei ongeveer past. Hier: 0.58 tegen 0.44, de grootste is 1.32 keer de kleinste. Dat is geen probleem.
De weg terug, voor als dat wél was misgegaan:
- Blijft staan: het ruwe verschil van 0.49 gram bij c), en de twee gemiddelden en spreidingen bij b). Dat zijn beschrijvingen van deze twintig plantjes.
- Doe je over: de gepoolde SD bij d) en dus de d bij e). Je zou dan geen gezamenlijk lineaaltje meer gebruiken, maar de spreiding van één groep — meestal de controlegroep — en dat er duidelijk bij zeggen.
En let op wat er níét in dit rijtje staat: dat de gewichten normaal verdeeld moeten zijn. Cohens d is een verhouding en toetst niets; hij vraagt alleen om een lineaaltje dat bij allebei past.
Nog iets om op te merken: dit is dezelfde eis die de t-toets in de vorige oefening juist líét vallen. Daar draaide je Welch, en die gunt elke groep zijn eigen spreiding. Cohens d kan dat niet — hij moet één lineaaltje kiezen, anders valt er niets te delen. De toets is dus schappelijker geworden dan de maat ernaast, en dat is precies waarom je hier nog wél even naar die twee SD’s kijkt.
◠ Zelfde vorm in het boek
Hier: een verschil in grammen dat pas iets zegt als je het door de spreiding deelt.
In het boek: W4 — Hangen ze samen? (waar de effectgrootte als familie geplant wordt)
Daar is de effectgrootte geen los trucje maar een familie — d, r, en de rest zijn allemaal manieren om “hoe groot?” een eenheidloze maat te geven.
Voetnoten
Palmer Penguins — Gorman, Williams & Fraser (2014), Palmer Station Antarctica LTER; via het R-pakket
palmerpenguins(CC0). Alle getallen in dit blok zijn op die échte data nagerekend.↩︎