--- title: 'One-sample t-test oefening 1: Effect van glucose in het bloed' output: html_document: code_download: yes highlight: tango number_sections: yes theme: cosmo toc: yes toc_float: yes word_document: toc: yes --- # Effect van glucose in het bloed Men wil de invloed kennen van het toedienen van 100 gram glucose op het glucosegehalte in het bloed bij diabetische patiënten. Daartoe werd van acht diabetische patiënten het glucosegehalte gemeten (in mmol/l), zowel vóór als 1 uur na het toedienen van 100 gram glucose. Onderstaande tabel geeft deze concentraties voor de 8 patiënten weer. Deze gegevens vindt u terug in het bestand `glucose.dat`. Aan de hand van betrouwbaarheidsintervallen en statistische tests proberen we een besluit te formuleren op deze onderzoeksvraag. # R libraries inlezen ```{r} library(ggplot2) library(dplyr) #install.packages("tidyr") library(tidyr) ``` # Dataset glucose.dat inlezen Het inlezen van de dataset kan via onderstaand commando met behulp van de weblink waar de data is opgeslagen: ```{r} glucose_basis <- read.table("https://raw.githubusercontent.com/statOmics/statistiekBasisCursusData/master/practicum2/glucose.dat", header = TRUE) glucose_basis ``` Deze dataset is momenteel nog niet "tidy", in die zin dat bij tidy data elke observatie (glucose meting) op een aparte lijn zou staan. We kunnen de dataset als volgt "tidy" maken: ```{r} glucose_long <- gather(glucose_basis, tijdstip, meting, voor:na, factor_key=TRUE) glucose_long$index <- rep(1:8,times=2) glucose_long ``` De data is nu in "tidy" of ook wel "long" format omgezet. # Vraag 1: Maak een scatterplot van de gepaarde uitkomsten. In de vorige opdracht hebben we de glucose dataset ingelezen. Deze werd vervolgens omgezet in het “tidy/long” format en opgeslagen in de dataset glucose_long. Jullie hoeven deze dataset niet opnieuw te genereren. De glucose_long dataset bevat nu drie kolommen; tijdstip, meting en index (zie vorige opdracht). Gebruik nu een ggplot visualisatie om een scatterplot te maken waarin je elke meting uitplot t.o.v. de bijhorende index (observatie). Kleur de punten op basis van hun tijdstip. ```{r} scatterplot <- ggplot(data=glucose_long,aes(x=...,y=...,col=...)) + #specifeert de dataset en de "aesthetics" ... + # om scatterplot te maken ylim(0,12) + # zet de limieten van de y-as tussen 0 en 12 theme_bw() + # lay-out optie ggtitle("glucosegehaltes") # titel scatterplot ``` In de scatterplot stelt de x-as de 8 patiënten voor en de y-as staat voor het gemeten glucosegehalte. De rode punten zijn de `voor` metingen, en de blauwe punten zijn de `na` metingen. Men merkt dat de glucosegehaltes in de `na` metingen gemiddeld hoger lijken te zijn. In de volgende stappen zullen we bekijken of dit verschil significant is. # Vraag 2: Representeer de dataset door middel van boxplots Gebruik nu een ggplot visualisatie om een boxplot te maken. Meer specifiek, we willen een figuur met twee boxplots (1 voor elk tijdstip), die elk een verschillende kleur hebben. Toon ook de individuele observaties op de boxplots. ```{r} boxplot_1 <- ggplot(data=...,aes(...)) + #specifeert de dataset en de "aesthetics" ... + # om boxplot te maken ... + # om de inidividuele observaties weer te geven op de boxplot ylim(0,12) + # zet de limieten van de y-as tussen 0 en 12 theme_bw() + # lay-out optie ggtitle("glucosegehaltes") # titel ``` # Vraag 3: Representeer de dataset door middel van een line plot Gebruik nu een ggplot visualisatie om een line plot te maken. Deze plot moet (1) de individuele metingen tonen per tijdstip en (2) de paring van de data tonen, met name dat er voor elke index twee metingen zijn genomen. ```{r} lineplot <- ggplot(...) + #specifeert de dataset en de "aesthetics" ... + # om lineplot te maken ylim(0,12) + # zet de limieten van de y-as tussen 0 en 12 theme_bw() + # lay-out optie ggtitle("glucosegehaltes") # titel ``` # Vraag 4: Bereken de verschillen in plasmaglucose tussen de twee tijdstippen Maak in de dataset glucose_basis een nieuwe variabele verschil aan die het verschil aanduidt tussen de metingen na en voor het toevoegen van glucose aan het bloed voor elke patiënt. Maak ook in glucose_basis een nieuwe variabele index aan de rijen van de dataset nummert van 1 tot 8. ```{r} glucose_basis$verschil <- ... glucose_basis$index <- ... ``` # Vraag 5: Maak een boxplot van het verschil in plasmaglucose-gehaltes Gebruik nu een ggplot visualisatie om een boxplot te maken van het verschil in de glucose gehaltes. Toon opnieuw de individuele observaties op de boxplot. Sla het resultaat op in het object boxplot_2. ```{r} boxplot_2 <- ggplot(...,aes(x=0,y=...)) + ... + # om boxplot te maken ... + # om de inidividuele observaties weer te geven op de boxplot theme_bw() + # lay-out optie ggtitle("verschil in glucosegehaltes") # titel ``` # Vraag 6: Maak een qq-plot om normaliteit van het verschil tussen de twee metingen na te gaan Alvorens de one-sample t-test uit te voeren zullen we de voorwaarden van de test nagaan. De voorwaarden voor de one-sample t-test zijn: onafhankelijke gegevens (i.e. de patiënten die betrokken zijn in de studie zijn onafhankelijk van elkaar gekozen.) het verschil in glucosegehalte volgt een normale verdeling. Gezien de opzet van de studie kunnen we er van uit gaan dat de patiënten onafhankelijk van elkaar zijn. Om de assumptie van normale verdeling te checken, zullen we een QQ-plot gebruiken. Gebruik hiervoor een ggplot visualisatie en sla deze op in plot_qq. ```{r} plot_qq <- glucose_basis %>% ggplot(aes(sample = ...)) + ... + # qq-punten ... + # qq-lijn theme_bw() ``` # Vraag 7: Bereken de standaardfout van het gemiddelde verschil in plasmaglucose De standaardfout (*standard error*) van een gemiddelde berekenen we als $S_{\bar{X}} = S_X/\sqrt{n}$, met $S_X$ de standaarddeviatie van variabele $X$ en $n$ de steekproefgrootte. De standaardfout van het gemiddelde duidt de onzekerheid aan op dit gemiddelde. Merk op, dat de standard error omgekeerd evenredig is met de vierkantswortel van de steekproefgrootte. Dit houdt steek: hoe meer data we verzamelen, hoe kleiner de onzekerheid op ons gemiddelde omdat deze gebaseerd zal zijn op meer data. Om onze precisie op het gemiddelde bijvoorbeeld te verdubbelen, moeten we de steekproefgrootte verviervoudigen. ```{r} ... ``` # Vraag 8: de one-sample t-test Bepaal nu of het verschil in glucosegehalte in het bloed voor vs. na de toevoeging van glucose significant verschillend is van elkaar op het 5% significantieniveau. Bereken hiertoe een 95% betrouwbaarheidsinterval op het gemiddeld verschil in glucosegehalte. Dit kunnen we op vele manieren doen. Een handige, korte manier is via de t.test functie, die als standaard output een betrouwbaarheidsinterval meegeeft. Default zal de t.test functie een 95% betrouwbaarheidsinterval meegeven, maar dit kan je zelf ook wijzigen via het conf.level argument, zie ?t.test. Voer de t-test uit op het verschil in bloedglucose-gehalte voor en na toediening van glucose met de t.test functie. Sla het resultaat op in een object met naam t_test. ```{r} ... <- t.test(...) ``` **Interpretatie van de t-test en 95% betrouwbaarheidsinterval** Nul- en alternatieve hypothesen: $H_0: \mu = 0$ $H_1: \mu \ne 0$ met $\mu$ het populatiegemiddelde van het verschil in het glucosegehalte in het bloed na - voor de toediening van glucose. Indien we de nulhypothese kunnen verwerpen kunnen we, op basis van de steekproef, de conclusie dat het gemiddelde glucosegehalte in het bloed verschilt tussen de `voor` en `na` metingen veralgemenen naar de populatieparameter $\mu$. De t-test heeft een p-waarde van `r round(t.test(glucose_basis$verschil)$p.value,2)`. Tracht de p-waarde zelf te interpreteren. Deze p-waarde is lager dan ons significantieniveau $\alpha=0.05$. Hierdoor kunnen we besluiten dat de test significant is. Met andere woorden, we kunnen de nulhypothese verwerpen op het 5% significantieniveau en besluiten dat het gemiddeld verschil in glucosegehalte verschilt in de na vs. voor metingen. De t-test geeft ook weer dat het gemiddeld verschil (op basis van de steekproef!) $\bar{x}$ = `r round(mean(glucose_basis$verschil),2)`. Aangezien het gemiddeld verschil positief is, kunnen we stellen dat het gemiddelde glucosegehalte in het bloed, na toediening van glucose, significant hoger is in vergelijking met voor de toediening van glucose op het 5% significantieniveau. Onze volledige interpretatie luidt dus als volgt: **Het gemiddelde glucosegehalte in het bloed van diabetespatiënten zal, 1 uur na toediening van 100 g glucose, `r round(mean(glucose_basis$verschil),2)` mmol/l hoger liggen dan voor deze toediening. Dit verschil is significant op het 5%-significantieniveau (p = `r round(t.test(glucose_basis$verschil)$p.value,3)`).** De t-test geeft ook een 95% betrouwbaarheidsinterval weer van `r t.test(glucose_basis$verschil)$conf.int[1]` tot `r t.test(glucose_basis$verschil)$conf.int[2]`. **Dit 95% betrouwbaarheidsinterval omvat het populatiegemiddelde met een waarschijnlijkheid van 95%**. Men kan dit ook bekijken als volgt: indien men het experiment zeer veel keer zou herhalen en telkens een 95% betrouwbaarheidsinterval zou opstellen, dan verwacht men dat 95% van alle betrouwbaarheidsintervallen het werkelijke populatiegemiddelde $\mu$ zullen omvatten. De interpretatie van het 95%-betrouwbaarheidsinterval is dus als volgt: **Met een waarschijnlijkheid van 95% kunnen we stellen dat het interval `r round(t.test(glucose_basis$verschil)$conf.int[1],2)` mmol/l tot `r round(t.test(glucose_basis$verschil)$conf.int[2],2)` mmol/l de werkelijke gemiddelde toename in glucosegehalte in het bloed van diabetespatiënten na toediening van 100 g glucose omvat.** # Algemene conclusie Het toedienen van glucose aan diabetespatiënten resulteert in een significante stijging (p-waarde = $0.013$) van het glucosegehalte in het bloed op het 5% significantieniveau, waarbij het glucosegehalte gemiddeld gezien $2.22$ mmol/l (95% BI: $[0.62, 3.83]$) hoger ligt na de toediening.