5 Reproduceerbaarheid en traceerbaarheid van de gegevensverwerking

5.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, 2021). 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, 2019a), dat vrij online beschikbaar is. De tekstbestanden met de gegevens zijn momenteel niet publiek toegankelijk. De ruwe gegevens worden op hokniveau en met drie jaar vertraging publiek ontsloten via GBIF (Vermeersch et al., 2018a).

5.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 (§3.2). Dit resulteert in een resem op zichzelf staande analyseobjecten van het n2kanalysis package (Onkelinx, 2019b). Dergelijk analyseobject bevat naast de nodige gegevens en de modeldefinitie tevens de nodige metadata zoals alle gebruikte R packages, inclusief hun versie, en een verwijziging naar de voorafgaande analyses waarvan deze analyse afhangt. Zo verwijst de analyse van een samengestelde index (§3.6) naar de trendberekening van de bijhorende soorten (§3.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.

5.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:

  1. Ze zetten elke invoer om naar een uitvoer met vaste lengte (40 hexadecimale cijfers).
  2. De uitvoer is stabiel: als je de hash van een bepaalde invoer opnieuw berekent krijg je steeds dezelfde uitvoer.
  3. Het is niet mogelijk om de invoer te reconstrueren op basis van de uitvoer.
  4. Eenders welke kleine wijziging aan de invoer resulteert in een sterke wijziging van de uitvoer.
  5. 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 definïeren 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.

5.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 ale platte tekstbestanden. Elke resultatenset bestaat uit twee bestanden:

  • een bestand met .tsv extensie. Dit bevat de eigenlijke resultaten als tabgescheiden platte tekstformaat. Je kan dit openen met je favoriete rekenbladprogramma.
  • een bestand met .yml extentie. Dit platte tekstbestand bevat metadata over de inhoud van de het .tsv bestand. Je hebt dit bestand nodig indien de gegevens wilt inlezen met het git2rdata 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 strict genomen niet nodig.

5.4.1 Indicatoren

  • samengestelde indices: samengesteld.tsv en samengesteld.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;
    • lcl90 en ucl90: de onder- en bovengrens van het 90% betrouwbaarheidsinterval rond de schatting;
    • lcl60 en ucl60: de onder- en bovengrens van het 60% betrouwbaarheidsinterval rond de schatting;
    • lcl30 en ucl30: de onder- en bovengrens van het 30% betrouwbaarheidsinterval rond de schatting;
    • klasse: interpretatie van de wijziging (zie §4.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.tsv en samengesteld_soorten.yml.
    • soort: naam van de soort;
    • indicator: naam van de samengestelde indicator;
    • ondergrens en bovengrens: grenzen voor de opdelingen van de effecten in klassen (zie §4.2)

5.4.2 Individuele soorten

  • gemiddeld aantal op een meetpunt: aantallen.tsv en aantallen.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;
    • lcl90 en ucl90: de onder- en bovengrens van het 90% betrouwbaarheidsinterval rond de schatting;
    • lcl60 en ucl60: de onder- en bovengrens van het 60% betrouwbaarheidsinterval rond de schatting;
    • lcl30 en ucl30: de onder- en bovengrens van het 30% betrouwbaarheidsinterval rond de schatting;
    • analyse: data-hash van de analyse;
    • status: data-hash van de status van de analyse
  • lineaire trends: lineaire_trend.tsv en lineaire_trend.yml.
    • soort: Nederlandse soortnaam;
    • frequentie: trend op basis van jaarlijkse of driejaarlijkse gegevens;
    • jaarlijks: gemiddelde jaarlijkse wijziging (zie §3.2.3;
    • looptijd: gemiddelde wijziging over de looptijd van de tijdsreeks;
    • klasse: interpretatie van de wijziging (zie §4.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.tsv en index.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;
    • lcl90 en ucl90: de onder- en bovengrens van het 90% betrouwbaarheidsinterval rond de schatting;
    • lcl60 en ucl60: de onder- en bovengrens van het 60% betrouwbaarheidsinterval rond de schatting;
    • lcl30 en ucl30: de onder- en bovengrens van het 30% betrouwbaarheidsinterval rond de schatting;
    • klasse: interpretatie van de wijziging (zie §4.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.tsv en stratum_gewicht.yml.
    • soort: Nederlandse soortnaam;
    • stratum: naam van het stratum;
    • gewicht: gewicht van het stratum voor deze soort (zie §3.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;

  1. 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/m 9 worden daarom uitgebreid met ‘a’ (=10) t/m ‘f’ (=15).↩︎