Derde beweging · Verschil op de proef
Oefening 6.1 · De p-waarde
Toetsen tegen de nulhypothese, en de p zelf tellen · the p-value
In deze oefening
Data bij deze oefening — plantgroei.csv plantgroei onder drie condities · diamantjes.csv de twaalf steentjes uit het boek · wat elke kolom betekent
prikkel
Een half grammetje meer
verschil tussen gemiddelden · toeval als verklaring
Dertig planten, drie potjes voer.1 Tien krijgen niks bijzonders (controle), tien krijgen het ene goedje, tien het andere. Aan het eind weeg je van elke plant het droge gewicht. De controle-planten wegen gemiddeld 5.03 gram, de planten op behandeling 2 gemiddeld 5.53. Een half grammetje meer.
Doet het voer iets? Of is dat halve grammetje gewoon toeval — hadden er nou eenmaal een paar zware planten in het verkeerde potje gestaan?
Dat is de vraag onder bijna élk onderzoek. En het antwoord komt straks in één klein getalletje: p = .048. In dit blok gaan we dat getal niet geloven — we gaan het tellen.
speel het
Laat de t-toets het verschil wegen
t · p · betrouwbaarheidsinterval · significantiegrens .05
d <- read.csv("diamantjes.csv")
# de p van de helling staat in de summary, niet in lm zelf
model.karaat <- lm(glans ~ karaat, data = d)
# b en p van de helling: summary() → 32.143 0.0491
summary(model.karaat)lm(), t.test() en aov() zijn in beide talen precies dezelfde functie — daar valt niets te vertalen. Het verschil tussen base R en dplyr zit in het klaarzetten van de data, niet in het model.
De helling van karaat op glans komt uit op p = .049 — nét onder de .05, met de hakken over de sloot. Precies zulke randgevallen laten zien wat een p-waarde wel en niet is: geen keurmerk, maar een kans onder een aanname.
Nu jij — dezelfde plantjes als in Oefening 5.1. Je kent het verschil al; nu vraag je hoe vaak toeval zoiets maakt.
Haal de planten binnen en laat de klassieke t-toets het verschil wegen tussen controle en behandeling 2.
pg <- read.csv("plantgroei.csv")
# gemiddeld gewicht per groep
# controle, behandeling2
# tapply() → 5.03 5.53
tapply(pg$gewicht, pg$groep, mean)
# vergelijk controle vs behandeling2
tweetal <- pg[pg$groep %in% c("controle", "behandeling2"), ]
# FALSE is de standaard: Welch, het huismerk van deze boekjes
# t.test() → t = 2.13 p = 0.048
t.test(gewicht ~ groep, data = tweetal, var.equal = FALSE)Daar staat het: het verschil is 0.49 gram, t = 2.13, en p = .048. Het 95%-betrouwbaarheidsinterval loopt van 0.01 tot 0.98 — het schampt de nul, maar gaat er nét niet overheen. Volgens de gewoonte-grens van .05 is dit “significant” — nét. Maar wat ís die .048 eigenlijk? Voor je die vraag beantwoordt uit een tabel, gaan we hem zelf maken.
schud het
Duizend werelden waarin het voer niks doet
labels husselen · p als getelde fractie
Hier is de truc, en het is de mooiste van het hele boek. Stel: het voer doet niks. Helemaal niks. Dan is het etiket “controle” of “behandeling2” op een plant volstrekt willekeurig — je had de labels net zo goed door elkaar kunnen gooien, het gewicht zou hetzelfde blijven. Dus dat doen we. Duizend keer.
Elke keer husselen we de twintig groepslabels lukraak over de twintig planten, en meten we het verschil tussen de twee nep-groepen. Zo bouwen we duizend werelden waarin het voer bewijsbaar niks doet — en kijken hoe vaak het blinde toeval alléén al een verschil oplevert dat even groot is als (of groter dan) onze echte 0.49.
En let op waar déze werelden liggen: rond nul, want daar hebben we ze naartoe geknipt — precies wat de bootstrap-werelden van Oefening 5.1 níét deden, en daarom kon je uit die dans geen p tellen.
tweetal <- pg[pg$groep %in% c("controle", "behandeling2"), ]
# het echte verschil; tapply zet de groepen op alfabet, dus controle mín behandeling2
# diff() → -0.49
echt <- diff(tapply(tweetal$gewicht, tweetal$groep, mean))
# één toeval-wereld: plak de labels lukraak op de gewichten
schud <- function() {
# labels door elkaar
nep <- sample(tweetal$groep, replace = FALSE)
# verschil in die wereld
abs(diff(tapply(tweetal$gewicht, nep, mean)))
}
set.seed(42)
werelden <- replicate(1000, schud())
# een bergje rond nul
hist(werelden)
# daar staat de echte 0.49
abline(v = abs(echt), col = "red", lwd = 2)
# tel: hoe vaak komt het toeval even ver of verder?
# mean() → 0.043
mean(werelden >= abs(echt))▶ Zie het geteld: het schud-speeltje
Kijk naar dat plaatje. De duizend toeval-verschillen kruipen dicht om nul — de meeste werelden komen niet in de buurt van een half grammetje. En dan tel je hoe vaak het toeval tóch even ver reikt als jouw echte planten: 43 van de 1000. Dat aandeel — .043 — ís de p-waarde. Geen formule die je uit een tabel moet geloven, maar een fractie die je hebt geteld:
De p is de fractie toeval-werelden die net zo ver komen als de jouwe.
Zeldzaam is het, die 43 op 1000 — maar niet onmogelijk. Schud met een andere seed en er staat .04 of .05: duizend werelden is zélf ook maar een greep, dus het getal wiebelt een beetje. De toets hierboven gaf .048 — dezelfde boodschap, langs een andere weg. En hoe je het ook telt, het staat op het randje. Dat randje is de hele les.
snap het
Wat p = .048 wél en niet zegt
p versus effectgrootte · .05 als afspraak · afwezigheid van bewijs
Nu je p zelf geteld hebt, kun je precies zien wat het wél en niet zegt.
Wat het zegt. Onze p = .048 betekent: als het voer niks deed, zou zó’n groot verschil in maar ongeveer 5 van de 100 toeval-werelden opduiken. De data passen dus slécht bij het idee “er is niks”. Dat is precies wat een p-waarde meet — hoe slecht de data bij ‘er is niks’ passen, en niets meer.
Wat het níét zegt. Let op, want hier struikelt bijna iedereen:
- p is niet hoe groot het effect is. Ons effect is een half grammetje — dat lees je af aan het verschil (0.49) en het interval [0.01, 0.98], niet aan de p. Een piepklein effect kan een piepkleine p krijgen als je maar genoeg planten weegt.
- p is niet de kans dat er niks aan de hand is. Hij rekent de andere kant op: hij vertrekt vanuit “er is niks” en vraagt hoe raar jouw data dan zijn — niet vanuit jouw data hoe waarschijnlijk “er is niks” is. P(data | er is niks) is iets heel anders dan P(er is niks | data).
En dat randje. Onze .048 haalt de gewoonte-grens van .05 — nét. Maar bedenk: was er één zware controle-plant net iets lichter geweest, dan stond er misschien .052, en dan zou dezelfde uitkomst ineens “niet significant” heten. Dat kan niet kloppen. .05 is een afspraak, geen natuurgrens. Een p van .048 en een p van .052 vertellen hetzelfde verhaal: een zwak, wankel signaaltje dat om nuance vraagt, niet om een ja/nee-stempel.
En de andere kant op. Reken voor de grap ook eens controle tegen behandeling 1 uit:
ander <- pg[pg$groep %in% c("controle", "behandeling1"), ]
# weer Welch, weer de standaard — zodat je 'm met de vorige kunt vergelijken
# dik niet-significant
# t.test() → p = 0.25
t.test(gewicht ~ groep, data = ander, var.equal = FALSE)Daar komt p = .25 uit: het toeval haalt zó’n verschil moeiteloos, in een kwart van de werelden. Niks aan de hand? Voorzichtig. “Niet significant” betekent niet aangetoond — niet aangetoond dat er niks is. Misschien werkt behandeling 1 wél en waren tien planten te weinig om het te zien. Afwezigheid van bewijs is geen bewijs van afwezigheid. Een p die groot is, sluit niets uit; hij zwijgt alleen.
jouw beurt
Voer één tegen voer twee
t-toets · getelde p · wiebel van de telling
Voer één tegen voer twee, bekende data. In Oefening 5.1 over het betrouwbaarheidsinterval kreeg dit paar een interval; een p voor dat verschil in gewicht heeft nog niemand geteld. Zet de twee groepen klaar en beantwoord daarna de vragen. De laatste heet Z): de aannames staan altijd achteraan, en die letter is met opzet geen volgletter.
pg <- read.csv("plantgroei.csv")
voer <- pg[pg$groep %in% c("behandeling1", "behandeling2"), ]table(voer$groep) hoort tien en tien te geven. Staat de controle er nog tussen, dan is je filter niet aangekomen.
a) Schrijf de nulhypothese en het alternatief voluit op, in woorden én in symbolen. (twee zinnen, en die twee ook in symbolen)
b) Draai de t-toets: t.test(gewicht ~ groep, data = voer). (rapporteer t, df en p)
c) Mag de nulhypothese verworpen worden bij de gewoonte-grens van .05? Zeg erbij wát je precies verwerpt. (ja of nee, en één zin over planten — een getal mag, mits de eenheid erbij staat)
d) Lees het betrouwbaarheidsinterval erbij af, en zeg waar de nul ligt. (rapporteer het 95% CI met allebei de grenzen)
e) Tel de p nu zelf. Zelfde schud-recept als in de romp van dit blok, ander paar — zet eerst set.seed(42). (rapporteer de fractie én het aantal werelden)
# het echte verschil, zonder teken
echt <- abs(diff(tapply(voer$gewicht, voer$groep, mean)))
# duizend werelden waarin het voer niks doet
set.seed(42)
werelden <- replicate(1000, {
nep <- sample(voer$groep, replace = FALSE)
abs(diff(tapply(voer$gewicht, nep, mean)))
})
# tel hoe vaak het toeval even ver komt
mean(werelden >= echt)f) Leg je getelde fractie naast de p van de toets bij b). Vertellen ze hetzelfde verhaal? (twee getallen en één zin)
g) Vervang de 42 in set.seed() door 1 en tel opnieuw. Er komt een ander getal uit, op precies dezelfde planten. Hoe kan dat? (het nieuwe getal, en waar de wiebel vandaan komt)
h) Je hoeft niet te schudden om het echte antwoord te krijgen: je kunt álle manieren langslopen waarop twintig planten in twee tientallen uiteen kunnen vallen. Dat zijn er 184756, en dat getal hoef je niet zelf te kunnen uitrekenen. De uitkomst daarvan is .0086. Wat zegt dat over je twee getellingen bij e) en g)?
i) Wat zegt deze p niet? Noem er twee. (twee dingen, elk in één zin)
j) Schrijf de inhoudelijke conclusie, in maximaal vijf zinnen. (over de twee soorten voer, met de grootte van het verschil erin en niet alleen de p; meer antwoorden zijn goed)
Z) Mag je alles hierboven geloven? De toets bij b) en de telling bij e) leunen op verschillende dingen — kijk voor de toets naar de vorm van de twintig gewichten (boxplot(gewicht ~ groep, data = voer)) en naar de twee spreidingen (tapply(voer$gewicht, voer$groep, sd)), en vraag je bij de telling af of het etiket “voer één” of “voer twee” onder de nulhypothese echt willekeurig op een plant geplakt had kunnen worden.
a) De nulhypothese: de twee soorten voer leveren gemiddeld evenveel droge plant op — het verschil dat je meet, komt dan volledig uit het toeval van welke plant in welk potje stond. Het alternatief: ze leveren niet evenveel op. In symbolen:
\[H_0:\ \mu_1 = \mu_2 \qquad H_1:\ \mu_1 \neq \mu_2\]
Grieks, want \(\mu\) is het gemiddelde in de populatie — alle planten die zo gekweekt hadden kunnen worden — en niet de 4.66 en 5.53 van deze twintig. Je mag het ook als één verschil schrijven, \(H_0:\ \mu_1 - \mu_2 = 0\); één van de twee is genoeg. En let op het \(\neq\): tweezijdig, want vooraf wist niemand wélk voer zou winnen.
b) t(14.10) = −3.01, p = .009.
c) Ja. Wat je verwerpt is het idee dat de twee soorten voer gemiddeld hetzelfde opleveren: onder díé aanname is een verschil van 0.87 gram zeldzaam genoeg om er niet in te blijven geloven. Je verwerpt niet “toeval” in het algemeen, en je bewijst ook niet dat voer twee altijd beter is.
d) 95% CI [−1.48, −0.25]. De nul valt er ruim buiten — geen geschamp deze keer, zoals bij controle tegen voer twee.
e) .006, oftewel 6 van de 1000 werelden. (Op je scherm staat 0.006; die voorloopnul haal je pas weg als je het opschrijft.)
f) .006 tegen .009. Twee wegen naar hetzelfde oordeel: dit verschil is zeldzaam in een wereld waarin het voer niets doet. Dat ze niet precies gelijk zijn is geen fout — de toets rekent met een formule, jouw telling met duizend willekeurige werelden.
g) .012, twee keer zoveel. De planten zijn niet veranderd; jouw duizend werelden wel. Duizend werelden is zélf ook maar een greep, en hoe kleiner de p die je zoekt, hoe schaarser de werelden die meetellen — bij zes tegen twaalf treffers hangt het getal aan een handvol werelden en wiebelt het dus hard. Wil je een kleine p nauwkeurig tellen, dan heb je er veel meer dan duizend nodig.
h) Dat .0086 is het antwoord waar geen toeval meer in zit: alle 184756 hersplitsingen langsgelopen, 1592 daarvan komen even ver of verder. Jouw .006 en .012 liggen er aan weerskanten omheen, en dat is precies wat je verwacht van twee grepen van duizend. Niet één van beide is “de goede” — ze zijn allebei een schatting van dit getal.
i) Twee dingen, en bij allebei struikelt bijna iedereen:
- p is niet hoe groot het effect is. Dat lees je af aan het verschil van 0.87 gram en het interval [−1.48, −0.25], niet aan de .009.
- p is niet de kans dat er niks aan de hand is. Hij vertrekt vanuit “er is niks” en vraagt hoe raar jouw data dan zijn. P(data | er is niks) is iets heel anders dan P(er is niks | data).
j) Meer antwoorden zijn goed; welke vijf zinnen je kiest is aan jou. Bijvoorbeeld:
De planten op voer één wogen gedroogd gemiddeld 4.66 gram, die op voer twee 5.53 gram: voer één leverde 0.87 gram minder droge plant op. Dat verschil was significant, t(14.10) = −3.01, p = .009, 95% CI [−1.48, −0.25]. Zo’n verschil kwam in maar zes van de duizend geschudde werelden voor, dus “de twee soorten voer doen hetzelfde” past slecht bij deze data. Hoe groot het verschil precies is, ligt nog ruim open: ergens tussen een kwart gram en anderhalve gram. Met tien potten per groep is dat de eerlijke marge.
Wat erin hoort: de richting, de grootte, én de onzekerheid — niet alleen dat het significant was. En het teken volgt de leesrichting van je zin: deze zin vertelt voer één mín voer twee, net als de toets, dus blijven t en interval negatief. Vertel je het andersom — “voer twee leverde méér op” — dan draaien ze allebei mee, zoals in de rapportage van Oefening 5.1.
Z) Ja, met een kanttekening bij de toets. De twee toetsen leunen op verschillende dingen, en dat is de les van deze vraag.
De t-toets bij b) leunt erop dat de gewichten redelijk symmetrisch liggen en dat de gemiddelden netjes rond de waarheid wiebelen. Dat valt hier goed uit; de scheefheid is 0.47 bij voer één en 0.48 bij voer twee, met tien potten per groep gewone ruis. De twee spreidingen liggen wél het verst uiteen van alle paren in dit bestand — SD = 0.79 tegen 0.44, een verhouding van bijna 1.8 — maar het huis houdt onder de 2 aan, en de Welch-variant die R standaard draait is juist gebouwd voor ongelijke spreiding.
De schudtoets bij e) leunt op iets anders: dat de etiketten onder de nulhypothese uitwisselbaar zijn. Doet het voer niets, dan had elk etiket op elke plant gekund, en dan is husselen eerlijk. Dat is een zwaardere eis dan hij klinkt: hij zegt niet alleen dat de gemiddelden gelijk zijn, maar dat de twee groepen onder de nulhypothese in álles op elkaar lijken — ook in spreiding. Zou het ene voer de planten alleen maar wisselvalliger maken zonder het gemiddelde te raken, dan verwerpt deze toets iets wat je niet bedoelde te toetsen.
De weg terug, als het was misgegaan:
- Blijft staan: de gemiddelden en het verschil van 0.87 gram bij b) en j). Dat is optellen en delen.
- Doe je over: de p bij b) en e), en daarmee het oordeel bij c). Een scheve verdeling raakt de toets; ongelijke spreiding raakt vooral de telling.
tentamen
Tentamenvragen
wat een p wél zegt · niet-significant · de grens van .05 · de p als breuk
Hierboven stonden de open vragen; hier staan dezelfde onderwerpen nog een keer, in de vorm waarin een tentamen ze stelt. Zes stuks, vier opties, en precies één is de beste — de andere drie kunnen best waar zijn en toch niet het beste antwoord. Rekenen hoeft alleen bij vraag 4, en daar liggen de opties ver genoeg uit elkaar om te schatten; een precies getal heb je niet nodig.
1. Voor voer één tegen voer twee vond je t(14.10) = −3.01, p = .009. Welke omschrijving van die p is de beste?
- De kans dat de twee soorten voer gemiddeld hetzelfde opleveren.
- De kans dat het verschil van 0.87 gram door toeval komt.
- De kans dat je conclusie fout is.
- Hoe vaak toeval alléén al een verschil van 0.87 gram haalt, als de twee soorten voer gemiddeld hetzelfde opleveren.
2. Voor controle tegen voer één komt er p = .25 uit. Welke conclusie is de beste?
- Niet aangetoond dát voer één iets doet — en dat is iets anders dan aangetoond dat het niets doet.
- Voer één werkt niet, want het verschil is niet significant.
- Er is 25% kans dat voer één niets doet.
- De twee groepen zijn gelijk; met twintig potten is dat nu vastgesteld.
3. Twee onderzoekers doen hetzelfde experiment. De een vindt p = .048, de ander p = .052. Welke uitspraak daarover is de beste?
- De eerste heeft een effect gevonden en de tweede niet; dat zijn tegengestelde uitkomsten.
- De tweede mag zijn nulhypothese niet verwerpen, dus bij hem is de nulhypothese waar.
- Ze vertellen hetzelfde verhaal; .05 is een afspraak en geen natuurgrens.
- De tweede moet zijn toets opnieuw draaien met meer werelden.
4. Je kunt álle 184756 manieren langslopen waarop twintig planten in twee tientallen uiteen kunnen vallen. Daarvan komen er 1592 even ver of verder dan jouw echte verschil van 0.87 gram. Wat is dan de exacte p? (De vier opties liggen elk een factor twee uit elkaar, dus grofweg rekenen is genoeg.)
- .0043
- .0086
- .0172
- Dat kun je niet uitrekenen zonder te weten hoeveel werelden je geschud hebt.
5. Je wil weten hoe groot het verschil tussen de twee soorten voer is. Waar lees je dat af?
- Aan de p van .009 — hoe kleiner de p, hoe groter het verschil.
- Aan de t van −3.01, want die is het verschil gedeeld door zijn eigen wiebel.
- Aan het aantal geschudde werelden dat even ver kwam: zes van de duizend.
- Aan het verschil van 0.87 gram en het interval [−1.48, −0.25].
6. De schudtoets husselt de etiketten “voer één” en “voer twee” over de twintig planten. Waarop leunt dat husselen?
- Dat elk etiket op elke plant gekund had — dus dat de groepen in álles op elkaar lijken, ook in spreiding.
- Dat de gewichten in beide groepen normaal verdeeld zijn, zoals de t-toets wil.
- Dat de twee groepen precies even groot zijn, hier tien en tien.
- Dat je minstens duizend werelden schudt, anders wiebelt de telling te hard.
1 d · 2 a · 3 c · 4 b · 5 d · 6 a
Hieronder staat per vraag waaróm, en waarom de drie andere opties aantrekkelijk zijn. Heb je er een goed, dan kun je die overslaan.
1. d. Een p vertrekt vanuit “er is niks” en vraagt hoe raar jouw data dán zijn — dat is precies de telling die je bij e) hebt gedaan. (Let op de twee getallen: de toets geeft p = .009, dus 9 op de 1000, en jouw duizend geschudde werelden gaven 6 op de 1000. Twee wegen, twee getallen, dezelfde boodschap — zie f).) a en b rekenen allebei de andere kant op, en dat is dé denkfout van dit onderwerp: P(data | er is niks) is iets heel anders dan P(er is niks | data). b klinkt het onschuldigst en is even fout — “de kans dat het verschil door toeval komt” is een uitspraak over de wereld. c maakt van de p een foutkans van jóuw conclusie; die kans kent niemand.
2. a. “Niet significant” betekent niet aangetoond, niet aangetoond dat er niks is. Misschien werkt voer één wél en waren tien potten te weinig om het te zien. b trekt die conclusie tóch, en dat is afwezigheid van bewijs verwarren met bewijs van afwezigheid. d doet hetzelfde in nettere woorden, en is daarom gevaarlijker: “de groepen zijn gelijk” is een bewering die geen enkele toets kan opleveren. c leest de .25 als een kans op de nulhypothese — dezelfde omkering als bij vraag 1, nu in de andere richting.
3. c. Was er één zware plant net iets lichter geweest, dan stond er .052 in plaats van .048, en dan zou dezelfde uitkomst ineens anders heten. Dat kan niet kloppen — dus beide getallen vertellen hetzelfde: een zwak, wankel signaaltje dat om nuance vraagt, niet om een stempel. a is de gewoonte van het vak en precies wat deze vraag wil doorbreken: een verschil van vier duizendsten in een getal is geen tegenstelling in een bevinding. b haalt de grootste denkfout over toetsen binnen: niet verwerpen is geen aannemen. d verwart de toets met de schudtelling — een t-toets heeft geen werelden en dus geen aantal om te verhogen.
4. b. De p ís een breuk: 1592 / 184756 = .0086. Geen formule om te geloven, gewoon een deling. a en c halveren en verdubbelen, en die reflex komt van de abs() in het recept: je telt de verschillen zonder plus of min, dus een verschil van 0.87 gram naar de éne kant telt net zo hard mee als naar de andere. Beide kanten zitten er dus al in — er valt niets te halveren en niets bij te tellen. d is de aantrekkelijkste, want hij gold de hele opdracht door: deze vraag schudt niet. Alle 184756 splitsingen langslopen is het antwoord waar geen toeval meer in zit; je tellingen bij e) en g) — .006 en .012 — liggen er aan weerskanten omheen en zijn er allebei een schatting van.
5. d. De grootte lees je af aan het verschil in grammen en aan het interval eromheen, nooit aan de p. a is de misvatting die deze vraag bestaat om te vangen: een piepklein effect krijgt een piepkleine p als je maar genoeg planten weegt, en een groot effect een grote p als je er te weinig weegt. b komt het dichtst bij iets waars en is het net niet: de t is het verschil gedeeld door zijn eigen wiebel, dus hij hángt er wel aan, maar hij vertelt je niet in grammen hoe veel het is. Twee experimenten met hetzelfde verschil en verschillende steekproefgrootte geven een verschillende t. c is de getelde p in een ander jasje, en heeft dus dezelfde tekortkoming als a.
6. a. Doet het voer niets, dan had elk etiket op elke plant gekund, en dan is husselen eerlijk. Die eis is zwaarder dan hij klinkt: hij zegt niet alleen dat de gemiddelden gelijk zijn, maar dat de twee groepen onder de nulhypothese in álles op elkaar lijken — ook in spreiding. Maakte het ene voer de planten alleen maar wisselvalliger, dan verwerpt deze toets iets wat je niet bedoelde te toetsen. b hoort bij de t-toets; dát het husselen die aanname níét nodig heeft is juist zijn charme. c is hier waar (tien en tien) en niet nodig: husselen werkt ook bij ongelijke groepen. d verwart de aanname met de nauwkeurigheid — duizend werelden is een keuze over de wiebel van je telling, niet over de planten.
Wil je de getallen uit vraag 4 zelf zien ontstaan — geen ervan is overgetikt:
pg <- read.csv("plantgroei.csv")
voer <- pg[pg$groep %in% c("behandeling1", "behandeling2"), ]
g <- voer$gewicht
# alle manieren om twintig planten in twee tientallen te splitsen
splitsingen <- combn(20, 10)
echt <- abs(mean(g[1:10]) - mean(g[11:20]))
ver <- apply(splitsingen, 2, function(i) abs(mean(g[i]) - mean(g[-i])))
# hoeveel splitsingen zijn er → 184756
ncol(splitsingen)
# en hoeveel komen er even ver of verder → 1592
sum(ver >= echt - 1e-12)
# vraag 4 — de exacte p is gewoon die breuk → 0.0086
sum(ver >= echt - 1e-12) / ncol(splitsingen)
# vraag 4 — afleider a: gehalveerd, alsof de telling eenzijdig was → 0.0043
sum(ver >= echt - 1e-12) / ncol(splitsingen) / 2
# vraag 4 — afleider c: verdubbeld, om dezelfde verkeerde reden → 0.0172
sum(ver >= echt - 1e-12) / ncol(splitsingen) * 2◠ Zelfde vorm in het boek
Hier: het toeval duizend keer laten dansen om nul, en tellen hoe vaak het even ver komt als jij — dat aandeel is de p.
In het boek: W6 — Bestaat het verschil echt?
Daar wordt de toets een omkering: stel dat er niks is — hoe raar zijn onze data dán? De p is het antwoord op die omgekeerde vraag, nooit op de vraag zelf.
Voetnoten
PlantGrowth — droog gewicht van planten onder drie condities; Dobson (1983), via R (
datasets::PlantGrowth, publieke data). Alle getallen in dit blok zijn op die échte data nagerekend.↩︎