Inleiding

Biometrie betekent het vaststellen van meetbare eigenschappen van levende wezens. Dit kan bijvoorbeeld betekenen lichaamsgewicht, lengte van ledematen, levensduur, sexe. Biometrische kenmerken worden ook gebruikt in je paspoort.

Vandaag dag ga je met een groepje van 3 of 4 medestudenten bezig met het vaststellen van de hand lengte / breedte ratio, in het bijzonder in afhankelijkheid van sexe.

Aan de hand van dit onderwerp gaan we in eenvoudige vorm de gehele wetenschappelijke cyclus doorlopen. Maak je geen zorgen als je de code nog niet helemaal snapt; die kan je gewoon overnemen en aanpassen voor je eigen data.

Voor dit eerste onderzoekje in de module zal je erg geleid werken. De data verzameling doe je echt zelf maar de dataverwerking en -analyse grotendeels naar voorbeeld. In je eigen “grote” onderzoek van deze module ga je onder begeleiding dit proces zelf bedenken en uitvoeren.

Lees dit document eerst een keer helemaal door voordat je zelf aan het werk gaat.

Het staat je vrij een ander simpel te meten biometrisch kenmerk te onderzoeken. Voorwaarde is wel dat je twee aspecten meet (bv lichaamslengte en hoofdomtrek) en hun relatie onderzoekt, en ook dat je verschillende groepen onderzoekt (man/vrouw, jong/oud etc.). Ten slotte moeten verschillende studenten het meetwerk afwisselen en ook dat moet vastgelegd worden.

Voorbereiding

Formuleer de onderzoeksvraag

Voordat je verder gaat moet je je onderzoeksvraag formuleren. Wat is de centrale vraag die je in je onderzoek beantwoord wil hebben? We zullen de onderzoeksvraag hier als volgt definieren:

“Is er bij de mens een sexe verschil in de lengte/breedte ratio van de hand?”

Formuleer de hypothese

Nu er een vraag geformuleerd is kan je een hypothese gaan opstellen. De hypothese beschrijft de verwachte uitkomst van je onderzoek. Voor dit onderzoek is de hypothese geformuleerd simpelweg door de onderzoeksvraag om te zetten in een stelling:

“Er is bij de mens een sexeverschil in de lengte/breedte ratio van de hand.”

En de nulhypothese dan?

Misschien heb je al wel eens gehoord van de nulhypothese. Dit is de tegenhanger van de hypothese, gebruikt in de statistiek. De nulhypothese stelt altijd dat een onderzocht effect niet bestaat, het uitgangspunt van alle statistische toetsen. Hier zou de nulhypothese dus zijn

“Er is bij de mens geen verschil in de lengte/breedte ratio van de hand.”

Ontwerp het experiment

Als je je onderzoeksvraag hebt geformuleerd zal je een manier moeten bedenken om die vraag beantwoord te krijgen. Als we de onderzoeksvraag wat gedetailleerder bekijken zien we daar drie verschillende aspecten (variabelen) in zitten: de sexe, de hand-lengte en de hand-breedte. We zullen dus een manier moeten vinden om van een groep mensen deze drie variabelen vast te stellen. Hoe groot deze groep moet zijn om een betrouwbaar antwoord te vinden is een heel belangrijke vraag die je bij een volgende module zeker gaat behandelen. Voor nu kiezen we gewoon een redelijk aantal waarvan het haalbaar is om die in ongeveer anderhalf uur tijd te meten.

Sommige wetenschappers zullen tegenwerpen dat je pas van een experiment spreekt als ar sprake is van ingrijpen, en dat is hier natuurlijk niet het geval. Wij hanteren hier de Wikipedia definitie van een experiment:

Experiment

Een experiment is een zorgvuldig opgezette en nauwkeurige observatie van een stukje werkelijkheid dat kan worden uitgevoerd om een wetenschappelijke hypothese te testen.

Ons experiment ziet er nu als volgt uit.

Van 40 proefpersonen, gelijk verdeeld over mannen en vrouwen en willekeurig geselecteerd in en rond het schoolgebouw, zal de sexe gevraagd worden en vervolgens de handlengte en -breedte gemeten worden.

Ontwerp het protocol

Om te garanderen dat verschillende onderzoekers de metingen op dezelfde reproduceerbare manier doen wordt de uitvoering van een experiment bij goed onderzoek in een protocol vastgelegd.

Protocol

Een wetenschappelijk (onderzoeks-) protocol beschrijft gedetailleerd de volgorde en uitvoering van stappen die in een experiment gezet moeten worden om tot een reproduceerbaar resultaat te komen.

Voor dit experiment is het (meet)protocol hieronder beschreven.

Protocol voor meting handlengte en handbreedte

Benodigdheden
  1. Maatlat, schuifmaat of meetlint.
  2. Spreadsheet om resultaten vast te leggen, met toegang hiertoe op locaties zonder internet-toegang.
  3. Je laborant-ID: een unieke identifier die jou als onderzoeker identificeert. Neem hiervoor de laatste 4 cijfers van je studentnummer.
Data verzamelen

Zoek, samen met een ander groepje van je klas, in of rond het schoolgebouw medestudenten. Vraag beleefd of ze willen participeren in een klein wetenschappelijk onderzoekje voor school waarbij de maten van de hand opgenomen zullen worden.
Is het antwoord nee, dan groet je vriendelijk en zoek je verder.
Is het antwoord ja, dan vraag je of de proefpersoon de hand horizontaal en gestrekt wil houden met de palm naar beneden. Vervolgens meet je zowel de lengte als de breedte van de hand op, in millimeters. Deze leg je vast in de spreadsheet, samen met je laborant-ID en een identifier (géén naam!) van de proefpersoon. Ten slotte vraag je aan de proefpersoon zijn/haar/hun sexe en legt deze vast. Wil de proefpersoon deze niet geven, of is die nonbinair, dan leg je dit vast als “anders/onbekend”. Het “parallel groepje” (dat niet jouw bevindingen mag horen) doet dezelfde meting en slaat deze met dezelfde participant identifier op.
Bedank de proefpersoon voor deelname.
Wissel de metingen af tussen de verschillende studenten in jouw groepje.

Ga door totdat van ten minste 40 proefpersonen de gegevens zijn verzameld.

Uitvoering

Ga aan de slag! Bestudeer het protocol aandachtig en bespreek onderling hoe je het gaat aanpakken. Als er onduidelijkheden zijn bespreek je deze met de docent. Verzamel vervolgens de data en kom terug als je van 40 personen de data hebt verzameld. Je hebt hier ongeveer anderhalfuur voor.
Zorg er in ieder geval dat je alle metingen goed opslaat en er snel mee aan de slag kan.

Je moet de onderzoeksresultaten in deze vorm opslaan:

laborant_ID,subject_ID,handlengte,handbreedte,sexe
3241,G1_03,113,104,m

Dit type databestand noemen we csv wat staat voor “comma-separated values”. Het is daarom het handigste als je je bestand een .csv extensie geeft. Als alternatief kan je het in excel opslaan en daarna exporteren naar csv.

Analyse

We gaan nu een data-analyse uitvoeren op de verzamelde biometrische gegevens.

Wat je moet inleveren

Voor de verwerking en analyse van je eigen data maak je gebruik van het aangeleverde template RMarkdown document. Daarin doorloop je dezelfde onderzoeksstappen als hieronder, maar dan met je eigen data. Aan het einde van de dag gaat dat document, in originele en “geknitte” vorm, samen met je databestand, in een git repo die is opgezet volgens voorschift in de cursushandleiding. De link hierna gaat in je portfolio op eJournal. Let op dat je alle stappen hebt doorlopen voordat je inlevert. Gebruik ook de RStudio spellingscontrole!
Vergeet niet jullie namen en studentnummers bovenaan de markdown te zetten!

Als het goed is heb je nu een spreadsheet met daarin vier kolommen en 40 rijen. De kolommen zijn: hand_lengte, hand_breedte, sexe en laborant_ID.

Om de rest van dit practicum te kunnen voordoen worden gesimuleerde data gebruikt. Gesimuleerde data zijn data die niet echt gemeten zijn, maar kunstmatig samengesteld op basis van vooropgezette ideeen over de aard van de data.

Hier zijn de gesimuleerde data. Ze zitten al in een data frame.

sim_data
##    tech_ID hand_length hand_width gender
## 1     3134   107.36163   90.20092      f
## 2     3134    98.55931   78.91056      f
## 3     3134    97.00358   73.98825      f
## 4     3134   108.74788   74.38382      f
## 5     3134   101.73746   85.50724      f
## 6     3134   108.24860   75.16627      f
## 7     3134   110.77049   92.25934      f
## 8     3134   107.11374   84.92682      f
## 9     3134   122.94990   74.30795      f
## 10    3134    92.43992   80.80366      f
## 11    3134   120.35583   97.08825      m
## 12    3134   115.35966   96.40534      m
## 13    3134    99.69219  104.70108      m
## 14    3134   111.42060  113.47554      m
## 15    3134   115.73551  106.96923      m
## 16    3134   114.82976   91.50933      m
## 17    3134   107.07510  112.88075      m
## 18    3134   105.26658   99.90833      m
## 19    3134   112.79134   96.30404      m
## 20    3134   101.07306   97.41011      m
## 21    3245   100.91851   75.71899      f
## 22    3245    79.59353   90.83587      f
## 23    3245    76.96255   65.10785      f
## 24    3245    83.62435   86.53701      f
## 25    3245    77.25653   78.37951      f
## 26    3245   102.55690   81.51985      f
## 27    3245    99.72391   86.08989      f
## 28    3245    91.79959   86.47279      f
## 29    3245    93.70799   81.25694      f
## 30    3245    64.32239   94.61460      f
## 31    3245   101.62729   91.29781      m
## 32    3245   113.19417  107.32987      m
## 33    3245   109.55074   95.30915      m
## 34    3245    99.21153  105.53079      m
## 35    3245    90.61605   97.79614      m
## 36    3245    84.58661   97.15676      m
## 37    3245    95.95259   94.02660      m
## 38    3245   110.18851   85.54245      m
## 39    3245   126.58701   79.58761      m
## 40    3245    96.66482  104.50437      m

Lees je eigen data in

Om data vanuit een tekstbestand in te lezen kan je dit codeblok gebruiken, aannemend dat je data er exact zo uitzien als in bovenstaande voorbeeld:

data_file <- "pad/naar/jouw/databestand.csv"

#data format: laborant_ID,subject_ID,handlengte,handbreedte,sexe
biometric_data <- read.table(file = data_file,
                        header = TRUE,
                        sep = ",")

Let op: als je missende data hebt moet je die specificeren door dit argument toe te voegen: na.strings = "<jouw NA symbool>"

Beschrijvende statistiek

Je hebt je data verzameld en ingelezen. Nu is het tijd om er een eerste verkenning op uit te voeren.

Allereerst berekenen we de lengte/breedte ratio, want dat was immers de onderzoeksvraag. Onderstaande code voegt een extra kolom toe aan de dataframe.

sim_data$ratio <- sim_data$hand_length / sim_data$hand_width
head(sim_data)
##   tech_ID hand_length hand_width gender    ratio
## 1    3134   107.36163   90.20092      f 1.190250
## 2    3134    98.55931   78.91056      f 1.249000
## 3    3134    97.00358   73.98825      f 1.311067
## 4    3134   108.74788   74.38382      f 1.461983
## 5    3134   101.73746   85.50724      f 1.189811
## 6    3134   108.24860   75.16627      f 1.440122

De R code in de chunks hieronder hoef je nog niet zelf te kunnen doen, maar hopelijk snap je wel wat er gebeurd. Als je iets meer van een functie wilt weten kan je in de console ?<>functie_naam intypen zodat je de documentatie ervan krijgt.

Laten we eerst eens naar de gemiddelden kijken per sexe. Het is natuurlijk mogelijk om dat “handmatig” per sexe uit te voeren, zoals hier

mean(sim_data[sim_data$gender == "f" , "hand_length"]) # vrouwen
## [1] 96.26994
mean(sim_data[sim_data$gender == "m" , "hand_length"]) # mannen
## [1] 106.5889

Selecteren uit een dataframe is als zeeslagje spelen: tussen de blokhaken moet je [<rijen>, kolommen] selecteren gebruikmakend van adres (index), naam of logische operatie.

Efficiënter en mooier is het op deze manier te doen:

tapply(X = sim_data$hand_length, # split wat
       INDEX = sim_data$gender,  # split op
       FUN = mean)               # pas functie toe
##         f         m 
##  96.26994 106.58895

Echter, omdat je dit ook voor de handbreedte wil doen is dit nog beter:

#split over gender into list of dataframes
gender_split_data <- split(x = sim_data,
      f = sim_data$gender)

#apply a function to report means of both measurements
sapply(X = gender_split_data,
       FUN = function(x){
           c(hand_length = mean(x$hand_length),
             hand_width = mean(x$hand_width),
             ratio = mean(x$ratio))
       })
##                     f          m
## hand_length 96.269938 106.588948
## hand_width  81.849406  98.736677
## ratio        1.187848   1.089838

Kan jij een van bovenstaande stukken code aanpassen zodat ook de standaarddeviatie (sd) wordt gerapporteerd? Is er verschil in spreiding van de data tussen de sexen?

Deze tabel laat zien dat er een verschil is tussen mannen en vrouwen, in zowel handlengte, -breedte en de ratio. Een boxplot laat dat ook mooi zien, en nog veel meer.

Boxplot

Dit is een grafische weergave van de “vijf-getallensamenvatting” (five number summary). Deze bestaat uit het minimum, het eerste kwartiel, de mediaan (of tweede kwartiel), het derde kwartiel en het maximum van de waargenomen data. Uitbijters (outliers) worden als losse punten weergegeven.

Je ziet hieronder hoe gemakkelijk het uitsplitsen op groepen -geslacht in dit geval- is wanneer je de “formule-variant” van de boxplot functie gebruikt.

Deze workshop maakt gebruik van de plotting bibliotheek ggplot2. Die moet je importeren door library(ggplot2) bovenaan te zetten. In “basis” R zitten ook plotting functies, maar die zijn veel minder mooi dus die slaan we over.

library(ggplot2)
# maak de plot en voeg lagen toe
ggplot(data = sim_data,
       mapping = aes(x = gender, y = hand_length, fill = gender)) +
    geom_boxplot() +                            # boxplot visualisatie
    labs(x = "Sexe", y = "hand lengte (mm)") +  # as-labels
    theme_minimal()                             # beetje schoner plotje maken

Hier nog een voor de andere variabele.

#library(ggplot2) #hoeft niet nog een keer!
# maak de plot en voeg lagen toe
ggplot(data = sim_data,
       mapping = aes(x = gender, y = hand_width, fill = gender)) +
    geom_boxplot() +                            # boxplot visualisatie
    geom_point() +                              # met punten erbij
    labs(x = "Sexe", y = "hand breedte (mm)") + # as-labels
    theme_minimal()                             # beetje schoner plotje maken

De geom_point() functie

Gebruik de geom_point() functie als je ook de datapunten zelf wil laten zien

Een boxplot is een visuele data representatie die ongelofelijk veel informatie geeft in één oogopslag. Zo zie je zoals de definitie gaf de mediaan en de kwartielen, maar ook of er uitbijters zijn en of de verdeling “scheef” is. Die scheefheid heeft te maken met de verdeling van de data. In de volgende paragraaf gaan we naar de verdeling kijken.

Welke verdeling?

Voor een statistische analyse is het belangrijk om te weten wat de onderliggende verdeling, of distributie, van de data is. De meest simpele verdeling is de uniforme distributie, waarbij alle mogelijke waarden tussen het minimum en maximum exact dezelfde kans hebben.

Een voorbeeld is de verdeling van bacteriën in een reageerbuis, of bomen in een bos. Deze komt echter niet veel voor in de levenswetenschappen.
In de levenswetenschappen is het eigenlijk altijd de vraag of de data wel of niet normaal zijn verdeeld. De normaalverdeling ziet er zo uit.

Het is voor het gebruik van statistische testen heel belangrijk om te weten of de data normaal zijn verdeeld. Zo is de t-test (functie t.test()) alleen te gebruiken voor normaal verdeelde data. De t-test wordt gebruikt om te onderzoeken of twee steekproeven significant van elkaar verschillen. Zijn de data niet normaal verdeeld dan moet de Wilcoxon rank-sum test gebruikt worden; ook wel Mann-Whitney U test genoemd (functie wilcox.test()).

Hoe zit het nu met de verdeling van onze hand biometrie? Dat kan je op verschillende manieren benaderen. Visueel kan dit met histogram of density plot. Hier zie je beide, voor de ratio kolom.

ggplot(data = sim_data,
       mapping = aes(x = ratio, fill = gender)) +
    geom_histogram(bins = 10, colour = "black") + # histogram layer with 10 bins
    facet_wrap(. ~ gender) +                       # split plots over gender
    labs(x = "Length/width ratio") +
    theme_minimal()

De expressie facet_wrap(. ~ gender) zegt: splits alles in verschillende plots uit op gender.

Zit er een histogram tussen die lijkt op een normaalverdeling?

Hoe kleiner de steekproefgrootte (sample size) hoe lastiger het is de onderliggende verdeling vast te stellen. Speel maar eens met dit blokje code, en verander de steekproefgrootte (n=) in de rnorm() functie en de breaks= in de hist() functie. Neem voor n bijvoorbeeld achtereenvolgens 10, 100, 1000, 10000, 10000 en voor breaks 5, 10, 50. Wanneer zie je een echte normaalverdeling verschijnen?

hist_data <- data.frame(x = rnorm(n = 100))
ggplot(data = hist_data,
       mapping = aes(x = x)) +
    geom_histogram(bins = 10, fill = "gold", colour = "black") +
    theme_minimal()

Dit experiment met de argumenten van rnorm() en hist() moet je opnemen in je eigen RMarkdown.
Beantwoord deze vragen:

  1. Wat gebeurt er met de vorm van de verdeling als n groter wordt?
  2. Wat gebeurt er met de spreiding van de data (x-as) als n groter wordt, en kan je dat verklaren?
  3. Waarom is bij zelfde instellingen voor n en breaks de uitkomst toch verschillend?
  4. Welke minimale n geeft het meeste kans om een echte normaalverdeling te zien?
  5. Wat voor bijzonders is er aan de hand met het breaks argument? Geeft de documentatie daar een verklaring voor?

Bronnen van variatie

We hebben tot nu toe gekeken naar de verschillen tussen man en vrouw. De variatie daarin noemen we biologische variatie. Alles in de biologie kent variatie, door milieu of door genetica. Echter, als je in een experiment dingen meet doet een persoon dat en gebruik je meestal instrumenten. Dat noemen we experimentele variatie. Twee meetlatten kunnen net anders gefabriceerd worden, en een onderlinge -maar dan reproduceerbare afwijking hebben ten opzichte van elkaar. Aan de andere kant kan het zijn dat twee laboranten experimenten net op een verschillende manier uitvoeren. Deze laatste bron van variatie gaan we hier onderzoeken.

Onderstaande boxplot geeft de meetwaarden voor handlengte uitgesplitst op laborant_ID.

ggplot(data = sim_data,
       mapping = aes(x = tech_ID, y = hand_length, fill = tech_ID)) +
    geom_boxplot(colour = "black") +
    theme_minimal()

Er lijkt hier duidelijk sprake van een systematische fout (bias): Laborant 3245 heeft schijnbaar consequent een kleinere lengte gemeten.

Systematische fout

Een systematische fout, ook wel (systematische) bias genoemd, is in de statistiek een zogenaamde niet-steekproeffout die een vertekening (dat wil zeggen, een afwijking ten opzichte van het juiste resultaat) oplevert die een systematische oorzaak heeft, en dus niet te wijten is aan toevallige effecten.

We kunnen de ggplot gebruiken om op beide variabelen uit te splitsen:

ggplot(data = sim_data,
       mapping = aes(x = gender, y = hand_length)) +
    geom_boxplot(fill = "darkgreen") +
    facet_wrap(. ~ tech_ID) +
    ylab("hand lengte (mm)") +
    theme_linedraw()

Je ziet hier twee bronnen van variatie in actie: systematische bias die hoogstwaarschijnlijk veroorzaakt is door de laboranten en biologische variatie tussen mannen en vrouwen.

Biologische variatie

Dit is het verschijnsel dat verschillende individuen van één soort van elkaar verschillen.
Biologische variabiliteit kan verschillende oorzaken hebben.

  • Omgeving: De vorm en de grootte van een plant kan bijvoorbeeld sterk beïnvloed worden door de hoeveelheid zonlicht en water die de plant krijgt
  • Gedrag: Door training kunnen bijvoorbeeld bij mensen bepaalde spierbundels vergroot worden
  • Overerving: Ieder organisme erft een andere set allelen van de ouders (met uitzondering van eeneiigie meerlingen)
  • Mutaties: Mutaties zijn veranderingen in het erfelijk materiaal (DNA) van een organisme
  • Epigenetica: Epigenetische factoren zorgen voor verschillen in de regulatie van de functie van het DNA

Welke bron van biologische variatie ligt volgens jou ten grondslag aan de gevonden verschillen in handlengte tussen mannen en vrouwen, en tussen mannen respectievelijk vrouwen onderling?

De hypothese aannemen?

Nu is het tijd om op de oorspronkelijke onderzoeksvraag (en hypothese) terug te komen. “Is er bij de mens een sexeverschil in de lengte/breedte ratio van de hand?” Bij deze gesimuleerde data lijkt het er wel op. Om er een waarschijnlijkheid bij te vinden dat dit echt zo is moeten we een statistische test uitvoeren.

Statistische toets

Een statistische toets is een methode om na te gaan of een bepaalde veronderstelling, nulhypothese genaamd, in het licht van de waarnemingsuitkomsten verworpen dient te worden.

De toetsen die je voor het beantwoorden van deze vraag kan gebruiken zijn de t-test als er sprake is van een normaalverdeling en de Mann-Whitney U test als dat niet het geval is.

We zullen daarom eerst onderzoeken of hier wel sprake is van normaliteit. Ook daar is -natuurlijk- een test voor: de Shapiro-Wilk test.

shapiro.test(sim_data$ratio)
## 
##  Shapiro-Wilk normality test
## 
## data:  sim_data$ratio
## W = 0.97289, p-value = 0.442

Als de p-waarde kleiner dan 0.05 is, is de verdeling van de steekproef significant verschillend van de normale verdeling. Dat is hier dus absoluut niet aan de orde. We kunnen dus gewoon de t-test gebruiken.

We gaan hier een onafhankelijke t-test uitvoeren (de two-sample independent).

female_ratios <- subset(sim_data, 
                        subset = gender == "f", 
                        select = ratio, 
                        drop = T) # drop = T forces ro a vector
male_ratios <- subset(sim_data, 
                        subset = gender == "m", 
                        select = ratio, 
                        drop = T)
t.test(female_ratios, male_ratios)
## 
##  Welch Two Sample t-test
## 
## data:  female_ratios and male_ratios
## t = 1.6039, df = 36.102, p-value = 0.1175
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.0259096  0.2219297
## sample estimates:
## mean of x mean of y 
##  1.187848  1.089838

Voor deze gesimuleerde data is de p-waarde 0.1175, weer hoger dan het standaard afsnijpunt van 0.05, wat betekent dat de nulhypothese niet wordt verworpen. De nulhypothese hebben we in het begin van dit document opgesteld.
Er is geen bewijs gevonden voor een significant verschil in hand lengte/breedte ratio’s tussen mannen en vrouwen.

Voor de volledigheid kunnen we ook nog de Mann-Whitney U test uitvoeren (die in R wilcox.test() heet).

wilcox.test(female_ratios, male_ratios)
## 
##  Wilcoxon rank sum exact test
## 
## data:  female_ratios and male_ratios
## W = 276, p-value = 0.04018
## alternative hypothesis: true location shift is not equal to 0

Deze zit net wel in het significantie bereik.

Wat nu te doen? Als je de krant wil halen met een leuk berichtje dan kies je het significante resultaat. Wil je robuuste wetenschap bedrijven dan ga je wat meer data verzamelen.

Vergelijk met andere groep

Vraag de data van je parallelgroep (die dezelfde proefpersonen hebben gemeten). Onderzoek of er verschillen in de resultaten zijn tussen jullie groepen. Als er verschillen zijn probeer deze dan te verklaren. Neem deze analyse op in je onderzoeksdocument.

Reflectie op het experiment

Bespreek in je groep de volgende vragen en voeg de antwoorden toe aan je uitgewerkte onderzoeksdocument.

  1. Zijn de metingen tussen de verschillende meters ook (significant) verschillend? Zo ja, waardoor zou je de verschillen kunnen verklaren?

  2. Onderzoek de verschillen tussen mannen en vrouwen met betrekking tot hand lengte, handbreedte en de ratio.

  3. Zou je het protocol aanpassen na deze ervaring, of was hij voldoende duidelijk en reproduceerbaar?