Tweede beweging · Verschillen koppelen
Oefening 3.2 · Enkelvoudige regressie
Eén continue voorspeller, één rechte lijn, en wat de richting kost · simple linear regression
In deze oefening
Data bij deze oefening — penguins.csv 342 pinguïns · diamantjes.csv de twaalf steentjes uit het boek · wat elke kolom betekent
prikkel
Vijftig gram, of een honderdste millimeter?
helling · eenheden · richting van de vraag
Dezelfde 342 pinguïns als in de vorige oefening, dezelfde twee kolommen: vinlengte in millimeters, gewicht in grammen. En nu twee getallen, allebei netjes uitgerekend, allebei op dezelfde data.
Vraag je hoe het gewicht meeloopt met de vinlengte, dan komt eruit: 49.69 gram per millimeter. Een pinguïn met een millimeter meer vin weegt bijna vijftig gram meer.
Vraag je het andersom — hoe de vinlengte meeloopt met het gewicht — dan komt eruit: 0.01528 millimeter per gram.
Twee getallen over hetzelfde stel beesten. En als ze hetzelfde zeiden, dan zou het ene het andere ondersteboven moeten zijn. Doe het even met ronde getallen: vijftig gram per millimeter is precies hetzelfde bericht als een vijftigste millimeter per gram, oftewel 0.02. Heen delen door, terug delen door — dezelfde verhouding, andere kant op gelezen.
Reken het dan maar na met de echte getallen: 1 / 0.01528 komt uit op 65.45.
En 65.45 is niet 49.69. Er zit ruim vijftien gram per millimeter tussen, en dat gat is er niet in geslopen — het staat er omdat er onderweg iets besloten is. Bij de correlatie van de vorige oefening had je dat kunnen omdraaien zonder dat er iets gebeurde: de samenhang tussen snavellengte en snaveldiepte is hetzelfde getal, welke van de twee je ook vooropzet.
Hier niet. Trek even mee: we gaan uitzoeken wát er besloten wordt, wie het besluit neemt, en wat het kost.
speel het
Trek de lijn in SPSS
regressielijn · intercept · helling · voorspelde waarde
Een lijn door een wolk — je hebt hem in de vorige oefening al zien liggen. Nu ga je hem lézen. Ben stelt daarvoor in de les een vraag die het meteen klein maakt: als je aan iemand die het plaatje niet ziet moet vertellen hoe dat lijntje loopt, hoeveel dingen moet je dan zeggen? Twee. Waar hij begint, en hoe schuin hij is. Meer heeft een rechte lijn niet.
Die twee hebben een naam. Het intercept (b0) is waar de lijn de verticale as snijdt. De helling (b1) is hoeveel de uitkomst verandert als de voorspeller één eenheid opschuift. In SPSS staan ze onder elkaar in de tabel Coefficients, in de kolom B: eerst de rij (Constant), dan de rij met de naam van je voorspeller.
- Open
diamantjes.csv. - Analyze → Regression → Linear.
- Sleep
glansnaar Dependent enkaraatnaar Independent(s). OK.
REGRESSION
/STATISTICS COEFF R ANOVA
/DEPENDENT glans
/METHOD=ENTER karaat.
In Coefficients lees je in de kolom B: (Constant) −1.43 en karaat 32.14. In Model Summary staat R Square = .334 en Std. Error of the Estimate = 18.61.
En kijk nu meteen naar wat SPSS je daar liet doen. Je hebt glans in een vak gesleept dat Dependent heet, en karaat in een vak dat Independent heet. Dat waren twee verschillende vakken, en je moest kiezen. Die keuze is geen opmaak — hij ís waar deze oefening over gaat.
De lijn leest dus: glans = −1.43 + 32.14 × karaat. Een steentje van één karaat zwaarder glanst ruim tweeëndertig punten meer.
Nu jij — bij de pinguïns, die je uit de vorige oefening al kent. Bekende beesten, nieuwe vraag: als je van een pinguïn alleen de vin kunt meten, wat gok je dan voor zijn gewicht?
- Open
penguins.csv: File → Open → Data, bestandstype op CSV. - Analyze → Regression → Linear.
gewichtnaar Dependent,vinlengtenaar Independent(s). OK.- Voor de wolk met de lijn erin: Graphs → Chart Builder → Scatter/Dot → Simple Scatter, en dubbelklik daarna in de output op het plaatje → Add Fit Line at Total.
REGRESSION
/STATISTICS COEFF R ANOVA CI(95)
/DEPENDENT gewicht
/METHOD=ENTER vinlengte.
Daar staat hij: gewicht = −5780.83 + 49.69 × vinlengte. Elke millimeter vin erbij is bijna vijftig gram erbij, en R² = .76 zegt dat driekwart van het verschil in gewicht langs de vinlengte loopt. Dat is voor levende dieren veel. De Std. Error of the Estimate van 394.28 gram is hoe ver de lijn er gemiddeld naast zit.
En nu kun je iets wat je in de vorige oefening niet kon: een getal geven aan een pinguïn die je niet gewogen hebt. Vul een vinlengte in en de lijn spuugt een gewicht uit. Met de hand, want dit is optellen en vermenigvuldigen:
−5780.83 + 49.69 × 200 = 4157.17 gram
Reken je met de onafgeronde getallen die SPSS intern gebruikt, dan komt er 4156.28 uit — 0.89 gram verschil, en dat verschil is het afronden zelf. Onthoud dat, want straks doet afronden iets veel ergers.
Ben noemt dat in de les een machientje, een fabriek: er komt iets in, de fabriek vermenigvuldigt het met de helling, telt het intercept erbij op, en spuugt het uit. En let op waar je begint — je begint bij de vinlengte, en het gewicht rolt eruit. Niet andersom.
Doe het nu expres verkeerd
Want dat is de zet van deze oefening. Draai de twee variabelen om — sleep ze letterlijk in elkaars vak — en kijk wat er gebeurt.
- Zelfde analyse, maar nu
vinlengtenaar Dependent engewichtnaar Independent(s). - Lees Coefficients opnieuw, en Model Summary erbij.
REGRESSION
/STATISTICS COEFF R ANOVA
/DEPENDENT vinlengte
/METHOD=ENTER gewicht.
Er staat nu (Constant) 136.73 en gewicht .01528. Reken die helling ondersteboven — 1 / 0.01528 — en je krijgt 65.45. Niet 49.69.
En let meteen op iets aan dat schermgetal. SPSS drukt de helling af als .01528, zonder nul ervoor. Die nul hoort daar wél te staan: een helling kan voorbij de 1 komen, en dan zegt die nul iets. SPSS laat hem overal weg, ook waar het fout is. Schrijf hem dus zelf terug: 0.01528. Verderop bij de rapportage staat waarom dat bij R Square niet hoeft en hier wel.
Kijk tegelijk naar Model Summary: R Square is nog steeds .759, tot op de laatste decimaal. En vraag je via Analyze → Correlate → Bivariate de correlatie op, dan is die beide kanten op r = .87.
Die drie regels spreken elkaar schijnbaar tegen. De correlatie is beide kanten op hetzelfde getal. R Square is beide kanten op hetzelfde getal. En de lijn is het niet.
Doe hetzelfde op de diamantjes en het gebeurt weer: met karaat als Dependent komt er een helling van 0.01038 karaat per glanspunt uit — de nul er weer zelf bij — en één gedeeld door dat getal is ruim 96 — terwijl de lijn van glans op karaat 32.14 zei. Geen toeval dus, en geen eigenaardigheid van pinguïns.
schud het
Is die 49.69 echt, of kan toeval hem namaken?
schudden · loskoppelen · duizend werelden rond nul
Voor we uitzoeken wát er besloten is, eerst de vraag die altijd eerst komt: is die helling er wel? Bijna vijftig gram per millimeter klinkt als veel, maar een getal klinkt nergens naar tot je weet hoe groot een gewone wiebel is.
Dus schudden we. Je laat de vinlengtes staan waar ze staan en hutselt de gewichten erlangs — het gewicht van de ene pinguïn verhuist naar de vin van een andere.
Dat husselen is de hele truc, en het loont om er even bij stil te staan: je koppelt het gewicht los van zijn eigen vin. Je haalt met eigen handen weg dat een bepaalde vinlengte en een bepaald gewicht bij hetzelfde dier hoorden. In zo’n losgekoppelde wereld kán er geen echte helling meer zijn — en dus is elke helling die je er dan tóch nog in meet, per definitie puur toeval.
En hier moet ik eerlijk zijn: dat husselen is geen knop in SPSS. SPSS rekent één keurige uitkomst uit; duizend keer opnieuw hutselen en kijken is werk voor code. Maar voor déze zet hoef je nergens heen — het schud-speeltje van de vorige oefening doet precies wat hier nodig is:
▶ Zie het dansen: het schud-speeltje
Dat speeltje schudt de correlatie, niet de helling — en dat mag, want onder schudden zijn het hetzelfde. Husselen verandert niets aan de spreiding van de vinlengtes en niets aan die van de gewichten; alleen wie bij wie hoort verandert. Omdat b1 = r · Sy/Sx, en die breuk dus vastligt, is de dans van de helling exact de dans van r — alleen met een andere maatverdeling op de as. Nagerekend over duizend geschudde werelden: het verschil tussen beide is 3 × 10−14, oftewel machineruis.
Wat je ziet: duizend werelden die dansen rond nul. Rond nul, want in elke geschudde wereld is de band tussen vin en gewicht doorgeknipt, en een lijn door een wolk zonder samenhang ligt plat. Toch landt hij nooit precies op nul: negentig procent van de losgekoppelde werelden ligt tussen −5.21 en 4.95 gram per millimeter, en de wildste haalde 10.90. En dan de echte helling van 49.69 — ruim vier keer voorbij de wildste. Geen enkele van de duizend kwam in de buurt. Dat is geen p-waarde die je moet geloven, maar een afstand die je zíet.
En er is nog een tweede vraag, die je alleen in dit blok kunt stellen: wat doen die twee lijnen in een geschudde wereld — komen ze dichter bij elkaar, of gaan ze verder uit elkaar? Wie dat zelf wil narekenen slaat het R-broertje open bij deze oefening; daar is het vijf regels code. De uitkomst: bij de echte pinguïns schelen de twee lijnen een factor 1.32, in een geschudde wereld doorgaans 735. Knip het verband door en de twee lijnen staan bijna haaks op elkaar; laat het verband intact en ze kruipen naar elkaar toe. Hoe verder ze uit elkaar liggen, hoe minder de een over de ander te zeggen heeft — en dat is geen beeldspraak, zoals je zo ziet.
snap het
Wie voorspelt wie
afhankelijke variabele · onafhankelijke variabele · lege adres · centreren
Nu de namen, en pas nu — je hebt het verschijnsel al in je handen gehad. Sterker nog: SPSS heeft je de vraag letterlijk gesteld, en jij hebt hem beantwoord met je muis.
De variabele die je invult heet de onafhankelijke variabele, ook wel de voorspeller; in SPSS is dat het vak Independent(s). De variabele die eruit rolt heet de afhankelijke variabele, ook wel de uitkomst; dat vak heet in SPSS dan ook gewoon Dependent. Ben zegt erbij: x is het begin — zie dat als oorzaak, ook al mag je dat nooit zo noemen — en y is het gevolg. Die twee halve zinnen horen bij elkaar. De pijl zit in je hoofd en in je vraag, niet in de data.
Want dat is wat de omdraai-proef liet zien. De correlatie kon je omdraaien zonder dat er iets veranderde: r = .87 heen, r = .87 terug. Die maat is symmetrisch — hij kent geen richting, dus hij dwingt je ook nergens toe. Een regressielijn is dat niet. Door gewicht in het Dependent-vak te slepen heb je gezegd: de vinlengte weet ik, het gewicht wil ik weten. Sleep je ze andersom, dan stel je een andere vraag, en een andere vraag geeft een ander antwoord.
En dan de vraag die vanzelf komt: welke van de twee lijnen is nou de goeie? Geen van beide, en allebei. Wil je het gewicht schatten van een pinguïn waarvan je de vin gemeten hebt, dan is 49.69 de goeie. Wil je de vin schatten van een pinguïn die op de weegschaal staat, dan is 0.01528 de goeie. Er is geen derde lijn die “het echte verband” is en waar deze twee benaderingen van zijn.
De twee hellingen weten samen precies hoe goed de lijn is
En nu iets wat je zelf kunt doen, met twee getallen die al op deze bladzij staan. Je hebt de helling heen (49.69) en de helling terug (0.01528). Vermenigvuldig ze met elkaar: 49.69 × 0.01528 = 0.759, oftewel .76.
Dat is R². Niet ongeveer — dat is ’m.
Doe het nog twee keer, op de andere modellen die je nu hebt liggen:
| lijn | helling heen | helling terug | die twee maal elkaar | R² |
|---|---|---|---|---|
| gewicht op vinlengte | 49.69 | 0.01528 | .76 | .76 |
| glans op karaat | 32.14 | 0.01038 | .33 | .33 |
| snaveldiepte op snavellengte | −0.0850 | −0.6498 | .06 | .06 |
Drie keer raak. En het is geen toeval: het volgt uit de brug die het boek in dit hoofdstuk legt. Heen is de helling r · Sy/Sx, terug is r · Sx/Sy — dezelfde r, en de twee spreidingen precies omgekeerd. Vermenigvuldig ze en de spreidingen vallen tegen elkaar weg. Er blijft r × r over, en dat is R².
En daarmee weet je ook waaróm die twee lijnen uit elkaar liggen zoals ze doen. Deel de omgekeerde helling door de heen-helling — 65.45 gedeeld door 49.69 — en je krijgt 1.32. Bij de diamantjes komt daar 3.00 uit, bij de snavels 18.10. Dat is telkens één gedeeld door R²: hoe kleiner het deel dat de lijn dekt, hoe verder de twee richtingen uiteen gaan liggen.
Daar zit de eigenlijke les van dit blok in. Hoe sterker het verband, hoe minder je keuze uitmaakt. Bij de pinguïns dekt de lijn driekwart van het verschil, en dan schelen de twee richtingen maar een derde. Bij de snavels dekt hij ruim vijf procent, en dan schelen ze een factor achttien. Zou R² ooit precies 1 zijn, dan vallen de twee lijnen samen en is er niets meer te kiezen — maar dan liggen alle punten ook exact op één lijn en heb je geen statistiek meer nodig. Kiezen moet je juist dáár waar het rommelig is.
Probeer 1 / R² maar eens met de getallen uit de tabel hierboven, en kijk wat er gebeurt. Neem de snavels: daar staat R² = .06, en één gedeeld door .06 is 16.67 — terwijl er 18.10 hoort te staan. Bijna anderhalf ernaast. Bij de diamantjes gaat hetzelfde mis, kleiner: 1 / .33 is 3.03 en niet 3.00.
Het afgeronde getal is te grof om de déling nog te dragen. Bij de vermenigvuldiging gebeurt dat niet — 32.14 × 0.01038 geeft gewoon .33, en −0.0850 × −0.6498 geeft .06. Vandaar dat dit blok de proef op de vermenigvuldiging legt en niet op de deling: een gelijkheid die alleen overeind blijft bij ongeronde getallen, is er een die je in een oefening niet moet opgeven.
Dat is dezelfde scheefte als die 0.89 gram van daarnet, maar dan een stuk duurder. Wil je 18.10 zelf zien, deel dan de hellingen (1 / −0.6498 gedeeld door −0.0850) en niet de R².
Het lege adres
Kijk nog eens naar de rij (Constant) van de pinguïnlijn: −5780.83. Neem dat letterlijk. Een pinguïn met een vin van nul millimeter weegt volgens deze lijn min 5.8 kilo.
Dat is geen rekenfout en geen slechte lijn. Het is een adres waar niemand woont — en hier zelfs een adres dat niet kán bestaan. De kortste vin in dit bestand is 172 millimeter, de langste 231. Nul ligt honderdzeventig millimeter buiten alles wat er ooit gemeten is; de lijn is daar netjes doorgetrokken, maar niemand heeft er ooit gekeken.
Ben zegt daarover: het intercept is altijd te interpreteren als de voorspelling voor iemand die nul scoort op de voorspeller. Dat is altijd waar. Alleen de vraag is: wat betekent die nul? Hier betekent nul: een pinguïn zonder vin. Dus is het intercept waar én waardeloos, tegelijk.
Er is één handeling die dat repareert, en meer dan een aftreksom is het niet. Centreren: trek van elke vinlengte het gemiddelde af, zodat nul niet meer “geen vin” betekent maar “een gemiddelde vin”.
- Vraag eerst het gemiddelde op: Analyze → Descriptive Statistics → Descriptives,
vinlengteerin. Er staat 200.92. - Transform → Compute Variable. Doelvariabele
vin_gecentreerd, uitdrukkingvinlengte - 200.92. OK. - Draai de regressie opnieuw, met
gewichtals Dependent envin_gecentreerdals Independent.
DESCRIPTIVES VARIABLES=vinlengte
/STATISTICS=MEAN.
COMPUTE vin_gecentreerd = vinlengte - 200.92.
EXECUTE.
REGRESSION
/STATISTICS COEFF R ANOVA
/DEPENDENT gewicht
/METHOD=ENTER vin_gecentreerd.
Kijk wat daar gebeurt. Het intercept is nu 4201.75, en dat is tot op de cent het gemiddelde gewicht van alle 342 pinguïns — vraag het maar na met Descriptives.
Dat is geen gelukje. Een regressielijn gaat altijd door één vast punt: het kruispunt van de twee gemiddelden — gemiddelde vin, gemiddeld gewicht. Verschuif je de nul naar de gemiddelde vin, dan schuift dat kruispunt precies op de verticale as, en dus lees je daar het gemiddelde gewicht af. Gemiddelde erin, gemiddelde eruit.
Het adres is bewoond geraakt: waar eerst een onmogelijk dier stond, staat nu de doorsnee-pinguïn. De helling is niet bewogen (nog steeds 49.69), R Square is niet bewogen (nog steeds .759), geen enkele voorspelling is bewogen — je hebt alleen de nul verschoven naar een plek waar iemand woont.
Dat is alles wat centreren doet, en in dit boek kom je het nog twee keer tegen: bij de meervoudige regressie als handeling, en bij de interactie als vaste gewoonte. Hier is het genoeg om het één keer te hebben zien gebeuren.
Eén woord, en zo meteen twee betekenissen
Nog even dit, want je loopt er in de volgende oefening tegenaan. Je hebt hier geleerd dat de voorspeller de onafhankelijke variabele heet. In de oefening hierna staat dat de residuen onafhankelijk moeten zijn — en dat is iets heel anders. Daar gaat het niet over een variabele maar over je rijen: geeft elke regel in je tabel informatie die niet al ergens anders staat, of meet je dezelfde persoon of dezelfde plek twee keer?
Hetzelfde woord, twee betekenissen, twee oefeningen uit elkaar. Zet het hier vast, dan hoef je straks niet te twijfelen.
En dan het stuk dat deze lijn nog schuldig is. Je hebt hem getrokken, gelezen en omgedraaid — maar je hebt nog nergens gekeken hoe ver hij er per pinguïn naast zit, en of hij er overal even ver naast zit. Dat is de volgende oefening.
jouw beurt
Schrijf de lijn op als een onderzoeker
rapportage van een regressie · APA-notatie · betrouwbaarheidsinterval
Bij het gemiddelde was het een boodschappenlijstje van twee getallen; bij de correlatie kwam er één getal bij. Een regressiezin is dezelfde lijst, iets langer: wát je voorspelde, uit wát, bij hoeveel beesten, hoe steil, hoe zeker, en hoeveel het dekt. De standaardfout staat in Coefficients onder Std. Error; het interval krijg je met Statistics → Confidence intervals, of in syntax met CI(95) achter /STATISTICS.
We voorspelden het gewicht van de pinguïns uit hun vinlengte (N = 342). Elke millimeter vin ging samen met 49.69 gram meer gewicht, b = 49.69, SE = 1.52, 95% CI [46.70, 52.67]. Het model dekte ruim driekwart van het verschil in gewicht, R² = .76.
Let op de kleine lettertjes.
- Cursief gaat wat zélf een waarde draagt: N, b, SE, R². De woorden eromheen staan rechtop — juist zó zie je wat APA schuin zet.
95% CIblijft rechtop, want die letters benoemen alleen wat er tussen de haken staat; ze dragen zelf geen getal. Er staat een spatie tussen de grenzen, geen koppelteken.- R² krijgt geen nul vóór de punt: .76, niet 0.76. Die maat kan niet voorbij de 1, dus die nul heeft niets te melden. De helling b = 49.69 kan dat wél, en houdt zijn nul dus gewoon — zie de SE van 0.02 hieronder.
- En hier moet je SPSS níét naschrijven. SPSS laat de nul vóór de punt overal weg: bij R Square (
.759), maar net zo goed in de kolom B, waar je.01528ziet staan. Bij R Square valt dat toevallig samen met de APA-regel; bij een helling is het gewoon fout, want die kan wél voorbij de 1. Het programma volgt dus geen regel, het strookt zijn getallen. Zet die nul zelf terug waar hij hoort. - Twee decimalen, overal — ook waar het scherm er meer gaf. SPSS toonde .759; in je zin staat .76.
- Verleden tijd: je vertelt wat je gedaan en gevonden hebt.
- En hij noemt de steekproef, de uitkomst én de voorspeller, zodat je hem uit deze opdracht kunt tillen en hij nog klopt.
Eén ding dat je hier bewust niet schrijft: “vinlengte voorspelt gewicht” als kale bewering, alsof de pijl in de pinguïns zit. Hij zit in je vraag. Wat je opschrijft is wat je gedaan hebt.
Jouw beurt: schrijf zo’n zin voor de snavellijn uit de taak hierboven (b = −0.09, SE = 0.02, 95% CI [−0.12, −0.05], R² = .06, N = 342). En zet er de zin bij die je in de vorige oefening leerde schrijven — die over de drie soorten. Zonder die tweede zin staat er iets wat niet waar is.
◠ Zelfde vorm in het boek
Hier: de lijn getrokken en gelezen, en de proef die laat zien dat er een richting gekozen is.
In het boek: W4 — Hangen ze samen?
Daar krijgt de lijn zijn twee getallen en zijn brug naar r; hier merk je wat er gebeurt als je de vraag omdraait — en wat het intercept betekent op een plek waar niemand woont.