Vierde beweging · Verschil onthechten
Oefening 8.2 · Confounding en partiële correlatie
Overlappende voorspellers, en wat er uniek overblijft · confounding & partial correlation
In deze oefening
Data bij deze oefening — penguins.csv 342 pinguïns · wat elke kolom betekent
prikkel
Zevenentachtig gram, en waar ze gebleven zijn
confounder · gedeelde variantie · partiële correlatie
Er staat nog een rekening open.
In de vorige oefening voorspelde de snavellengte het gewicht van de pinguïns keurig: ruim 87 gram per millimeter, ruim een derde van alle verschil in gewicht verklaard. Toen kwam de vinlengte erbij en bleef er van die 87 gram nog 6.05 over — niet eens van nul te onderscheiden. Je hebt gemeten dát het gebeurde, met drie verschillende meetlatten, en alle drie zeiden hetzelfde.
Maar niemand heeft je verteld wáár die 87 gram naartoe is.
Dat is geen bijvraag. Een helling die instort verdwijnt niet; hij verhuist. En wie dat niet ziet gebeuren, gelooft de eerste de beste regressie die hem uitkomt — want de simpele lijn had een prachtige p, en hij loog. In deze oefening reken je uit waar de 87 gram is gebleven, en je leert het getal kennen dat er een naam aan geeft.
speel het
Reken de vin weg en kijk wat er overblijft
partiële correlatie · residuen · wegrekenen
De tabel gaf je een p en een helling. Maar de vraag uit de prikkel was eigenlijk een correlatie-vraag: hoe sterk hangen gewicht en snavel nog samen als de vin er niet tussen zit? Daar bestaat een eigen getal voor, en in JASP is het één sleepbeweging — al loont het de moeite eerst te zien wat die sleep eigenlijk doet.
Het recept is precies wat het woord wegrekenen belooft. Wil je weten wat er van de band tussen gewicht en snavellengte overblijft als de vinlengte er geen rol meer in speelt, dan haal je uit allebei weg wat de vin erover te zeggen had, en kijkt of de restjes nog samenhangen. En “wat de vin erover te zeggen had” weghalen — dat zijn residuen, en die ken je uit de oefening over de residuen: wat er van een kolom overblijft nadat een model erdoorheen is getrokken.
- Ga naar Regression en kies Correlation.
- Sleep
gewichtensnavellengtenaar het variabelenvak. - Sleep
vinlengtenaar het vak Partial out.
De tabel toont nu r = .063. Haal vinlengte weer uit Partial out en je ziet wat er zonder wegrekenen staat: r = .595.
Van .595 naar .063. Dit getal heet de partiële correlatie (partial correlation): de samenhang tussen gewicht en snavellengte bij gelijk gehouden vinlengte. Onderzoekers zeggen daar iets deftigs bij — “gecontroleerd voor vinlengte” — maar je weet nu wat er onder dat vak zit: wegrekenen, en kijken wat overblijft.
Dat vak Partial out is namelijk geen toverdoos. Wat JASP onder water doet is precies het recept hierboven: uit allebei de kolommen weghalen wat de vin erover te zeggen had — residuen — en kijken of de restjes nog samenhangen. Wil je dat één keer met je eigen handen bouwen, zodat je het voelt in plaats van gelooft: in het R-broertje is het drie regels, met gereedschap dat daar al op tafel lag.
Doe het nu andersom, want dat is de andere helft van het antwoord:
Zet nu gewicht en vinlengte in het variabelenvak, en sleep snavellengte naar Partial out: r = .793. Zonder wegrekenen: r = .871.
De vin houdt bijna alles over: van .871 naar .793. De snavel houdt vrijwel niets over: van .595 naar .063. Dáár staat, in twee getallen naast elkaar, wat de tabel je met een p van .244 al probeerde te vertellen.
Er bestaat een tweede getal met bijna dezelfde naam, en het is een klassieke struikelplek. Naast de partiële correlatie is er de semi-partiële correlatie (JASP noemt die in zijn tabellen Part). Het verschil zit in hoevéél je wegrekent:
- bij de partiële correlatie haal je de andere voorspeller uit allebei de kolommen weg — dat deed het vak Partial out hierboven;
- bij de semi-partiële correlatie haal je hem alleen uit de voorspeller weg, en laat je het gewicht heel.
Het is dus hetzelfde stukje verklaarde ruimte, afgezet tegen iets anders. Bij de semi-partiële zet je het af tegen alle gewichtsverschillen; bij de partiële alleen tegen wat er ná de vin nog te verklaren óverblijft. Zelfde stukje, andere maatstok — en omdat die tweede maatstok kleiner is, is de partiële correlatie altijd de grootste van de twee.
Zet ze allebei in beeld, dan zie je het. Vink in Regression → Linear Regression onder Statistics het vakje Part and partial correlations aan: in Coefficients komen er dan twee kolommen bij. Onder Partial staan de .793 en .063 van hierboven; onder Part staat de semi-partiële — .637 voor de vin, .031 voor de snavel.
Waarom dit ertoe doet: de semi-partiële correlatie in het kwadraat is de unieke bijdrage aan R². Niet de partiële. Reken maar na: .637² = .406, en de R² van het model gaat inderdaad van .354 (snavel alleen) naar .760 als de vin binnenkomt — een sprong van .406. Had je .793 gekwadrateerd, dan was je op .628 uitgekomen, en dat getal staat nergens in de tabellen.
Onder elkaar, zodat je ze uit elkaar kunt houden:
| gewone r | partieel | semi-partieel | uniek in R² | |
|---|---|---|---|---|
| vinlengte | .871 | .793 | .637 | .406 |
| snavellengte | .595 | .063 | .031 | .001 |
De onderste rij is het hele verhaal van dit blok in vier getallen: een maat die in zijn eentje een r van .595 haalt, en aan het model één duizendste R² toevoegt.
snap het
Twee maten die elkaar niet in de weg zitten
unieke bijdrage · overlap tussen voorspellers · partiële correlatie
Hierboven stierf de snavellengte naast de vin. Nu zet je diezelfde snavellengte naast een ándere maat — de snaveldiepte (snaveldiepte, in mm) — en dan loopt het heel anders af. Draai eerst de drie modellen, en beantwoord daarna de vragen. De laatste heet weer Z): de aannames staan altijd achteraan.
Draai Regression → Linear Regression drie keer, steeds met gewicht als Dependent Variable:
- het lengte-model — alleen
snavellengtein Covariates; - het diepte-model — alleen
snaveldiepte; - het model met allebei — allebei de snavelmaten. Zet voor vraag h de Model-blokken in, met R squared change aan:
snaveldieptein blok 1,snavellengteerbij in blok 2.
a) Hoeveel gram per millimeter voorspelt het lengte-model, en hoeveel van het verschil in gewicht verklaart hij? (rapporteer b en R²)
b) Doe hetzelfde voor het diepte-model. Let op het teken — klopt dat met wat je zou verwachten? (rapporteer b en R²)
c) Toets nu het model met allebei als geheel. Schrijf de nulhypothese eerst voluit op, in woorden én in symbolen. (rapporteer R², F(df1, df2) en p, en de hypothesen in symbolen)
d) Wat gebeurt er met de helling van de snavellengte als de snaveldiepte ernaast komt te staan — en hoe verhoudt dat zich tot wat er in dit blok met diezelfde snavellengte naast de vinlengte gebeurde?
e) Blijven ze allebei significant in het model met allebei? (rapporteer per voorspeller b, SE, t, p en het 95%-interval)
f) Reken de overlap uit: de correlatie tussen snavellengte en snaveldiepte. Vergelijk met de .656 van vin en snavel. Wat voorspelt dat ene getal over de uitkomst van vraag d?
g) Reken de twee partiële correlaties uit, met het vak Partial out uit dit blok. (rapporteer beide)
h) Hoeveel voegt de snavellengte uniek toe aan de R²? Zet snaveldiepte in blok 1 en snavellengte erbij in blok 2, en lees de regel van blok 2. (rapporteer ΔR² en de F-toets) — voor de snaveldiepte krijg je hem kado: ΔR² = .117, F(1, 339) = 74.76.
i) Tel die twee unieke bijdragen bij elkaar op en vergelijk met de R² van het model met allebei. Ze tellen niet op. Waar is het verschil gebleven?
Z) Mag je dit model eigenlijk wel gebruiken? Loop de aannames na: kijk naar de residuen (onder Plots het spreidingsdiagram Residuals vs. predicted voor gelijke spreiding, en de Q-Q plot standardized residuals voor de verdeling), en of elke pinguïn maar één keer meetelt.
a) b = 87.42 gram per millimeter, R² = .354.
b) b = −191.64, R² = .223. Negatief, en dat wringt: over alle pinguïns heen lijkt een diepere snavel bij een lichter beest te horen. Onthoud dat, het komt bij de dummy-oefening en de ANCOVA terug.
c) De nulhypothese: dit model — snavellengte en snaveldiepte samen — verklaart níéts van de verschillen in gewicht. In symbolen:
\[H_0:\ \beta_1 = \beta_2 = 0 \qquad H_1:\ \text{minstens één } \beta_j \neq 0\]
of over de verklaarde variantie: \(H_0:\ \rho^2 = 0\) tegen \(H_1:\ \rho^2 > 0\) — Grieks (β en ρ²), want het gaat over de populatie en niet over deze 342. Eén van de twee is genoeg.
Uitkomst: R² = .471, F(2, 339) = 150.82, p < .001. Die mag dus de deur uit.
d) Hij zakt, maar hij stort niet in: van 87.42 naar 75.28. Vergelijk dat met wat de vin deed — dáár ging dezelfde helling van 87.42 naar 6.05. Naast de vin hield de snavellengte niets over; naast de snaveldiepte houdt hij ruim zesentachtig procent van zijn helling.
e) Ja, allebei ruimschoots. Snavellengte: b = 75.28, SE = 5.97, t(339) = 12.61, p < .001, 95% CI [63.54, 87.03]. Snaveldiepte: b = −142.72, SE = 16.51, t(339) = −8.65, p < .001, 95% CI [−175.19, −110.25]. Geen van beide intervallen bevat nul.
f) r = −.235, tegen .656 voor vin en snavel. Dát is het antwoord op vraag d. Twee voorspellers die elkaar nauwelijks overlappen kunnen allebei hun eigen verhaal vertellen; twee die sterk samenhangen vertellen elkaars verhaal, en dan houdt de zwakste niets eigens over.
g) r(gewicht, snavellengte | snaveldiepte) = .565 — nauwelijks lager dan de gewone .595. En r(gewicht, snaveldiepte | snavellengte) = −.425, tegen een gewone −.472. Vergelijk met de snavel naast de vin: dáár zakte .595 naar .063.
h) Snavellengte uniek (snaveldiepte in blok 1, snavellengte erbij in blok 2): ΔR² = .248, F(1, 339) = 158.97, p < .001. Snaveldiepte uniek (andersom): ΔR² = .117, F(1, 339) = 74.76, p < .001. Allebei substantieel — en vergelijk dat nog één keer met de .001 van de snavel naast de vin.
i) .248 + .117 = .365, terwijl R²(het model met allebei) = .471. Er ontbreekt .106. Dat is het gedeelde stuk: verschil in gewicht dat de twee samen verklaren, maar dat je aan geen van beide alleen kunt toeschrijven. Precies daarom telt zo’n opsplitsing niet netjes op, en precies daarom is “hoe belangrijk is deze voorspeller?” een lastigere vraag dan hij lijkt.
Z) Ja, met de gebruikelijke slag om de arm. De residuen liggen in een vrijwel egale band om nul (geen trechter, dus gelijke spreiding is hier geen probleem) en volgen de rechte lijn in de QQ-plot redelijk. Elke pinguïn is één keer gewogen, dus de waarnemingen zijn onafhankelijk. En de twee voorspellers overlappen maar weinig (r = −.235), dus ze zitten elkaar niet in de weg bij het schatten.
eindopdracht
De afsluiter van het hele hoofdstuk
artikelvorm · methode en resultaten gescheiden · unieke bijdrage
De afsluiter van het hele hoofdstuk. Je brengt allebei de oefeningen samen — het model draaien en beoordelen uit 8.1, de overlap en het wegrekenen uit 8.2 — en je schrijft het op zoals het in een artikel zou staan.
Deze keer voorspel je niet het gewicht maar de vinlengte, uit de twee snavelmaten die je in de taak hierboven al naast elkaar zag staan. Zelfde paar, andere vraag. Zet in JASP de vinlengte als afhankelijke variabele en draai drie modellen: één met alleen de snavellengte, één met alleen de snaveldiepte, en één met allebei.
En let op de vorm: een artikel valt in twee gelabelde stukken, en die volgorde is niet dezelfde als de volgorde waarin je het leerde. Toen mocht de aannamecontrole achteraf, want je moest eerst zien wát je nou eigenlijk controleerde. Nu je het opschrijft voor een lezer gaat hij vóórop, want die wil weten of hij je getallen mag geloven vóórdat hij ze leest.
Methode en data-analyse
a) Wat onderzoek je, waarop, en met welke analyse? Schrijf het op zonder één uitkomst te noemen. (twee of drie zinnen; wie of wat er gemeten is, hoeveel, en welke analyse)
b) Hoeveel pinguïns houd je over als je alle drie de maten compleet moet hebben, en hoeveel staan er in het bestand? (twee getallen, en waarom dat er hier toe doet als je straks modellen van elkaar aftrekt)
c) Loop de aannames na en schrijf ze op als data-analyse-alinea: liggen de residuen symmetrisch, is de spreiding van de residuen ongeveer gelijk over het bereik, telt elke pinguïn maar één keer mee, en zitten de twee voorspellers elkaar in de weg? (vier korte uitspraken, elk met het getal waar je hem op baseert)
Resultaten
d) Toets het model als geheel. (rapporteer R², F(df1, df2) en p, en zeg wát je verwerpt)
e) Rapporteer allebei de voorspellers apart. (per voorspeller b, SE, t, p en het 95%-interval)
f) Hoeveel voegt elk van de twee uniek toe? (twee ΔR²’s met hun F-toets)
g) Tel de twee losse R²’s bij elkaar op en vergelijk met de R² van het volle model. En tel daarna de twee unieke bijdragen op en vergelijk óók. Wat valt je op aan de twee verschillen? (twee sommen en één getal dat je twee keer tegenkomt)
h) Reken allebei de partiële correlaties uit met het residuen-recept. Vergelijk ze met de gewone correlaties. (vier getallen)
i) Hier zit een valkuil, en hij is de moeite waard. Kwadrateer de partiële correlatie van de snavellengte en vergelijk met de unieke bijdrage die je bij f) uitrekende. Waarom lopen die twee zo ver uiteen, terwijl ze bij een vluchtige blik hetzelfde lijken te meten? (twee getallen, en twee zinnen)
j) Schrijf de resultaten-alinea uit, in rapportagevorm, met alle drie de lagen erin. (hele zinnen, verleden tijd, symbolen cursief)
Z) Mag je alles hierboven geloven? Je hebt de aannames bij c) al nagelopen — dus nu de vraag die erachteraan hoort: stel dat de spreiding van de residuen duidelijk ongelijk was geweest, welke van je antwoorden hierboven doe je dan over, en welke mogen blijven staan?
Methode en data-analyse
a) Bijvoorbeeld: “Bij 342 pinguïns van drie soorten onderzochten we of de vinlengte samenhangt met de twee snavelmaten. We voorspelden de vinlengte met een meervoudige regressie uit de snavellengte en de snaveldiepte samen, en bepaalden per voorspeller de unieke bijdrage aan de verklaarde variantie.” Geen enkel getal uit de uitkomsten — dat is de toets waaraan je ziet of de scheiding echt is.
b) 342 van de 342 rijen in het bestand zijn compleet op alle drie de maten; er valt er geen weg. Dat doet ertoe omdat je bij f) modellen van elkaar aftrekt, en twee modellen die op verschillende pinguïns draaien mag je niet van elkaar aftrekken. Was er wél iets weggevallen, dan had je alle modellen op dezelfde volledige rijen moeten draaien.
c) De residuen liggen symmetrisch: gemiddelde min mediaan is −0.005 standaardafwijking, dus praktisch nul. De spreiding is over het bereik ongeveer gelijk: bij de laagste helft van de voorspelde waarden is de standaardafwijking van de residuen 8.24 mm, bij de hoogste helft 8.96 mm — een verhouding van 0.92, geen trechter. Elke pinguïn is één keer gemeten, dus de waarnemingen zijn onafhankelijk. En de twee voorspellers overlappen nauwelijks, r = −.235, dus ze zitten elkaar niet in de weg bij het schatten.
Resultaten
d) R² = .63, F(2, 339) = 283.63, p < .001. Wat je verwerpt is de nulhypothese dat dit model — de twee snavelmaten samen — niets van de verschillen in vinlengte verklaart.
e) Snavellengte: b = 1.41 mm vin per mm snavel, SE = 0.09, t(339) = 16.07, p < .001, 95% CI [1.24, 1.59]. Snaveldiepte: b = −3.24, SE = 0.24, t(339) = −13.31, p < .001, 95% CI [−3.72, −2.76]. Allebei ruimschoots significant, en geen van beide intervallen bevat nul.
f) Snavellengte uniek: ΔR² = .285, F(1, 339) = 258.33, p < .001. Snaveldiepte uniek: ΔR² = .195, F(1, 339) = 177.05, p < .001. Anders dan bij de snavellengte naast de vinlengte in 8.1 houden ze hier allebei fors iets eigens over.
g) Naïef opgeteld: .431 + .341 = .771, terwijl het volle model op .626 uitkomt. (Tel je de gedrukte cijfers op, dan krijg je .772. Reken met de onafgeronde waarden — .4306 en .3409 — en het is .771. Dat verschil van één duizendste is afronding en niets anders.) Je telde .146 te veel. Unieke bijdragen opgeteld: .285 + .195 = .480, tegen diezelfde .626. Nu kom je .146 te kort. Dat is twee keer hetzelfde getal, en dat is geen toeval: het gedeelde stuk wordt in de eerste optelling dubbel geteld en in de tweede helemaal niet.
h) r(vinlengte, snavellengte) = .656 gewoon, en .658 partieel. r(vinlengte, snaveldiepte) = −.584 gewoon, en −.586 partieel. Ze bewegen vrijwel niet.
i) .658² = .43, terwijl de unieke bijdrage bij f) .285 was. Wie de partiële correlatie kwadrateert, concludeert dus dat de snavellengte niets verloor — terwijl er .146 gedeeld bleek. De oorzaak staat in het kader hierboven, maar nu vergeleken met de gewone correlatie in plaats van met elkaar. Ga je van de gewone naar de partiële, dan haal je de snaveldiepte uit allebei de kolommen weg: er valt boven én onder de streep iets af, en de verhouding blijft dus vrijwel staan. Ga je van de gewone naar de semi-partiële, dan haal je hem alleen uit de voorspeller: er valt alleen bovenaan iets af, en het getal zakt — van .656 naar .534. En de sémi-partiële is het die je kwadrateert: .534² = .285, precies de ΔR² uit f).
Die .534 maak je met hetzelfde recept als in het kader, maar dan met het gewicht vervangen door de vinlengte: cor(peng$vinlengte, resid(lm(snavellengte ~ snaveldiepte, data = peng))). Dit is een mooi geval om te onthouden, want hier lijkt er niets aan de hand en is er tóch bijna een kwart van de verklaarde ruimte gedeeld.
j) Bijvoorbeeld:
Het model als geheel verklaarde een groot deel van de verschillen in vinlengte, R² = .63, F(2, 339) = 283.63, p < .001. Bij gelijke snaveldiepte ging elke millimeter langere snavel samen met ruim anderhalve millimeter langere vin, b = 1.41, SE = 0.09, t(339) = 16.07, p < .001, 95% CI [1.24, 1.59]; bij gelijke snavellengte ging elke millimeter diepere snavel samen met ruim drie millimeter kórtere vin, b = −3.24, SE = 0.24, t(339) = −13.31, p < .001, 95% CI [−3.72, −2.76]. Beide voorspellers droegen ook uniek bij: de snavellengte ΔR² = .29, F(1, 339) = 258.33, p < .001, en de snaveldiepte ΔR² = .20, F(1, 339) = 177.05, p < .001.
Z) Was de spreiding van de residuen duidelijk ongelijk geweest, dan blijven staan: de hellingen bij e) en de ΔR²’s bij f) en g). Dat zijn beschrijvingen van deze 342 pinguïns, en daar verandert geen aanname iets aan. Doe je over: alle standaardfouten, en daarmee elke t, elke p, elk interval bij e) en elke F bij d) en f). Die rusten allemaal op één gedeelde restspreiding, en die is er dan niet. De conclusie bij j) gaat dus mee terug — je weet dan nog steeds hoe groot het verband is, maar niet meer hoe zeker.
rapportage
Schrijf een weggerekend verband op
partiële correlatie in een zin · gecontroleerd voor · gedeelde variantie
Een partiële correlatie schrijf je op als een gewone correlatie, met één zinsdeel erbij: wát je hebt vastgehouden. Dat zinsdeel is niet optioneel. Zonder dat weet je lezer niet welk getal hij voor zich heeft, en de twee kunnen ver uiteen liggen — in dit hoofdstuk .60 tegenover .06.
De partiële correlatie tussen het gewicht en de snavellengte, gecontroleerd voor de vinlengte, was r = .06, tegen een gewone correlatie van r = .60.
Drie dingen zitten erin, en alle drie met opzet. Er staat wat er gecontroleerd is, niet alleen dát er iets gecontroleerd is. De gewone correlatie staat ernaast, want zonder die vergelijking is .06 alleen maar een klein getal en niet een verhaal over waar .60 gebleven is. En de r leunt schuin terwijl de woorden rechtop staan, zoals bij elk symbool dat zelf een waarde draagt.
Eén ding dat je hier níét moet doen: het gedeelde stuk aan iemand toeschrijven. Je mag opschrijven dat twee voorspellers samen R² = .471 halen en dat elk er respectievelijk .248 en .117 uniek aan bijdraagt. Je mag er niet bij zeggen dat de overige .106 “van allebei een beetje” is, of hem netjes in tweeën delen. Die .106 is verschil in gewicht dat de twee samen verklaren en dat aan geen van beide alleen toe te schrijven is — dat is geen tekortkoming van je rapportage maar een eigenschap van de data. Schrijf hem dus op als wat hij is: gedeeld.
Dat is meteen waarom de vraag “welke van mijn voorspellers is het belangrijkst?” zoveel lastiger is dan hij klinkt. Op de unieke bijdrage kun je ze rangschikken, en dat doen onderzoekers ook — maar wat gedeeld is doet in die rangschikking niet mee, en dat kan een flink stuk zijn.
◠ Zelfde vorm in het boek
Hier: de derde speler die zich vermomde als een stuk van het snavel-effect, de partiële correlatie die vangt wat er overblijft als je hem wegrekent, en het gedeelde stuk dat van geen van beide voorspellers is.
In het boek: W8 — Meer dan één verschil
Daar draait het niet om méér knoppen, maar om dezelfde vraag als bij die correlatie-wolk: wat blijft er van een verband over als je vasthoudt wie er nog meer meepraat?
