2.1. one-sample t-test (Volledig)

Log in om je oplossingen te testen.
--- title: 'PC-practicum2: one-sample t-test' output: html_document --- # 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. # 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 <- read.table("https://raw.githubusercontent.com/statOmics/statistiekBasisCursusData/master/practicum2/glucose.dat", header = TRUE) glucose ``` # Vraag 1: Teken een dotplot van de gepaarde uitkomsten en beschrijf wat u ziet. `De benaming "dotplot" is verwarrend in ggplot` Gebruik hiervoor een ggplot visualisatie en sla deze op in `dotplot`. Laad eerst de nodige R libraries; ggplot2 en dplyr. ```{r} library(ggplot2) library(dplyr) ``` ```{r} # kunnen we dezelijn vermijden? ggplot aes() vraagt x eny, maar we willen enkel x plotten... glucose$index <- 1:8 ``` ```{r} dotplot <- ggplot(data=glucose) + # specifieert het doelwit data object geom_point(aes(x=index,y=voor),col="black") + # de "voor" metingen geom_point(aes(x=index,y=na),col="red") + # de "na" metingen ylim(0,12) + # zet de limieten van de y-as tussen 0 en 12 theme_bw() + # lay-out optie ggtitle("glucosegehaltes") # titel dotplot ``` In de dotplot stelt de x-as de 8 patiënten voor en de y-as staat voor het gemeten glucosegehalte. De zwarte punten zijn de `voor` metingen, en de rode punten zijn de `na` metingen (Probeer dit zelf te bekomen door de `R` code te interpreteren!). 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: Bereken de verschillen in plasmaglucose We maken een nieuwe variabele `diff` aan die het verschil aanduidt tussen de `na` en `voor` metingen. Sla je resultaat op in de variabele `diff`. ```{r} na <- glucose$na voor <- glucose$voor diff <- glucose$na-glucose$voor diff ``` # Vraag 3: 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. Sla je resultaat op in de variabele `se`. ```{r} se <- sd(diff)/sqrt(8) # standard error op gemiddeld verschil se ``` De standard error 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. `Voor meer uitleg hieromtrent, zie de Points of Significance Paper 'Importance of being uncertain' op Ufora. Wordt deze nog gebruikt?` # One-sample t-test en 95% Betrouwbaarheidsinterval op het verschil 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. # Vraag 4: Maak een qq-plotom normaliteit van het verschil tussen de twee meetingen na te gaan 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 %>% ggplot(aes(sample = diff)) + geom_qq() + # qq-punten geom_qq_line() + # qq-lijn theme_bw() plot_qq ``` De data ligt rond de lijn die men zou verwachten indien de data inderdaad een normale distributie volgen. Op basis van de QQ-plot zien we geen reden om de normaliteitsassumptie te verwerpen. We kunnen er dus van uitgaan dat er aan de assumptie van normaliteit voldaan is. 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`. # Vraag 5: one sample t-test (1) 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_1`. ```{r} t_test_1 <- t.test(diff) t_test_1 ``` **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(diff)$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(diff),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(diff),2)` mmol/l hoger liggen dan voor deze toediening. Dit verschil is significant op het 5%-significantieniveau (p = `r round(t.test(diff)$p.value,3)`).** De t-test geeft ook een 95% betrouwbaarheidsinterval weer van `r t.test(diff)$conf.int[1]` tot `r t.test(diff)$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(diff)$conf.int[1],2)` mmol/l tot `r round(t.test(diff)$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.** `zou ik niet tonen` # t-test Een alternatieve manier om dezelfde test uit te voeren is een gepaarde t-test uit te voeren op de `voor` en `na` metingen. In andere woorden, bij gepaarde data, is een one-sample t-test op het verschil identiek aan een paired t-test op de gepaarde (`voor` en `na`) metingen. Sla het resultaat op in een object met naam `t_test_2`. ``` t_test_2 <- t.test(voor, na, paired = TRUE) #t_test_2 <- t.test(na, voor, paired = TRUE) # geeft hetzelfde resultaat, maar in de andere richting t_test_2 ``` Merk op dat de tekens veranderd zijn in de output van deze test (bvb. $\bar{x}$ is nu `r mean(voor-na)`), omdat hier de `na` meting werd afgetrokken van de `voor` meting. # 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.
Je kunt zo vaak indienen als je wenst. Er wordt enkel rekening gehouden met je laatst ingediende oplossing.
Log in om je oplossingen te testen.