4 Reproduceerbaarheid en traceerbaarheid van de gegevensverwerking
4.1 Versiebeheer
De waarnemers voeren hun waarnemingen via een webapplicatie toe aan de databank.
De analyse start met het importeren van de relevante gegevens uit de databank aan de hand van een R-script.
De bekomen dataset bewaren we als een collectie van tekstbestanden met behulp van het git2rdata
package (Onkelinx, 2022a).
Zowel deze code als de tekstbestanden bewaren we onze versiebeheer met git.
Git is een gratis en open source gedistribueerd versiebeheersysteem dat is ontworpen om alles van kleine tot zeer grote projecten snel en efficiëntie te beheren.
De code zit vervat in het abvanalysis
package (Onkelinx, 2022b), dat vrij online beschikbaar is.
De tekstbestanden met de gegevens zijn momenteel niet publiek toegankelijk.
De ruwe gegevens worden geaggregreerd per hok en met drie jaar vertraging publiek ontsloten via GBIF (Vermeersch et al., 2018a).
4.2 Reproduceerbaarheid
Om de reproduceerbaarheid te garanderen starten we de analyses steeds vanaf de tekstbestanden.
Aan de hand van code in het abvanalysis
package definiëren we hoe we de tekstbestanden omzetten naar de verschillende analyses (§2.2).
Dit resulteert in een resem op zichzelf staande analyseobjecten van het n2kanalysis
package (Onkelinx, 2022c).
Dergelijk analyseobject bevat naast de nodige gegevens en de modeldefinitie tevens de nodige metadata zoals alle gebruikte R packages, inclusief hun versie, en een verwijzing naar de voorafgaande analyses waarvan deze analyse afhangt.
Zo verwijst de analyse van een samengestelde index (§2.6) naar de trendberekening van de bijhorende soorten (§2.2).
De individuele trendberekeningen verwijzen naar de “analyse” die de gegevens importeerde uit de databank.
Deze laatste bevat de nodige links naar de tekstbestanden en hun versie.
4.3 Traceerbaarheid
De n2kanalysis
objecten hebben elk twee data hashes.
Elk data hash is een reeks van 40 hexadecimale3 cijfers die het resultaat zijn van de cryptografische hashfunctie SHA-1.
Deze hashfunctie heeft een aantal belangrijke eigenschappen:
- Ze zetten elke invoer om naar een uitvoer met vaste lengte (40 hexadecimale cijfers).
- De uitvoer is stabiel: als je de hash van een bepaalde invoer opnieuw berekent krijg je steeds dezelfde uitvoer.
- Het is niet mogelijk om de invoer te reconstrueren op basis van de uitvoer.
- Eender welke kleine wijziging aan de invoer resulteert in een sterke wijziging van de uitvoer.
- De kans dat twee verschillende invoeren dezelfde uitvoer opleveren is zeer klein.
De eerste data hash van het analyseobject is gebaseerd op alle informatie die gekend is op het moment dat we het analyseobject definiëren en die nooit zal wijzigen tijdens de analyse. Denk hierbij aan de definitie van de analyse, de gegevens, de soort, … Gezien de eigenschappen van de hashfunctie kunnen we deze data hash gebruiken om ondubbelzinnig te verwijzen naar een specifieke analyse (inclusief de gebruikte gegevens.)
De tweede data hash van het analyseobject baseren we enerzijds op de eerste data hash en anderzijds van alle onderdelen van het analyseobject die wijzigen in de loop van de analyse. Dit is o.a. het resultaat van de statistische analyse, de gebruikte software, … De analyse opnieuw uitrekenen met software van een andere versie zal de tweede data hash aanpassen.
De combinatie van deze twee data hashes laat enerzijds toe om naar een specifieke versie van de analyse te verwijzen. Anderzijds bieden ze een garantie over de inhoud van het analyseobject. In het geval van twijfel over een analyse kunnen we teruggrijpen naar de analyseobject in kwestie. De data hashes bewijzen dan dat we het correcte analyseobject hebben.
4.4 Downloadbaar cijfermateriaal
Deze sectie bevat links naar het nodige cijfermateriaal om de figuren in dit rapport te maken. Om de resultaten zo toegankelijk mogelijk te maken, bieden we ze aan als platte tekstbestanden. Elke dataset bestaat uit twee bestanden:
- een bestand met
.csv
extensie. Dit bevat de eigenlijke resultaten als kommagescheiden platte tekstformaat. Je kan dit openen met je favoriete rekenbladprogramma. - een bestand met
.yml
extensie. Dit platte tekstbestand bevat metadata over de inhoud van het.csv
bestand. Je hebt dit bestand nodig indien de gegevens wilt inlezen met hetgit2rdata
package. Daarnaast bevat het een data-hash waarmee je de integriteit van het databestand kan nagaan. Daarom raden we aan om dit bestand toch te downloaden, ook al heb je het strikt genomen niet nodig.
4.4.1 Indicatoren
- samengestelde indices:
samengesteld.csv
ensamengesteld.yml
.indicator
: naam van de indicator;frequentie
: index op basis van jaarlijkse of driejaarlijkse gegevens;referentie
: het referentiejaartal;naar
: het jaartal waarvoor we verhouding het referentiejaar berekenen;schatting
: de geschatte verhouding van dit jaar t.o.v. het referentiejaar;lcl
enucl
: de ondergrens en bovengrens van het 90% betrouwbaarheidsinterval rond de schatting;klasse
: interpretatie van de wijziging (zie §3.2);wijziging
: tekstuele beschrijving van de evolutie;analyse
: data-hash van de analyse;status
: data-hash van de status van de analyse
- soortenlijst samengestelde indices:
samengesteld_soorten.csv
ensamengesteld_soorten.ym
l.soort
: naam van de soort;indicator
: naam van de samengestelde indicator;ondergrens
enbovengrens
: grenzen voor de opdelingen van de effecten in klassen (zie §3.2)
4.4.2 Individuele soorten
- gemiddeld aantal op een meetpunt:
aantallen.csv
enaantallen.yml
.soort
: Nederlandse soortnaam;frequentie
: trend op basis van jaarlijkse of driejaarlijkse gegevens;jaar
: jaartal of startjaar van de driejaarlijkse periode;schatting
: schatting van het gemiddeld aantal dieren op een meetpunt;lcl
enucl
: de ondergrens en bovengrens van het 90% betrouwbaarheidsinterval rond de schatting;analyse
: data-hash van de analyse;status
: data-hash van de status van de analyse
- lineaire trends:
lineaire_trend.csv
enlineaire_trend.yml
.soort
: Nederlandse soortnaam;frequentie
: trend op basis van jaarlijkse of driejaarlijkse gegevens;jaarlijks
: gemiddelde jaarlijkse wijziging (zie §2.2.3;looptijd
: gemiddelde wijziging over de looptijd van de tijdsreeks;klasse
: interpretatie van de wijziging (zie §3.2);verloop
: geeft aan of de trend lineair verloopt;analyse
: data-hash van de analyse;status
: data-hash van de status van de analyse
- indices:
index.csv
enindex.yml
.soort
: naam van de indicator;frequentie
: index op basis van jaarlijkse of driejaarlijkse gegevens;referentie
: het referentiejaartal;naar
: het jaartal waarvoor we verhouding het referentiejaar berekenen;schatting
: de geschatte verhouding van dit jaar t.o.v. het referentiejaar;lcl
enucl
: de ondergrens en bovengrens van het 90% betrouwbaarheidsinterval rond de schatting;klasse
: interpretatie van de wijziging (zie §3.2);wijziging
: tekstuele beschrijving van de evolutie;analyse
: data-hash van de analyse;status
: data-hash van de status van de analyse
- stratumgewichten:
stratum_gewicht.csv
enstratum_gewicht.yml
.soort
: Nederlandse soortnaam;stratum
: naam van het stratum;gewicht
: gewicht van het stratum voor deze soort (zie §2.5);aanwezig
: geschatte aantal hokken van het stratum waar de soort aanwezig is;relevant
: aantal relevante hokken voor deze soort in het stratum;onderzocht
: aantal onderzochte hokken in het stratum;totaal
: totaal aantal hokken in het stratum;bezoeken
: totaal aantal bezoeken aan de meetpunten in het stratum;
Referenties
Hexadecimaal betekent letterlijk zestientallig. Het is een talstelsel waarbij niet, zoals gebruikelijk, met tien cijfers wordt gewerkt, maar met zestien cijfers. De cijfers 0 t.e.m. 9 worden daarom uitgebreid met
a
(=10) t.e.m.f
(=15).↩︎
Onkelinx, T.; Vermeersch, G. & Devos, K. (2023). 10.21436/inbor.89419879