I en undersøgelse har man ønsket at undersøge om der er en sammenhæng mellem BMI og hvorvidt man anvender sukker i sin te/kaffe. Man har derfor udvalgt en række deltagere, hvoraf nogle anvender sukker og andre ikke gør. Alle deltagere har derefter fået målt deres BMI. Først indlæses data:
df_sugar <- dget("https://statepi.statnoter.dk/data/sugar.robj") #indlæs datasæt, og gem i dataframen "df_sugar"
df_sugar[sample(600, 10), ] #vis 10 tilfældige linjer fra datasættet (som består af 600 rækker i alt)
BMI sugar
347 32.1 0
115 23.0 0
523 27.2 1
345 22.2 0
307 23.1 0
200 20.2 0
579 25.4 1
43 19.8 0
237 28.1 0
564 25.2 1
I dette tilfælde betragtes BMI som udfald, mens sugar betragtes som den binære prediktor. Spørgsmålet er altså om sugar er i stand til at sige noget om BMI? På et grundlæggende statistikkursus ville man spørge om middelværdien af BMI er signifikant forskellig i den gruppe der bruger sukker og den gruppe der ikke bruger sukker. Dette spørgsmål kan afgøres ved at beregne et konfidensinterval for middelforskellen mellem de to grupper, eller med en uparret t-test, hvilket sandsynligvis er en del af pensum på de fleste grundlæggende statistikkurser.
Her laves i stedet en lineær normal model, og det testes om der er nogen sammenhæng mellem prediktor (sugar) og outcome (BMI). Dette gøres som vist her:
model_sugar <- lm(formula = BMI ~ sugar, data = df_sugar) #definer en lineær model, og gem den i variablen "model_sugar"
summary(model_sugar) #print et resume af resultatet
Call:
lm(formula = BMI ~ sugar, data = df_sugar)
Residuals:
Min 1Q Median 3Q Max
-9.7717 -2.3513 0.1555 2.3555 9.1283
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.8717 0.1655 162.357 < 2e-16 ***
sugar1 -1.2272 0.2867 -4.281 2.17e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.31 on 598 degrees of freedom
Multiple R-squared: 0.02974, Adjusted R-squared: 0.02811
F-statistic: 18.33 on 1 and 598 DF, p-value: 2.167e-05
Alle beregningerne sker i linjen
lm(formula = BMI ~ sugar, data=df_sugar). lm
er en funktion (linear model) som tager 2 (eller flere) parametre. Først
en parameter (formula) som angiver hvad der er prediktor og
hvad der er outcome, idet man skriver outcome~prediktor (i
dette tilfælde BMI ~ sugar). Dernæst en parameter som
angiver den dataframe som indeholder de angivne variable.
Her gemmes resultatet af beregningerne i variablen
model_sugar, hvorefter det printes med
summary(model_sugar).
Resultatet ser umiddelbart kompliceret ud, men ofte kan man nøjes med at kigge på det der står under “Coefficients”.
Først og fremmest står middelforskellen (forskellen i middel-BMI mellem dem der benytter sukker og dem der ikke gør), under “Estimate” ud for “sugar1”, dvs. middelforskellen er -1,23 kg/m2. Her er det naturligvis vigtigt at være opmærksom på fortegnet (hvem har det mindste BMI?). Det kan aflæses ud af resultaterne, men ses nemmest på en graf (se næste side), så indtil videre må læseren vente nysgerrigt på at finde ud af om man får højere eller lavere BMI af at benytte sukker i kaffen (overvej iøvrigt gerne hvad der er galt med formuleringen i denne sætning).
Bemærk i øvrigt at når vi taler om lineære modeller, så vil tallet under “Coefficients” ud for en bestemt prediktor generelt blive omtalt som associationsmålet. Altså det tal der måler hvor “stærk” sammenhæng der er mellem prediktor og udfald. Når der er tale om en binær prediktor, så er associationsmålet en forskel mellem to middelværdier.
Dernæst er det naturligvis smart at kunne beregne et konfidensinterval for associationsmålet (middelforskellen). Det gøres nemt i R, som vist her:
confint(model_sugar, level = 0.95, parm = "sugar1")
2.5 % 97.5 %
sugar1 -1.790258 -0.6642423
Overvej hvad det beregnede konfidensinterval betyder!
Som nævnt indledningsvist svarer denne lineære model nøjagtigt til at lave en t-test. P-værdien for t-testen kan læses under kolonnen “Pr(>|t|)” i rækken “sugar1”, og er i dette tilfælde er denne 0,000022. Dette betyder at der er en statistisk signifikant forskel på BMI afhængigt af om man bruger sukker eller ej i teen. Eller med andre ord: Den observerede forskel i BMI mellem de to grupper (sukker og ikke-sukker), er for stor til at den blot kan skyldes den almindelige biologiske variation af BMI mellem forskellige individer. Men det kan man jo allerede se af konfidensintervallet, som fortæller at middelforskellen ikke kan være nul.
Hvis man skulle have glemt alt om p-værdier, så kan man med fordel læse om det på statnoter.dk kapitel 6 (man kan også lade være, da p-værdier i det store hele ikke bidrager med ny viden i forhold til konfidensintervallerne)
Denne side har fuldstændig ignoreret at der er nogle forudsætninger som skal være opfyldt, for at man kan anvende lineære normale modeller. Dette gennemgås på en af de følgende følgende sider.