5. Experimenteren en data verzamelen#
Je hebt nu een werkend model met emergent gedrag. Maar één keer runnen is niet genoeg om wetenschappelijke conclusies te trekken. In dit hoofdstuk leer je systematisch experimenteren: hoe ontwerp je een experiment, hoe verzamel je betrouwbare data, en hoe trek je conclusies zonder te overdrijven. Je leert waarom “one run is no run”, hoe je parameters varieert, data samenvat in tabellen en grafieken, en hoe je onderscheid maakt tussen correlatie en causatie. Dit is waar computational science échte wetenschap wordt.
Leerdoel: Na dit hoofdstuk kun je een systematisch experiment opzetten, betrouwbare data verzamelen, resultaten samenvatten in tabellen en grafieken, en gefundeerde conclusies trekken over je model.
5.1. Inhoud#
In dit hoofdstuk behandelen we:
Waarom meerdere runs? (toeval en ruis)
Experimentopzet: parameter kiezen, range en stappen
Meten: welke output verzamel je?
Runs uitvoeren: handmatig plan en BehaviorSpace
Data samenvatten: tabellen en grafieken
Conclusies trekken zonder te overdrijven
5.2. Waarom meerdere runs?#
Het probleem: randomness#
Je model bevat waarschijnlijk random-elementen:
Mieren bewegen willekeurig rond
De startpositie van agents is random
Voedsel verschijnt op random plekken
Kansen (20% om te besmetten) leiden tot verschillende uitkomsten
Gevolg: Elke run geeft andere resultaten, zelfs met dezelfde parameters!
Voorbeeld: Mieren-model met verdampingssnelheid = 0.05
Run 1: 87 eenheden voedsel verzameld na 500 ticks
Run 2: 91 eenheden verzameld
Run 3: 83 eenheden verzameld
Run 4: 89 eenheden verzameld
Run 5: 86 eenheden verzameld
Vraag: Hoeveel eenheden verzamelen mieren gemiddeld? Antwoord: 87.2 (het gemiddelde).
“One run is no run”#
Dit is een gouden regel in computational science. Waarom?
Toeval: Je kunt toevallig een extreme run hebben (lucky of unlucky)
Geen variatie-inzicht: Je weet niet of resultaat 87 normaal is of een uitzondering
Niet reproduceerbaar: Een ander krijgt andere resultaten, kan je werk niet verifiëren
Vuistregel: Doe minimaal 5-10 runs per parameter-waarde. Bij meer variatie: meer runs nodig.
Variatie meten: standaarddeviatie#
Standaarddeviatie (SD) meet hoe ver resultaten uit elkaar liggen.
Kleine SD (bijv. 2.1) → resultaten liggen dicht bij elkaar → betrouwbaar
Grote SD (bijv. 15.3) → resultaten variëren veel → onzeker
Voorbeeld:
Run 1: 87, Run 2: 91, Run 3: 83, Run 4: 89, Run 5: 86
Gemiddelde: 87.2
Standaarddeviatie: 2.9 (relatief klein)
Notatie: 87.2 ± 2.9 (lees: “87 punt 2 plus-minus 2 punt 9”)
Tip
Hoe bereken je standaarddeviatie?
In Excel: =STDEV.S(bereik) (bijv. =STDEV.S(A1:A5))
In Python: import statistics; statistics.stdev([87, 91, 83, 89, 86])
In je hoofd: Lastig, gebruik een tool!
Wanneer is variatie acceptabel?#
Kleine variatie (< 5% van gemiddelde): Prima, je model is stabiel
Matige variatie (5-15%): Acceptabel, vermeld de onzekerheid in je verslag
Grote variatie (> 15%): Probleem! Doe meer runs of zoek de oorzaak
Voorbeeld: Gemiddelde = 87.2, SD = 2.9
Variatie = 2.9 / 87.2 = 3.3% → Kleine variatie, goed!
5.3. Experimentopzet: parameter kiezen + range + stappen#
Nu je weet waarom meerdere runs nodig zijn, tijd om je experiment te ontwerpen.
Stap 1: Kies één parameter#
Begin simpel: varieer één parameter tegelijk. Houd de rest constant.
Slechte opzet:
Varieer aantal-mieren EN verdampingssnelheid tegelijk
Je weet niet welke parameter het effect veroorzaakt!
Goede opzet:
Varieer alleen verdampingssnelheid
Houd aantal-mieren, hoeveelheid-voedsel, etc. constant
Voorbeelden van interessante parameters:
Model |
Parameter |
Onderzoeksvraag |
|---|---|---|
Mieren |
verdampingssnelheid |
Wat is de optimale verdamping? |
Mieren |
aantal-mieren |
Leidt meer mieren tot efficiënter verzamelen? |
Mexican wave |
reactie-tijd |
Bij welke reactie-tijd sterft de wave uit? |
Virus |
besmettingskans |
Hoe beïnvloedt dit de piek-besmetting? |
Stap 2: Bepaal de range (bereik)#
Range = het bereik van waarden dat je test.
Te klein bereik:
Test: verdampingssnelheid 0.04, 0.045, 0.05
Probleem: Je ziet alleen kleine verschillen, mist het grote plaatje
Te groot bereik:
Test: verdampingssnelheid 0.01, 0.5, 1.0
Probleem: Bij 1.0 verdampen sporen meteen, geen paden mogelijk → niet interessant
Goed bereik:
Test: 0.01, 0.03, 0.05, 0.07, 0.1
Reden: Verwacht dat ergens tussen 0.01 en 0.1 de interessante dynamiek zit
Hoe bepaal je de range?
Verkennende runs: Test een paar extremen (0.01 en 0.1)
Zoek interessant gebied: Waar verandert het gedrag?
Focus daar: Neem meer meetpunten in dat gebied
Stap 3: Kies stapgrootte#
Stapgrootte = verschil tussen twee opeenvolgende waarden.
Te kleine stappen:
Test: 0.040, 0.041, 0.042, 0.043, 0.044, 0.045
Probleem: Veel werk, weinig nieuwe inzichten (verschil is te klein)
Te grote stappen:
Test: 0.01, 0.1, 1.0
Probleem: Je mist interessante waarden tussen 0.01 en 0.1
Goede stappen:
Test: 0.01, 0.03, 0.05, 0.07, 0.1
Reden: Redelijk verdeeld, niet te veel werk, goede coverage
Richtlijn: Kies 5-8 verschillende waarden. Minder = te grof, meer = te veel werk voor dit niveau.
Stap 4: Aantal runs per waarde#
Minimaal: 3 runs per waarde (om gemiddelde + variatie te berekenen)
Beter: 5 runs per waarde (betrouwbaarder)
Ideaal: 10+ runs per waarde (voor serieus onderzoek)
Totaal aantal runs:
Aantal parameter-waarden × aantal runs per waarde
Voorbeeld: 5 waarden × 3 runs = 15 runs totaal
Voorbeeld: Complete experimentopzet#
Onderzoeksvraag: Hoe beïnvloedt verdampingssnelheid de efficiëntie van voedsel verzamelen bij mieren?
Hypothese: Optimale verdamping ligt tussen 0.03 en 0.07. Te laag → oude sporen blijven, te hoog → geen paden.
Experimentopzet:
Element |
Waarde |
|---|---|
Variabele parameter |
verdampingssnelheid |
Constante parameters |
aantal-mieren = 50, hoeveelheid-voedsel = 50, zoekradius = 2 |
Range |
0.01 tot 0.1 |
Waarden |
0.01, 0.03, 0.05, 0.07, 0.1 (5 waarden) |
Runs per waarde |
5 |
Totaal runs |
25 |
Duur per run |
500 ticks |
Output |
Verzameld voedsel na 500 ticks |
Let op: tijdsinvestering
Bereken je tijd!
Als 1 run = 2 minuten, en je doet 25 runs, kost dat 50 minuten. Plan dit in. Je kunt het model sneller laten lopen (View → Update View → schakel uit), maar het blijft tijd kosten.
Oefening 5.1 (Oefening (Oefenen))
Ontwerp een parameter-sweep (systematische variatie van één parameter) voor je eigen model:
Kies één parameter om te variëren
Bepaal de range: Minimale en maximale waarde (met beredenering)
Kies 5 waarden binnen die range (gelijk verdeeld)
Bepaal constante parameters: Welke houd je vast? Op welke waarde?
Aantal runs: 3 runs per waarde (totaal 15 runs)
Output: Wat ga je meten?
Presenteer als tabel (zie voorbeeld hierboven). Leg in 3-5 zinnen uit: Waarom deze parameter? Waarom deze range?
5.4. Meten: welke output verzamel je?#
Je hebt je parameter gekozen. Nu: wat ga je meten?
Output moet je onderzoeksvraag beantwoorden#
Slechte keuze: Meet het aantal ticks (dat is altijd 500 als je tot 500 ticks laat runnen!)
Goede keuze: Meet iets dat varieert en relevant is voor je vraag.
Voorbeelden:
Onderzoeksvraag |
Goede output |
Waarom? |
|---|---|---|
“Efficiëntie van voedsel verzamelen?” |
Aantal verzamelde voedsel-eenheden |
Direct antwoord op “efficiëntie” |
“Bij welke reactie-tijd sterft wave uit?” |
Aantal rondes die wave maakt |
Lage rondes = uitgestorven, hoge = blijft gaan |
“Effect van besmettingskans op piek?” |
Maximaal aantal besmetten tegelijk |
Dit is letterlijk de “piek” |
“Hoe snel verspreidt virus zich?” |
Tijd tot 50% besmet is |
Meet snelheid van verspreiding |
Soorten output#
Eindwaarde: Waarde aan het eind van de run
Voorbeeld: Voedsel verzameld na 500 ticks
Pro: Simpel te meten
Con: Je mist het proces
Maximum/minimum: Hoogste of laagste waarde tijdens run
Voorbeeld: Maximaal aantal besmetten (de piek)
Pro: Belangrijk voor crisismodellen
Con: Je moet bijhouden tijdens run
Tijd tot gebeurtenis: Hoe lang duurt het tot X gebeurt?
Voorbeeld: Tijd tot wave stopt, tijd tot 50% besmet
Pro: Meet snelheid/dynamiek
Con: Gebeurtenis moet wel optreden
Gemiddelde tijdens run: Gemiddelde waarde over alle ticks
Voorbeeld: Gemiddeld aantal mieren met voedsel
Pro: Geeft overall beeld
Con: Verbergt pieken/dalen
Output implementeren in NetLogo#
Optie A: Gebruik bestaande reporters
Als je al een monitor hebt met verzameld-voedsel, noteer aan het eind van elke run die waarde.
Optie B: Maak een specifieke reporter
; Global variable om bij te houden
globals [
max-besmetten-ooit ; Hoogste aantal besmetten tot nu toe
]
to go
; ... normale go-code ...
; Update maximum
let huidig-aantal count turtles with [besmet?]
if huidig-aantal > max-besmetten-ooit [
set max-besmetten-ooit huidig-aantal
]
tick
end
to setup
clear-all
set max-besmetten-ooit 0 ; Reset bij nieuwe run
; ... rest van setup ...
reset-ticks
end
; Reporter voor monitor
to-report piek-besmetting
report max-besmetten-ooit
end
Optie C: BehaviorSpace doet het voor je (zie sectie 5.4)
Meerdere outputs tegelijk?#
Ja, mag! Bijvoorbeeld:
Output 1: Verzameld voedsel (efficiëntie)
Output 2: Gemiddelde geurspoor-sterkte (hoe sterk zijn paden?)
Maar: focus op één primaire output voor je hoofdvraag. De rest is secundair.
Tip
Test je output-meting!
Voor je 25 runs doet, test of je output-meting klopt:
Doe 2-3 test-runs
Controleer: komt de output-waarde overeen met wat je visueel ziet?
Als niet: debug je reporter!
5.5. Runs uitvoeren: handmatig plan + (optioneel) BehaviorSpace#
Je hebt een plan. Nu: uitvoeren. Twee methoden.
Methode 1: Handmatig (simpel, maar arbeidsintensief)#
Stap-voor-stap:
Maak een tabel in Excel/Google Sheets:
Run nummer |
Parameter-waarde |
Output (verzameld voedsel) |
Notities |
|---|---|---|---|
1 |
0.01 |
||
2 |
0.01 |
||
3 |
0.01 |
||
4 |
0.03 |
||
5 |
0.03 |
||
… |
… |
… |
… |
Voor elke run:
Pas parameter aan (slider)
Klik Setup
Klik Go (laat lopen tot 500 ticks)
Noteer output in tabel
Herhaal
Let op: Noteer ook bijzonderheden in “Notities” (bijv. “run 7: model crashte”, “run 12: ongebruikelijk patroon”)
Voordeel: Simpel, je ziet wat er gebeurt
Nadeel: Saai, foutgevoelig (je vergeet een waarde te noteren), tijdrovend
Methode 2: BehaviorSpace (automatisch)#
BehaviorSpace is een ingebouwde tool in NetLogo om automatisch experimenten uit te voeren.
Hoe het werkt:
Ga naar Tools → BehaviorSpace
Klik “New” om een experiment te maken
Vul in:
Experiment name: bijv. “Verdamping-sweep”
Vary variables as follows:
["verdampingssnelheid" 0.01 0.03 0.05 0.07 0.1]
Repetitions: 5 (aantal runs per waarde)
Measure runs using these reporters:
verzameld-voedsel gem-geurspoor
Measure runs at every step: Nee (alleen eindwaarde)
Setup commands:
setupGo commands:
goStop condition:
ticks >= 500
Klik OK, dan “Run”
NetLogo doet alle 25 runs automatisch!
Output wordt opgeslagen als CSV-bestand
Voordeel: Volledig automatisch, geen fouten, CSV-export
Nadeel: Leer-curve, je ziet niet wat er gebeurt tijdens runs
CSV-output openen:
Open in Excel/Google Sheets
Elke rij = 1 run
Kolommen: parameter-waarde, outputs, run-nummer
Voorbeeld CSV:
[run number],[verdampingssnelheid],[verzameld-voedsel],[gem-geurspoor]
1,0.01,87,42.3
2,0.01,91,45.1
3,0.01,83,39.8
4,0.03,95,38.2
...
Tip
Start met handmatig, ga later naar BehaviorSpace
Voor je eerste experiment: doe het handmatig (5-10 runs). Je leert meer. Voor grotere experimenten (25+ runs): gebruik BehaviorSpace. Het scheelt uren!
Tijdens runs: wat let je op?#
Stabiliteit: Crasht je model? Fix dat eerst!
Visuele patronen: Zie je verwachte gedrag? (paden bij mieren, golf bij wave)
Outliers: Is één run extreem anders? Noteer dat, mogelijk een bug
Tijd: Loopt je model snel genoeg? Zo niet: optimaliseer of wacht…
5.6. Data samenvatten: tabel + 1 grafiek#
Je hebt data! Nu: samenvatten zodat patronen zichtbaar worden.
Stap 1: Bereken gemiddeldes per parameter-waarde#
Raw data (5 runs per waarde):
Verdampingssnelheid |
Run 1 |
Run 2 |
Run 3 |
Run 4 |
Run 5 |
|---|---|---|---|---|---|
0.01 |
87 |
91 |
83 |
89 |
86 |
0.03 |
95 |
97 |
93 |
96 |
94 |
0.05 |
102 |
98 |
100 |
101 |
99 |
0.07 |
96 |
94 |
97 |
95 |
98 |
0.1 |
88 |
86 |
90 |
87 |
89 |
Samengevat (met gemiddelde en SD):
Verdampingssnelheid |
Gemiddeld verzameld |
SD |
Min |
Max |
|---|---|---|---|---|
0.01 |
87.2 |
2.9 |
83 |
91 |
0.03 |
95.0 |
1.6 |
93 |
97 |
0.05 |
100.0 |
1.6 |
98 |
102 |
0.07 |
96.0 |
1.6 |
94 |
98 |
0.1 |
88.0 |
1.6 |
86 |
90 |
In Excel:
Gemiddelde:
=AVERAGE(B2:F2)SD:
=STDEV.S(B2:F2)Min:
=MIN(B2:F2)Max:
=MAX(B2:F2)
Stap 2: Maak een grafiek#
Type grafiek: lijndiagram (line chart)
X-as: Parameter-waarde (verdampingssnelheid)
Y-as: Output (verzameld voedsel)
Punten: Gemiddeldes
(Optioneel) Foutbalken: SD tonen
Wat zie je in deze grafiek?
Trend: Voedsel verzameld stijgt eerst (0.01 → 0.05), dan daalt (0.05 → 0.1)
Optimum: Maximaal bij verdampingssnelheid = 0.05 (100 eenheden)
Variatie: Kleine foutbalken → betrouwbare data
Stap 3: Interpreteer de grafiek#
Beschrijf wat je ziet:
“De grafiek toont dat verzameld voedsel eerst stijgt van 87.2 (bij 0.01) naar een maximum van 100.0 (bij 0.05), en daarna daalt naar 88.0 (bij 0.1). De standaarddeviatie is klein (< 3), wat duidt op betrouwbare metingen.”
Verklaar het patroon:
“Bij lage verdamping (0.01) blijven oude sporen lang bestaan, wat mieren misleidt. Bij optimale verdamping (0.05) blijven goede paden bestaan en slechte paden verdwijnen. Bij hoge verdamping (0.1) verdwijnen alle sporen te snel, waardoor mieren te veel random bewegen.”
Beantwoord je onderzoeksvraag:
“De optimale verdampingssnelheid voor efficiënt voedsel verzamelen is 0.05. Dit balanceert tussen ‘sporen bewaren’ en ‘oude sporen verwijderen’.”
Oefening 5.2 (Oefening (Toepassen))
Voer je parameter-sweep uit (uit Oefening 5.1):
Doe 3 runs per waarde (totaal 15 runs)
Noteer alle resultaten in een tabel
Bereken gemiddelde en SD per parameter-waarde
Maak een lijndiagram (mag handmatig of in Excel)
Interpreteer 2 trends:
Wat zie je gebeuren als parameter stijgt?
Wat is het meest opvallende punt/patroon?
Schrijf je interpretatie in 5-8 zinnen. Gebruik placeholder: [Grafiek: parameter X vs output Y, met beschrijving van patroon].
5.7. Conclusies trekken zonder te overdrijven#
Je hebt data en een grafiek. Tijd voor conclusies. Maar pas op: niet te hard van stapel lopen!
Fout 1: Causaliteit claimen zonder bewijs#
Fout: “Verdampingssnelheid veroorzaakt meer voedsel verzamelen.”
Probleem: Je hebt correlatie (samenhang) gezien, geen causatie (oorzaak-gevolg).
Beter: “Hogere verdampingssnelheid is geassocieerd met meer verzameld voedsel (tot 0.05), daarna daalt het weer.”
Nog beter: “In dit model lijkt verdampingssnelheid een invloed te hebben op efficiëntie, omdat [mechanisme uitleggen: goede paden blijven, slechte verdwijnen].”
Fout 2: Generaliseren naar werkelijkheid#
Fout: “Echte mieren hebben dus een optimale feromoon-verdamping van 0.05.”
Probleem: Dit is een model, geen echte mieren! Modellen zijn vereenvoudigd.
Beter: “Binnen dit model is 0.05 optimaal. In de natuur kunnen andere factoren een rol spelen die hier niet gemodelleerd zijn.”
Fout 3: Conclusies buiten je data-range#
Fout: “Bij verdampingssnelheid = 0.2 zal voedsel verzamelen nog lager zijn.”
Probleem: Je hebt 0.2 niet getest! Misschien gebeurt er iets onverwachts.
Beter: “Binnen het geteste bereik (0.01-0.1) zien we een optimum bij 0.05. Verder onderzoek kan testen of dit patroon doorzet bij hogere waarden.”
Fout 4: Kleine verschillen overdrijven#
Fout: “Bij 0.03 is het resultaat 95, bij 0.05 is het 100. Dus 0.05 is significant beter.”
Probleem: Het verschil is 5% en je hebt kleine sample (3-5 runs). Dat kan toeval zijn.
Beter: “Bij 0.05 zien we een hoger gemiddelde (100 vs 95), maar het verschil is klein en binnen de variatie van het model.”
Goede conclusie-structuur#
Samenvatting resultaat: “Verzameld voedsel varieert van 87 (bij 0.01) tot 100 (bij 0.05) tot 88 (bij 0.1).”
Patroon beschrijven: “Er is een optimum bij 0.05.”
Verklaring geven: “Dit komt waarschijnlijk doordat bij 0.05 goede paden lang genoeg blijven bestaan, terwijl slechte paden vervagen.”
Hypothese toetsen: “Mijn hypothese dat optimum tussen 0.03 en 0.07 ligt, wordt bevestigd.”
Beperkingen noemen: “Dit geldt binnen de geteste parameter-waarden en met huidige model-regels. Andere factoren (zoals aantal mieren) zijn niet gevarieerd.”
Let op: correlatie ≠ causatie
Veelgemaakte denkfout:
“A en B gaan samen op → A veroorzaakt B!”
Nee! Mogelijk veroorzaakt B juist A, of C veroorzaakt zowel A als B.
Voorbeeld: In je model: meer geurspoor correleert met meer verzameld voedsel. Maar wat is oorzaak en gevolg? Antwoord: Voedsel verzamelen → mieren lopen terug → leggen spoor → meer spoor. Dus verzamelen veroorzaakt spoor, niet andersom (of: cyclische relatie).
Oefening 5.3 (Oefening (Reflecteren))
Beantwoord in 200-300 woorden:
Wat is correlatie vs oorzaak in jouw model?
Identificeer een correlatie: Welke twee variabelen in je model gaan samen omhoog/omlaag?
Is het causaal? Veroorzaakt de ene echt de andere? Of is het toeval? Of beïnvloeden ze elkaar beide?
Mechanisme: Leg het mechanisme uit: hoe veroorzaakt X (mogelijk) Y?
Alternatieve verklaringen: Kan het ook anders zijn? (bijv. derde factor Z beïnvloedt zowel X als Y)
Gebruik je eigen data uit Oefening 5.2. Als je nog geen data hebt, gebruik een hypothetisch voorbeeld uit je model.
5.8. Verdiepende opgaven#
Klaar voor verdieping? Deze opdrachten brengen je naar hoger niveau.
Oefening 5.4 (Opdracht (Multi-parameter experiment))
Uitdaging: Varieer 2 parameters tegelijk
In dit hoofdstuk varieerde je 1 parameter. Nu: 2 tegelijk!
Opzet:
Parameter 1: verdampingssnelheid (3 waarden: 0.03, 0.05, 0.07)
Parameter 2: aantal-mieren (3 waarden: 30, 50, 70)
Totaal: 3 × 3 = 9 combinaties
Runs per combinatie: 3
Totaal runs: 27
Voer uit en maak:
2D-tabel (heatmap-stijl):
30 mieren |
50 mieren |
70 mieren |
|
|---|---|---|---|
0.03 |
82 |
95 |
105 |
0.05 |
89 |
100 |
112 |
0.07 |
85 |
96 |
108 |
Analyse: Welke parameter heeft het grootste effect? Zijn er interactie-effecten (bijv. verdamping werkt anders bij 30 vs 70 mieren)?
Schrijf 300-400 woorden + tabel.
Oefening 5.5 (Opdracht (Reproduceerbaarheid))
Wetenschappelijke integriteit: laat een ander je resultaten reproduceren
Geef je NetLogo-model aan een klasgenoot
Geef je experimentopzet (welke parameter, welke waarden, hoeveel runs)
Klasgenoot doet het experiment opnieuw
Vergelijk resultaten
Vragen:
Komen de gemiddeldes overeen? (binnen ±5%)
Zo nee: waarom niet? (random seed? verschillende NetLogo versie? bug?)
Wat leer je hiervan over reproduceerbaarheid?
Schrijf 250-350 woorden reflectie. Dit is hoe echte wetenschap werkt: anderen moeten je werk kunnen herhalen!
Oefening 5.6 (Opdracht (Sensitiviteitsanalyse))
Hoe gevoelig is je model?
Een sensitiviteitsanalyse test: Welke parameters zijn cruciaal, welke niet?
Methode:
Kies 3 parameters
Varieer elk ±10% van de standaardwaarde
Meet output
Bereken: Hoeveel procent verandert output?
Voorbeeld:
Parameter |
Standaard |
+10% waarde |
Output standaard |
Output +10% |
% verandering |
|---|---|---|---|---|---|
aantal-mieren |
50 |
55 |
100 |
108 |
+8% |
verdamping |
0.05 |
0.055 |
100 |
96 |
-4% |
zoekradius |
2 |
2.2 |
100 |
102 |
+2% |
Conclusie voorbeeld: Model is meest gevoelig voor aantal-mieren (+8%), matig voor verdamping (-4%), weinig voor zoekradius (+2%).
Voer dit uit voor je eigen model. Schrijf 200-300 woorden + tabel.
5.9. PO-mijlpaal#
Na dit hoofdstuk ben je klaar voor de vijfde mijlpaal: een complete dataset met onderbouwde conclusies.
Wat lever je op?#
Een document (2-3 pagina’s A4) met:
Experimentopzet (½ pagina):
Onderzoeksvraag
Gevarieerde parameter + range + aantal waarden
Constante parameters (met waarden)
Gemeten output
Aantal runs per waarde
Dataset (½ pagina):
Tabel met alle runs (raw data)
Tabel met samenvattingen (gemiddelde, SD per parameter-waarde)
Minimaal 15 runs totaal (bijv. 5 waarden × 3 runs)
Grafiek (½ pagina):
Lijndiagram: parameter-waarde vs output
Duidelijke as-labels en titel
(Optioneel) Foutbalken voor SD
Analyse en conclusies (1 pagina):
Beschrijf het patroon in de grafiek (2-3 zinnen)
Verklaar waarom dit patroon ontstaat (mechanisme, 4-5 zinnen)
Beantwoord je onderzoeksvraag (2 conclusies, elk 2-3 zinnen)
Noem 1 onzekerheidspunt of beperking (3-4 zinnen)
Checklist: je bent klaar als…#
Je hebt minimaal 15 runs uitgevoerd (3+ runs per waarde, 5+ verschillende waarden)
Alle runs zijn gedocumenteerd in een tabel (geen ontbrekende data)
Je hebt gemiddeldes en standaarddeviaties berekend voor elke parameter-waarde
Je grafiek toont een duidelijk patroon (trend, optimum, plateau, of iets anders)
Je hebt 2 conclusies getrokken die direct uit je data volgen
Je hebt 1 onzekerheidspunt of beperking benoemd (bijv. “Dit geldt alleen binnen deze parameter-range”, “Variatie was hoog bij waarde X”)
Je conclusies zijn voorzichtig geformuleerd (geen wilde claims, geen causatie zonder bewijs)
Je verklaring koppelt terug naar je model-mechanisme (hoe werken de regels?)
Waar komt dit terug in je eindproject?#
Deze mijlpaal is de kern van je Resultaten-sectie in het eindverslag:
Methode: Experimentopzet (hoe je data verzamelde)
Resultaten: Dataset + grafiek + patroon-beschrijving
Discussie: Conclusies + verklaring + beperkingen
Tips voor succes:
Plan je tijd: 15 runs × 2 min = 30 min minimum. Plus analyse-tijd!
Maak tussentijds back-ups: Sla je tabel op na elke 5 runs (je wilt niet opnieuw beginnen)
Check outliers: Is één run extreem anders? Noteer dat, onderzoek waarom
Wees eerlijk over beperkingen: Goede wetenschappers erkennen wat ze niet weten
Evaluatiecriteria:
Criterium |
Onvoldoende |
Voldoende |
Goed |
|---|---|---|---|
Dataset |
<15 runs of incomplete |
15 runs, volledig |
20+ runs, systematisch |
Grafiek |
Onduidelijk of ontbreekt |
Duidelijk, basislabels |
Professioneel, foutbalken |
Conclusies |
Vaag of ongefundeerd |
2 conclusies, logisch |
Diepgaand, goed onderbouwd |
Beperkingen |
Niet genoemd |
1 beperking, oppervlakkig |
Kritisch, meerdere punten |
Wetenschappelijke houding |
Claims zonder bewijs |
Voorzichtig, correlatie erkend |
Nuance, causatie vs correlatie helder |
Volgende stap: In hoofdstuk 6 ga je je model verifiëren en valideren. Klopt je code? Klopt je model met de werkelijkheid? En dan: tijd voor het eindverslag, waar je alles samenbrengt in een wetenschappelijk rapport. Je bent bijna klaar!