Hoofdstuk 10 · Verschil in verschil

Interactie en moderatie · interaction & moderation

De prikkel

Terug naar de rots bij Antarctica, dezelfde 342 pinguïns.1 We weten al dat een langere vin samengaat met een zwaardere pinguïn — logisch, groter beest, grotere vin, meer gram. Maar hier is een vraag die daaronder ligt en die je zo makkelijk overslaat: levert een centimeter extra vin bij élke soort evenveel extra gewicht op?

Je zou zeggen van wel. Een millimeter is een millimeter. Maar reken het in deze steekproef eens apart uit per soort, en je ziet iets vreemds: bij de Adélie’s levert elke millimeter vin er zo’n 33 gram bij, bij de Gentoo’s bijna 55 gram. Bij de ene soort telt een langere vin dus veel zwaarder mee dan bij de andere.

Toeval van deze 342 beesten, of zit daar echt iets? En hoe noem je zoiets eigenlijk — een verband dat zelf weer afhangt van iets anders? Trek mee, we kijken het na.

Speel het

⬇ Download de data — penguins.csv

Vraag R om één model waarin de vin-gewicht-relatie mag verschillen per soort. De ster * tussen vinlengte en soort is precies die toestemming: reken het verband uit, maar laat het per soort een eigen helling hebben.

OpmerkingIn R · trek eraan
peng <- read.csv("penguins.csv")

summary(lm(gewicht ~ vinlengte * soort, data = peng))

Onder in de uitvoer staat een regel vinlengte:soortGentoo met een sterretje erachter: p = .004 voor de interactie als geheel. Dat sterretje zegt dat de hellingen niet zomaar een beetje van elkaar verschillen — het verschil is te groot om aan toeval toe te schrijven. Wil je de hellingen los zien, reken ze dan per soort uit:

OpmerkingIn R · de helling per soort
coef(lm(gewicht ~ vinlengte, data = subset(peng, soort == "Adelie")))     # → 32.8
coef(lm(gewicht ~ vinlengte, data = subset(peng, soort == "Chinstrap")))  # → 34.6
coef(lm(gewicht ~ vinlengte, data = subset(peng, soort == "Gentoo")))     # → 54.6

Drie soorten, drie hellingen: 32.8, 34.6 en 54.6 gram per millimeter vin. Bij een Adélie of een Chinstrap levert een langere vin ongeveer een derde kilo per centimeter op; bij een Gentoo bijna een halve kilo méér dan dat. Eén getal — één helling voor alle pinguïns samen — zou hier gewoon liegen. Het effect van vinlengte hangt af van de soort. Dát is een interactie.

Schud het

Is dat verschil-in-hellingen echt, of kan het toeval het namaken? We spelen weer vals. Deze keer husselen we de soort-labels los van de pinguïns: elke pinguïn houdt z’n eigen vinlengte en gewicht, maar krijgt een willekeurig soort-kaartje opgeplakt. Adélie, Gentoo, Chinstrap — lukraak rondgestrooid.

Dat husselen koppelt de soort los van het vin-gewicht-verband. Je haalt met eigen handen weg dat een bepaalde soort bij een bepaalde helling hoort. In zo’n losgekoppelde wereld kán de ene soort geen steilere lijn meer hebben dan de andere — als de hellingen dan tóch verschillen, is dat puur toeval van de verdeling.

OpmerkingIn R · schud de soort-labels los
# de helling per soort, in één functietje
hellingen <- function(d) sapply(c("Adelie", "Chinstrap", "Gentoo"),
  function(s) coef(lm(gewicht ~ vinlengte, data = subset(d, soort == s)))[2])

echt <- hellingen(peng)
max(echt) - min(echt)          # → 21.8: de kloof tussen steilste en flauwste

# doe het 1000 keer met geschudde soort-labels
set.seed(42)
nep <- replicate(1000, {
  d <- peng
  d$soort <- sample(d$soort)   # soort-kaartjes lukraak rondgestrooid
  h <- hellingen(d)
  max(h) - min(h)
})
hist(nep)
abline(v = 21.8, col = "red", lwd = 2)

Kijk naar dat plaatje. Duizend werelden waarin de soort de vin-gewicht-relatie niet moduleert — want in elke geschudde wereld is de soort losgeknipt van de helling. De kloof tussen de hellingen danst rond een paar gram: soms toevallig wat groter, meestal klein, zelden verder dan 9 gram van huis. En dan die rode streep op 21.8, ver buiten het hele bergje. In duizend keer schudden haalde geen enkele geschudde wereld de echte kloof. De echte pinguïns weten iets wat de geschudde niet weten: bij de Gentoo’s telt een langere vin écht zwaarder mee.

Snap het

Wat je hier zag, heeft een naam die het boek nog uitwerkt: een interactie, en in de wandelgangen ook moderatie. De soort modereert het vin-gewicht-verband — ze bepaalt hóé sterk het is. Het kernidee is simpel en toch makkelijk te missen: soms volstaat één getal niet. Het effect van A (vinlengte) op de uitkomst (gewicht) is niet één helling, maar hangt af van de waarde van B (soort).

Dat is precies waarom je zonder de interactie de mist in gaat. Zou je één helling voor alle pinguïns rapporteren — zeg, ergens rond de 40 gram per millimeter — dan klopt-ie voor geen enkele soort echt. Voor de Adélie’s is-ie te steil, voor de Gentoo’s te flauw. Het gemiddelde is een compromis waar niemand woont. Een interactie zegt: stop met dat ene getal zoeken, de vraag “hoeveel extra gewicht per millimeter vin?” heeft geen antwoord zonder de vervolgvraag “bij welke soort?

En let op de subtiele val: een interactie is iets ánders dan gewoon “Gentoo’s zijn zwaarder”. Dát zou een verschil in hoogte zijn — de ene wolk hoger dan de andere. Een interactie is een verschil in steilheid — de lijnen lopen niet parallel maar waaieren uiteen. Verschil in verschil: niet hoeveel de soorten van elkaar verschillen, maar hoe verschillend het vin-effect binnen elke soort uitpakt. Teken je de drie lijnen in één plaatje, dan zie je ze uit elkaar lopen — en die waaier ís de interactie.

In het boek

Hier: één helling volstaat niet, want het vin-effect waaiert uiteen per soort.

In het boek: W10 — Verschil in verschil

Daar draait het om de lijnen die niet parallel lopen — het moment waarop je merkt dat “het effect” een tweede vraag nodig heeft: bij wie?

TODO (broertje-proof): stem-pas nog te doen — verhaal-stem-opening is een eerste schets, kan losser/stiller. Hoofdstuknummer W10 volgt de boek-boog; anker en formulering checken zodra dat hoofdstuk staat (nummering-later). De JASP- en SPSS-tweeling delen deze tekst; alleen “Speel het / Schud het” verschilt (JASP en SPSS kunnen de shuffle niet zelf — zie die blokken voor de speeltje-hop).

Voetnoten

  1. 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.↩︎