Derde beweging · Verschil op de proef

Oefening 4.1 · Steekproevenverdeling en standaardfout

Steekproevenverdeling en standaardfout · sampling distribution & standard error

Data bij deze oefeningpenguins.csv 342 pinguïns · diamantjes.csv de twaalf steentjes uit het boek · wat elke kolom betekent

prikkel

Eén keer kennen we de hele waarheid

populatie · steekproef · echt gemiddelde en spreiding

Zet alle 342 pinguïns bij elkaar in één reusachtige grabbelton. Vandaag doen we iets wat in het echt nooit kan: we spreken af dat dít de hele wereld is. Geen pinguïn daarbuiten. Deze 342 zijn samen onze populatie, en dus kennen we — voor één keer — de hele waarheid: het échte gemiddelde gewicht is 4202 gram, de échte spreiding 802 gram.1

Normaal weet niemand dat. Een onderzoeker op een kale rots weegt er geen 342 maar, zeg, dertig — en moet het daarmee doen. En nu de vraag die jeukt: steek jij je arm in die ton en grabbel je er dertig pinguïns uit, komt jouw gemiddelde dan op 4202? Vast niet precies. Maar hoe ver zit je ernaast — tien gram, honderd gram, vijfhonderd? En, dit is de eigenlijke vraag van deze opdracht: kun je dat te weten komen zonder de ton leeg te tellen?

speel het

Reken de standaardfout uit in R

formule SD/√n · wiebel van het gemiddelde

OpmerkingEerst zoals in het boek — de twaalf diamantjes
d <- read.csv("diamantjes.csv")

# hoe ver de steentjes zelf uit elkaar liggen
sd(d$glans)                        # → 21.74

# hoe ver een GEMIDDELDE van twaalf nog wiebelt
sd(d$glans) / sqrt(nrow(d))        # → 6.28
library(dplyr)
d <- read.csv("diamantjes.csv")

# spreiding en standaardfout naast elkaar
d |> summarise(sd = sd(glans),
               se = sd(glans) / sqrt(n()))

De steentjes zelf spreiden met SD = 21.74, maar het gemiddelde van twaalf steentjes wiebelt veel minder: SE = 6.28. Dat onderscheid is de kern van dit hoofdstuk.

Nu jij — weer de pinguïns, dezelfde beesten als eerder. Kijk wat 342 in plaats van 12 met die standaardfout doet.

Eerst de waarheid vastzetten, dan grabbelen. Haal de ton binnen en kijk wat we hebben.

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

mean(peng$gewicht)               # → 4202 gram, het echte gemiddelde
sd(peng$gewicht)                 # → 802 gram, de echte spreiding
sd(peng$gewicht) / sqrt(30)      # → 146 — de standaardfout (SE) bij n = 30

De eerste twee getallen ken je: het gemiddelde en de standaardafwijking — hoeveel pinguïns onderling verschillen (en dat is nogal wat: de lichtste weegt 2700 gram, de zwaarste 6300). Maar dat derde getal is nieuw, en het beweert iets brutaals. De formule SD/√n zegt: trek je een steekproef van dertig, dan wiebelt jouw steekproefgemiddelde met zo’n 146 gram rond de waarheid. Eén regeltje rekenwerk, en het dúrft te voorspellen hoe fout je gaat zitten — nog vóór je ook maar één keer gegrabbeld hebt.

Dat vraagt om controle. Geloof jij het? Ik pas als ik het gezien heb.

schud het

Grabbel duizend keer uit de ton

simulatie · steekproevenverdeling · standaardfout

Even opletten, want schudden betekent hier iets ánders dan je van de andere opdrachten gewend bent. Daar maken we de data expres kapot — kolommen van elkaar loskoppelen, zodat wat overblijft alleen toeval kan zijn: duizend werelden die dansen rond nul. Vandaag breken we niks en knippen we niks los. Er is geen nul-wereld nodig, want we hebben iets veel zeldzamers: de waarheid zelf, daar in de ton. Vandaag betekent schudden gewoon grabbelen — en nog eens, en nog eens: duizend keer doen wat een onderzoeker maar één keer mag. Pak er één, weeg ’m, gooi ’m terug in de ton. Dertig keer. Noteer het gemiddelde van die dertig, en dan weer van voren af aan.

Dat teruggooien is geen slordigheid maar de hele afspraak, en de reden zit in het woord toevallig: leg je de pinguïn terug, dan begint elke greep bij dezelfde ton en heeft de vorige greep niets te zeggen over de volgende. Houd je ’m buiten de ton, dan is de ton na dertig keer niet meer dezelfde ton — en dan hangt jouw greep dus wél af van wat je net trok.

OpmerkingIn R · grabbel duizend keer
pop <- read.csv("penguins.csv")$gewicht

set.seed(42)

# 1000 grabbels van n = 30; elke pinguïn gaat na het wegen terug in de ton
gem <- replicate(1000, mean(sample(pop, 30, replace = TRUE)))

hist(gem)                                        # duizend gemiddelden op een rij
abline(v = mean(pop), col = "red", lwd = 2)      # de waarheid: 4202
sd(gem)                                          # → ± 149, vlak bij die 146

replace = TRUE is níét de standaard — laat je ’m weg, dan trekt R zónder terugleggen en krimpt de wiebel. Zet ’m er dus bij, ook al is het meer typwerk: dan zie je wat er aan staat.

▶ Zie het dansen: het grabbel-speeltje

Kijk naar dat bergje. Duizend steekproeven die dansen rond het echte gemiddelde — geen enkele grabbel landt er precies óp, maar ze zwermen er allemaal strak omheen: vrijwel alle duizend gemiddelden liggen tussen pakweg 3910 en 4510 gram, terwijl de lósse pinguïns van 2700 tot 6300 lopen. Het gemiddelde van dertig wiebelt dus, maar het wiebelt smal.

Die verzameling heeft een naam: de steekproevenverdeling (sampling distribution) — een verdeling niet van pinguïns, maar van gemiddeldes. En haar spreiding, hoe breed de dans is, heet de standaardfout (standard error). Meet je ’m na in de simulatie, dan kom je uit op 149 gram — vlak bij de 146 die de formule beloofde.2 De formule wist het dus echt, zonder één keer te grabbelen.

Dat replace = TRUE kom je nog een keer tegen, en dan doet het iets anders: in Oefening 5.1 trekt de bootstrap ook mét terugleggen, maar dan uit je eigen steekproef in plaats van uit een ton waarvan je de waarheid kent. Zelfde handeling, andere pot — en daar staan alle drie de soorten een keer naast elkaar.

snap het

Wat de standaardfout wél en niet zegt

SE versus SD · wortel n · precisie en vertekening

Wat heb je nu gezien? Drie dingen, elk groter dan het lijkt.

Eén: jouw gemiddelde is één danser uit een dans. Een echte onderzoeker grabbelt één keer en krijgt één getal — ergens in dat bergje. Dat getal is niet “goed” of “fout”; het is één steekproefgemiddelde uit een hele verdeling van mogelijke steekproefgemiddelden. Had het net andere pinguïns getroffen, dan was het net een ander getal geweest. Dat is geen slordigheid, dat is hoe steekproeven wérken.

Twee: de wiebel heeft een maat — en je kunt die kennen zonder de waarheid te kennen. Dit is de eigenlijke magie. In het echt heb je geen ton en geen duizend grabbels; je hebt één steekproef. Maar in die ene steekproef zit een standaardafwijking, en sd/√n geeft je de standaardfout: een eerlijke schatting van hoe hard jóúw gemiddelde wiebelt. Je weet niet wáár de waarheid ligt, maar wél hoe ver je er ongeveer naast kunt zitten. (Op precies dat idee bouwt het betrouwbaarheidsinterval straks zijn huis.)

Drie: de wortel is een gierigaard. Kijk wat er met de standaardfout gebeurt als je de steekproef groter maakt: n = 10 geeft 254 gram, n = 30 geeft 146, n = 100 geeft 80. Vier keer zoveel pinguïns wegen — van 10 naar 40, van 100 naar 400 — halveert de wiebel maar; de SE krimpt met √n, niet met n zelf. Meer meten helpt dus altijd, maar steeds een beetje minder. Wie van 80 naar 40 gram wiebel wil, moet driehonderd pinguïns éxtra vangen.

En twee dingen die de standaardfout níét zegt — dat hoort net zo goed bij het snappen:

  • SE is geen SD. De 802 beschrijft de pinguïns: die blijven gewoon flink van elkaar verschillen, hoe groot je steekproef ook wordt. De 146 beschrijft jóúw onzekerheid over het gemiddelde. Een grote steekproef maakt niet de pinguïns eenvormiger — alleen jouw schatting rustiger.
  • Precies is niet hetzelfde als raak. De standaardfout meet alleen de wiebel van het toeval, niet de scheefheid van je grabbelende hand. Weeg je alleen de tamme, dikke pinguïns die vanzelf naar de weegschaal waggelen, dan krijg je met een enorme steekproef een prachtig smal dansje — strak rond het verkéérde getal. Precisie zegt niets over vertekening.

jouw beurt

Van dertig naar zestig pinguïns

standaardfout bij grotere n · halveren van de wiebel

Grabbel dieper. Je hebt gezien wat n = 30 doet; nu wil ik weten wat er gebeurt als je arm twee keer zo diep gaat. Zet de ton klaar en beantwoord daarna de vragen. De laatste heet Z): de aannames staan altijd achteraan, en die letter is met opzet geen volgletter.

OpmerkingIn R · de ton klaarzetten
pop <- read.csv("penguins.csv")$gewicht

length(pop) hoort 342 te geven. Staat er iets anders, dan lees je een ander bestand dan je denkt.

OpmerkingJouw beurt

a) Laat de formule eerst voorspellen: wat is de standaardfout bij n = 60? (rapporteer SE op twee decimalen)

b) Twee keer zoveel pinguïns als daarnet, maar de wiebel is niet gehalveerd. Deel de SE bij n = 30 door die bij n = 60 en zeg welk getal eruit komt. (één getal, en waar je dat in de formule terugziet)

c) Nu controleren, net als daarnet: grabbel duizend keer met n = 60 en meet de dans na. Zet eerst set.seed(42), en vergeet replace = TRUE niet. (rapporteer de gemeten spreiding van de duizend gemiddelden)

set.seed(42)
gem <- replicate(1000, mean(sample(pop, 60, replace = TRUE)))
sd(gem)

d) Je gemeten waarde ligt naast die van de formule. Mag dat, en aan welke kant hoort hij te liggen? (één zin over waar de speling vandaan komt)

e) Laat replace = TRUE nu eens weg en meet opnieuw. Er komt iets anders uit. Is dát ook speling? (het nieuwe getal, en ja of nee met één zin waarom)

f) In “snap het” staat dat wie van 80 naar 40 gram wiebel wil, driehonderd pinguïns éxtra moet vangen. Geloof me niet — reken de SE bij n = 400 uit. (rapporteer SE)

g) Los nu om: bij welke n geeft SD/√n precies 40? (rekenmachine erbij, het is één som — en zeg hoeveel dieren dat er extra zijn ten opzichte van n = 100)

h) De SD van de pinguïns is 802 gram en de SE bij n = 60 is er een stuk kleiner. Welk van die twee wordt kleiner als je meer pinguïns weegt, en welk niet? (twee zinnen, elk over wat het getal beschrijft)

i) Een collega weegt duizend pinguïns, maar alleen de tamme die vanzelf naar de weegschaal komen waggelen. Zijn standaardfout wordt piepklein. Weet hij het echte gemiddelde nu beter dan jij? (over pinguïns, niet over getallen)

j) Vat samen wat een standaardfout in één zin is, zonder de woorden “standaardfout” en “spreiding” te gebruiken. (één zin, en er moet een gemiddelde in voorkomen)

Z) Mag je alles hierboven geloven? Deze hele oefening leunt op één afspraak die in het echt nooit geldt — kijk terug naar de prikkel en zoek hem op. Vraag je daarnaast af waar de duizend grabbels vandaan komen, en of sample() elke pinguïn even veel kans geeft.

a) SE = 103.53 gram, oftewel afgerond 104. (sd(peng$gewicht) / sqrt(60).)

b) 146.42 / 103.53 = 1.41, en dat is √2. Daar zit de gierigaard: de noemer is √n, dus verdubbel je n, dan deel je de wiebel door √2 en niet door 2. Wil je de wiebel echt halveren, dan heb je vier keer zoveel pinguïns nodig.

c) sd(gem) geeft 105.78, afgerond 106 gram.

d) Ja, dat mag. Je duizend grabbels zijn zélf ook maar een greep, dus de gemeten spreiding schommelt een paar gram rond wat de formule belooft. Aan wélke kant is toeval: hier ligt hij erboven (106 tegen 103.5), bij set.seed(2) en set.seed(99) in de voetnoot juist eronder. Herhaal je de hele simulatie tweehonderd keer, dan komt het gemiddeld op de formule uit.

e) Dan komt er 94.70 uit, afgerond 95 — en nee, dat is geen speling meer. Zonder terugleggen is de ton na elke greep niet meer dezelfde ton, en dan raakt de tweede greep afhankelijk van de eerste. Je komt daardoor stelselmatig lager uit, elke keer, bij elke seed. Speling gaat twee kanten op; dit gaat er maar één.

f) SE = 40.10 gram bij n = 400.

g) Je zoekt de n waarvoor 801.95/√n = 40, dus n = (801.95/40)² = 401.96, oftewel 402 pinguïns. Bij n = 100 was de SE 80.20, dus voor die ene halvering komen er 302 dieren bij. De wortel deelt niet uit, die beknibbelt.

h) De SD van 802 beschrijft de pinguïns zelf, en die blijven onderling even veel verschillen hoe vaak je ook weegt — die krimpt dus niet. De SE beschrijft hoe hard jóúw gemiddelde wiebelt, en die krimpt wél. Een grotere steekproef maakt niet de pinguïns eenvormiger, alleen jouw schatting rustiger.

i) Nee. Zijn standaardfout meet alleen de wiebel van het toeval, niet de scheefheid van zijn grijpende hand. Tamme pinguïns zijn waarschijnlijk niet de gemiddelde pinguïn, dus hij krijgt een prachtig smal dansje strak rond het verkéérde getal. Precies is niet hetzelfde als raak, en de standaardfout kan het verschil niet zien.

j) Bijvoorbeeld: “Het is hoe ver een gemiddelde van deze omvang er gewoonlijk naast zit.” Of: “Het zegt hoeveel jouw gemiddelde zou zijn opgeschoven als je toevallig andere pinguïns had gevangen.” Waar het om gaat: het getal gaat over een gemiddelde, niet over de dieren.

Z) Nee — en dat is met opzet. De afspraak staat in de prikkel: “we spreken af dat dít de hele wereld is”. Deze 342 pinguïns zijn in werkelijkheid zélf een steekproef, en de echte pinguïnpopulatie is veel groter. Alleen ómdat we die afspraak maken, kunnen we de “waarheid” van 4202 gram kennen en de formule controleren. In het echt heb je geen ton en geen duizend grabbels — je hebt één steekproef, en dan is SD/√n precies het gereedschap dat je in dít blok hebt leren vertrouwen.

Twee dingen die er wél goed staan: sample() geeft elke pinguïn dezelfde kans, en met replace = TRUE blijft de ton bij elke greep even vol, dus geldt SD/√n exact.

De weg terug, als je die afspraak loslaat:

  • Blijft staan: de formule zelf, en alles wat je bij a), b), f) en g) uitrekende. SD/√n heeft geen ton nodig; hij rekent met de spreiding die je meet.
  • Doe je over: de vergelijking met “de waarheid” bij c) en d). Zonder de afspraak weet je niet waar de waarheid ligt, en dan kún je de formule niet controleren — je moet hem geloven. Dát is de gewone situatie, en dit blok is de ene keer dat je hem eerst hebt zien werken.

rapportage

Schrijf het op als een onderzoeker

rapportage van M, SD en SE · cursieve symbolen

OpmerkingRapportage

In Opdracht 1.1 was de rapportage een boodschappenlijstje: wat gemeten, waar het ligt, hoe verspreid. Vandaag komt er precies één artikel bij op dat lijstje — hoe zeker je bent van dat gemiddelde. En ook dat blijft gewoon één zin. Kijk maar, voor alle 342 pinguïns tegelijk:

De 342 pinguïns in de steekproef wogen gemiddeld 4201.75 g (SD = 801.95, SE = 43.36).

Dat is ’m — en de zin staat op eigen benen: wie er gewogen werden, wat ze gemiddeld wogen, en tussen haakjes de twee wiebel-getallen. De SD = 802 beschrijft nog steeds de pinguïns; de SE = 43 zegt hoe rustig het gemiddelde zelf staat (sd(peng$gewicht) / sqrt(342) — met 342 dieren in je steekproef wiebelt dat gemiddelde nog maar een gram of 43). Twee getallen die op elkaar lijken en iets totaal anders zeggen — wie ze allebei rapporteert, laat zien dat hij het verschil kent. En dezelfde kleine afspraken als altijd: alléén de symbolen SD en SE cursief, de gewone woorden rechtop, decimalen met een punt.

Jouw beurt: schrijf zelf zo’n zelfstandige zin voor de snavellengte, met M = 43.92 en SD = 5.46 en de SE erbij (sd(peng$snavellengte) / sqrt(342) — ter controle: 0.30 mm). En proef even hoe gek dat klinkt: snavels die onderling ruim vijf millimeter verschillen, maar een gemiddelde dat op een derde van een millimeter na vaststaat. Dát is wat 342 metingen voor je doen.

Zelfde vorm in het boek

Hier: duizend keer grabbelen uit een ton waarvan je de waarheid kent, en zien dat de wiebel van het gemiddelde een eigen maat heeft.

In het boek: W3 — Van steekproef naar populatie

Daar krijgt de ton zijn verhaal — hier heb je hem zelf duizend keer geschud.

Voetnoten

  1. Palmer Penguins — Gorman, Williams & Fraser (2014), Palmer Station Antarctica LTER; via het R-pakket palmerpenguins (CC0), kolom gewicht (lichaamsgewicht in grammen). Alle getallen in dit blok zijn op die échte data nagerekend.↩︎

  2. Waarom niet precies 146? Omdat je die duizend grabbels ook maar één keer doet. Draai de hele simulatie opnieuw met een ander startgetal achter set.seed() en er komt een ander antwoord uit: set.seed(2) geeft 143.9 en set.seed(99) geeft 145.6 — allebei ónder de 146, waar onze 149 er juist bóven ligt. Het schommelt dus een paar gram heen en weer rond wat de formule belooft, en welke kant op is toeval; herhaal je het tweehonderd keer, dan komt het gemiddeld rond de 146 uit.

    Wat er dus niet meer in zit is een systematische afwijking, en dát is de winst van het terugleggen: de ton blijft bij elke greep even vol, en dan geldt SD/√n precies. Zou je zónder terugleggen trekken, dan kwam je stelselmatig lager uit — rond de 140. Dat klinkt averechts (minder in de ton, tóch minder gewiebel?), maar denk het door naar het uiterste: trek je zonder terugleggen alle 342 pinguïns, dan heb je elke keer precies dezelfde 342 dieren in je armen, dus elke keer hetzelfde gemiddelde, dus wiebel nul. Hoe meer van de ton je in handen hebt, hoe minder ruimte er is om ernaast te zitten. Bij dertig van de 342 is dat effect klein, maar het is er.↩︎