Eksempel

Start med at indlæse datasættet BMI.robj, som indeholder sammenhørende målinger af BMI og alder.

#indlæsning af udvidelsespakker
library(jtools)
library(ggfortify)
library(ggplot2)

df_age <- dget("https://statepi.statnoter.dk/data/BMI.robj")
head(df_age)
    BMI AGE SEX
1 26.97  39   1
2 28.73  46   2
3 25.34  48   1
4 28.58  61   2
5 23.10  46   2
6 30.30  43   2

Formålet med indsamlingen af disse data er, at undersøge om gennemsnittet af populationens BMI afhænger af alder. Dvs. udfalds-variablen er BMI mens den relevante prediktor i dette tilfælde er alder.

Undersøgelsen af associationen mellem disse to variable kan igen foretages med en lineær normal model. Bemærk at når man arbejder med lineære modeller med en numerisk prediktor (lineær regression), så bør man altid lave en form for grafisk afbildning af data, med henblik på at tjekke om sammenhængen mellem prediktor og outcome nu også er nogenlunde lineær (evt. vha. de forudsætnings-plot vi har set på tidligere).

model_age <- lm(BMI ~ AGE, data = df_age) #definer først den lineære model

#lav derefter de tre plot med henblik på at undersøge om data lever op til forudsætningerne:
autoplot(model_age, which = 1:3)

Forudsætninger

De to plots “Normal Q-Q” og “Scale-Location” bruges, som tidligere, til at tjekke antagelse om varianshomogenitet og normalfordeling af residualer. Altså om den tilfældige variation i udfalds-variablen er uafhængig af værdien af prediktoren (og normalfordelt). I det konkrete tilfælde er spørgsmålet altså om befolkningens variation i BMI (indenfor en aldersgruppe) er den samme uanset hvilken aldersgruppe der er tale om. Hvis denne antagelse er opfyldt, skal “Normal Q-Q” være en ret linje, mens “Scale-Location” skal være en vandret linje. Begge dele ser ud til at være opfyldt (i hvert fald i tilstrækkelig grad).

Plottet “Residuals vs Fitted” bruges til at tjekke om der ser ud til at være en lineær sammenhæng mellem prediktor og udfald. I så fald skal den blå streg være omtrent vandret, hvilket med lidt god vilje ser ud til at være tilfældet. Som tidligere nævnt er denne forudsætning ikke noget man skal tage alt for strengt i undersøgelser som denne, men hvis der er tydelige afvigelser kan/bør man forsøge at transformere sine data.

Resultatet

Lad os prøve at få vist resultatet af beregningerne, samt et effektplot:

summary(model_age) #vis resultatet af beregningerne

Call:
lm(formula = BMI ~ AGE, data = df_age)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.9491 -3.0881 -0.4343  2.3378 19.7207 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 23.68057    2.71612   8.719 7.26e-14 ***
AGE          0.05331    0.05397   0.988    0.326    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.825 on 98 degrees of freedom
Multiple R-squared:  0.009858,  Adjusted R-squared:  -0.0002456 
F-statistic: 0.9757 on 1 and 98 DF,  p-value: 0.3257
effect_plot(model = model_age, pred = AGE, interval = TRUE)

interval = TRUE gør at der vises et “konfidensområde” på grafen - se forklaring længere nede.

Effektplottet

Effektplottet indeholder flere elementer:

Stregen viser det bedste bud på den “sande” sammenhæng mellem BMI og alder, dvs. baseret på disse målinger kunne det se ud til at der er en tendens til at middelværdien af BMI stiger fra 25,5 til 27, når alderen stiger fra ca. 35 til 65 år. Men som altid skal man huske at stregen kun er det bedste bud. Der er mange andre mulige sammenhænge - heldigvis har vi mulighed for at sige noget mere kvalificeret om hvilke sammenhænge der er mulige. Bemærk: Det betyder ikke noget at stregen er lineær. Det er en forudsætning for beregningerne, og denne streg vil derfor altid være en ret linje, uanset hvor meget data måtte afvige fra en lineær sammenhæng. Linearitet kan kun tjekkes vha. det første af de tre forudsætnings-plot (eller eventuelt vha. et klassisk punktdiagram, men det forudæstter at man ikke har alt for mange data).

Endelig skal man bemærke det grå område, som indikerer det område hvor det er sandsynligt at den “sande” sammenhæng befinder sig. Da det er muligt at trække en vandret streg, eller endda en streg med negativ hældning indenfor det grå område, kan man altså ikke afvise nul-hypotesen, om at der ikke er nogen ændring i BMI med alderen. Man kan for så vidt heller ikke afvise at BMI kunne aftage med alderen - det er bare mindre sandsynligt end at BMI stiger.

Beregningerne - associationsmål

Outputtet fra R viser flere forskellige resultater som alt efter konteksten kan være relevante:

Pr(|>t|)=0.326 for AGE: Dette er p-værdien for den nul-hypotese der siger at AGE ikke har nogen effekt på BMI. Da denne p-værdi er større end 0,05 vælger man at acceptere at nul-hypotesen kan være sand - helt i overensstemmelse med hvad man kan se på effekt-plottet.

Estimate = 23.7 for (Intercept) og Estimate = 0.053 for AGE. Dette er hhv. skæring og hældning for den rette linje som bedst beskriver sammenhængen mellem alder og BMI, dvs. den sorte streg på effekt-plottet. I denne situation er man næppe specifikt interesseret i disse tal, men der kan være tilfælde hvor de relevante (det er f.eks. kun disse tal der er relevante i forbindelse med kalibrering af et måleinstrument). Udtrykt matematisk står der altså at bedste bud på den gennemsnitlige sammenhæng mellem BMI og alder er: \[BMI = alder \cdot 0{,}053\mathrm{\frac{kg}{m^2\cdot år}} + 23.7 \mathrm{\frac{kg}{m^2}} \] Men husk at hældningen altså også kan være nul eller negativ.

I dette tilfælde er det hældningen (0,053) der er associationsmålet, idet dette tal fortæller hvor stærk sammenhængen mellem prediktor og outcome er. Her: At BMI stiger 0,053 kg/m2 hver gang alderen stiger med 1 år (stadig i gennemsnit - det siger naturligvis intet om enkeltpersoner).

Interceptet (eller skæringen med y-aksen) skal selvfølgelig bruges hvis man vil benytte resultatet til at komme med en forudsigelse af en persons BMI, men det siger intet om hvordan BMI ændres som funktion af alderen.

Korrelationskoefficienten

Multiple R squared = 0,009858. Dette er kvadratet på den såkaldte korrelationkoefficient, som man evt. kan læse mere om denne på statnoter.dk side 2.13. R2 siger noget om hvor præcist man kan forudsige en persons BMI hvis man kender vedkommendes alder. Det er derfor ikke så overraskende at R2 er tæt på 0 (svarende til ingen sammenhæng). Det fremgår også hvis man ser på punktdiagram med alle målingerne:

ggplot(data = df_age) + geom_point(aes(x = AGE, y = BMI))

Vi kan også plotte både punktdiagram og effektplot sammen:

effect_plot(model = model_age, pred = AGE, plot.points = TRUE, interval = TRUE)

Det er naturligvis næsten umuligt at forudsige BMI ud fra alder, men måske er der altså en lille tendens til at BMI vokser med alderen. Hvis korrelationskoefficienten er 1 svarer det til en perfekt sammenhæng. Dvs. at hvis man kender værdien af prediktoren så vil man uden nogen usikkerhed kunne forudsige værdien af udfaldet. Dette ses naturligvis sjældent indenfor epidemiologisk forskning, men er relevant f.eks. i forbindelse med kalibrering af måleapparater.

Konfidensinterval

Afslutningsvist vil man ofte gerne have et konfidensinterval for hældningen (altså tallet 0,053 fra resultatet).Vi har en grafisk illustration af dette i effektplottet, hvor vi kan se at hældningen godt kan være negativ. Men man vil typisk gerne kunne sætte tal på. Dette gøres nemt, som vi tidligere har set:

confint(model_age, parm = "AGE")
         2.5 %    97.5 %
AGE -0.0537875 0.1603989

Dvs. baseret på vores data er det muligt at BMI falder 0,05 enheder på år, eller at det stiger 0,16 enheder pr. år, og alt derimellem.