Lineær regression (regressionsanalyse)

Regression

Med regression undersøger man sammenhængen (associationen) mellem to eller flere variabler. I en regressionsanalyse prædikteres en variabel (YY) af mindst én prædiktor (XX). Rent terminologisk siges YY at være afhængig af XX; YY er derfor den afhængige variabel, og XX er den uafhængige variabel.

Rolle i modellen Synonym
Y Variablen, der skal prædikteres Afhængig variabel, dependent variable, outcome, udfald, udfaldsmål, label, target
X Bruges til at prædiktere Y Prædiktor, predictor, feature, kovariat, covariate

Lad os antage, at vi undersøger sammenhængen mellem BMI (body mass index) og blodsukker. Med regression kan vi bruge den ene variabel til at prædiktere værdien af den anden. I dette tilfælde bruges BMI til at prædiktere blodsukker. BMI er således uafhængig (prædiktor), og glukose er afhængig (outcome).

Vi vil illustrere lineær regression med data fra Pima-indianere, som har meget høj risiko for diabetes. Data fra Pima-indianere findes i pakken mlbench. Installér mlbench, og aktivér pakken samt datasættet med Pima-indianere med følgende kommando:

library(mlbench)
data(PimaIndiansDiabetes)

## Graf med sammenhængen mellem mass og glucose
ggplot(data=PimaIndiansDiabetes,
       aes(x=mass, y=glucose, color=diabetes)) +
  geom_point() +
  geom_smooth()
Punktdiagram af BMI (mass) mod glukose efter diabetesstatus med blå regressionslinje og interceptet β0 markeret ved x = 0

Figuren ovenfor viser, hvordan BMI (mass) er associeret med blodsukker (glucose). I grafen ses en ret blå linje, som udgør regressionslinjen for mass. Sammenhængen mellem mass og glucose kan beskrives med en enkel formel.

Yi=b1Xi+b0+ϵiY_i = b_1 X_i + b_0 + \epsilon_i

  • b0b_0 er interceptet, dvs. det punkt, hvor regressionslinjen skærer Y-aksen (se figuren ovenfor).
  • b1b_1 er koefficienten for mass, hvilket betyder, at det er værdien af regressionslinjens hældning.
  • ϵi\epsilon_i er forskellen mellem modellens prædikterede værdi af YY og den observerede værdi af YY. Dette er altså modellens fejl (error).

Sammenfattende er dette en model, der prædikterer YY ved hjælp af en regressionslinje, hvis hældning er b1b_1. Interceptet (b0b_0) interesserer os meget sjældent. Modellens fejl (ϵi\epsilon_i) er et mål for, hvor god modellen er.

Målet er at skabe en regressionslinje, hvis hældning tilpasses, så den repræsenterer sammenhængen mellem XX og YY. Linjens hældning afhænger af sammenhængen mellem mass og glucose. Hældningen for mass kaldes også koefficienten for mass. Hvis glucose stiger med stigende mass, vil regressionslinjen have en positiv hældning. I figuren ovenfor ses det, at linjen har en positiv hældning, og derfor er koefficienten for mass positiv.

Bemærk, at relationen mellem XX og YY skal være lineær, for at den lineære model kan anvendes. Hvis sammenhængen ikke er lineær, kan den lineære model blive misvisende. Her følger et eksempel på en ikke-lineær sammenhæng mellem XX og YY. Den beregnede regressionslinje formår ikke at indfange sammenhængen mellem XX og YY.

Punktdiagram med U-formet ikke-lineær sammenhæng mellem prædiktor X og udfald Y, hvor en ret regressionslinje passer dårligt

Vi fortsætter med at oprette en lineær regressionsmodel i R. Det gøres med funktionen lm(), som findes i base R (du behøver ikke installere nogen pakke).

modell <- lm(glucose ~ mass, data=PimaIndiansDiabetes)

summary(modell)
Call:
lm(formula = glucose ~ mass, data = PimaIndiansDiabetes)

Residuals:
     Min       1Q   Median       3Q      Max
-128.970  -20.756   -3.705   19.509   81.568

Coefficients:
            Estimate Std. Error t value             Pr(>|t|)
(Intercept)  92.2129     4.7083  19.585 < 0.0000000000000002 ***
mass          0.8965     0.1429   6.274       0.000000000589 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 31.2 on 766 degrees of freedom
Multiple R-squared:  0.04887,	Adjusted R-squared:  0.04763
F-statistic: 39.36 on 1 and 766 DF,  p-value: 0.0000000005891
Punktdiagram af BMI (mass) mod glukose efter diabetesstatus med blå regressionslinje og interceptet β0 markeret ved x = 0

Af ovenstående resultat fremgår følgende:

  • Interceptet b0b_0 er 92,2, hvilket betyder, at regressionslinjen skærer Y-aksen ved Y=92,2, og det synes at stemme med den grafiske undersøgelse.
  • bBMIb_{BMI}, dvs. koefficienten for mass, er 0,8965. Det betyder, at hvis mass øges med 1 enhed, øges glucose med 0,8965 enheder.

Beregning af regressionslinjen

Fundamentalt for regressionsanalyse er beregningen af regressionslinjen. Den mest almindelige metode er least-squares method (på dansk mindste kvadraters metode). Least-squares kan også kaldes ordinary least-squares. Metoden skaber en linje, der minimerer summen af error. I nedenstående figur er de samme data som ovenfor (Pima-indianerne) forstørret i intervallet 50 til 150 på x-aksen og y-aksen for at tydeliggøre, hvad kvadratsummer er. I nedenstående figur ses også en regressionslinje.

Punktdiagram af mass mod glucose med en rød linje og lodrette streger, der viser afstanden fra hvert punkt til linjen

Least-squares sigter mod at skabe en regressionslinje, der minimerer summen af alle observationers error. I figuren ovenfor fremgår det, at regressionslinjens afstand til punkterne varierer meget. I intervallet 100 til 140 på x-aksen ligger linjen tæt på punkterne (error bliver lille), men uden for dette interval ligger linjen længere fra punkterne (error bliver større). Mindste kvadraters metode går ud på at minimere den samlede (totale) error. Linjen vippes frem og tilbage, indtil hældningen minimerer summen af alle error. Før man lægger alle error sammen, kvadreres de; formålet med dette er, at alle negative error (dem, der ligger under linjen) skal blive positive værdier. Summen af alle kvadrerede error kaldes RSS (Residual Sum of Squares). Den lineære models opgave er således at finde de b1b_1 og b0b_0, der minimerer RSS. Formlen for RSS er som følger:

RSS=(y1−B0^−B1^x1)2+(y2−B0^−B1^x2)2+…+(yn−B0^−B1^xn)2RSS = (y_1 - \hat{B_0} - \hat{B_1}x_1)^2 + (y_2 - \hat{B_0} - \hat{B_1}x_2)^2 + … + (y_n - \hat{B_0} - \hat{B_1}x_n)^2

Coefficient of determination: R2

For at estimere styrken af sammenhængen mellem XX og YY kan man bruge coefficient of determination, også kaldet R2R^2. Denne værdi går fra 0 til 1. Hvis R2R^2 er 0, er der ingen sammenhæng, og hvis R2R^2 er 1, er der en perfekt sammenhæng, hvilket betyder, at XX kan forklare hele variationen i YY.

Antagelser for regression med least-squares method

Følgende antagelser kræves, for at least-squares kan anvendes:

  1. Residualerne skal være normalfordelte med middelværdien 0. Dette kan kontrolleres med et såkaldt quantile-quantile plot. I et quantile-quantile plot skal der ses en ret linje, hvis antagelsen er opfyldt.
  2. Residualerne skal have konstant varians. Dette kan kontrolleres med et scatterplot af estimerede residualer mod fitted values. Scatterplottet skal vise en sky uden nogen sammenhæng mellem værdierne.
  3. Residualerne skal være uafhængige af hinanden. Dette er sjældent et problem, medmindre den samme person/celle/bakterie/enhed/etc. indgår flere gange i studiepopulationen. Hvis den samme person indgår flere gange i studiepopulationen (eksempelvis ved gentagne målinger af BMI og glukose), er disse observationers residualer afhængige af hinanden.

Punkt (1) og (2) kan let undersøges i R med følgende kommando, som returnerer alle nødvendige grafer:

plot(modell)
Residuals vs fitted: Residualer plottet mod fitted values. Her må der ikke foreligge noget mønster. Punkterne skal udgøre en sky uden association mellem residualer og fitted values.
Residuals vs fitted: Residualer plottet mod fitted values. Her må der ikke foreligge noget mønster. Punkterne skal udgøre en sky uden association mellem residualer og fitted values.
Quantile-Quantile plot (QQ plot): Dette skal vise en helt ret linje, hvilket er tilfældet her (selv om der er lidt afvigelse i yderpunkterne).
Quantile-Quantile plot (QQ plot): Dette skal vise en helt ret linje, hvilket er tilfældet her (selv om der er lidt afvigelse i yderpunkterne).
Scale-Location-diagram: kvadratroden af de absolutte standardiserede residualer mod fitted values for lm(glucose ~ mass)
Residuals vs Leverage-diagram med Cooks afstand for lm(glucose ~ mass), hvor nogle observationer er nummererede

Prædiktion med regression

Regressionsmodellen kan bruges til prædiktion. Det betyder, at vi kan gætte værdien af Y for en given værdi af X. Det kan eksempelvis være af interesse at forudsige, hvad glucose vil være ved en given mass. For at gøre dette opretter vi nu en ny model med specifikationen glucose ~ ., hvilket betyder, at vi modellerer glucose mod alle andre variabler. Derefter bruger vi predict() med modelobjektet (modell_2) og angiver, hvilke data vi vil teste modellen på. I dette tilfælde tester vi på de samme data, som vi trænede på, hvilket ikke anbefales. Vi gemmer den prædikterede værdi som en ny kolonne (Predicted_Glucose) i samme dataframe. Allersidst udskriver vi de første 10 rækker med observerede værdier og prædikterede værdier.

modell_2 <- lm(glucose ~ ., data=PimaIndiansDiabetes)

PimaIndiansDiabetes$Predicted_Glucose <- predict(modell_2, newdata=PimaIndiansDiabetes)

select(PimaIndiansDiabetes, glucose, Predicted_Glucose) %>%
  slice(1:10)
        glucose     Predicted_Glucose
1	148	    134.03797
2	85	    100.53489
3	183	    130.46052
4	89	    106.04599
5	137	    145.69693
6	116	    106.94069
7	78	    128.57557
8	115	    98.26398
9	197	    181.40914
10	125	    136.97599

Multipel regression

Hvis vi vil undersøge, hvordan BMI (mass) samvarierer med glukose (glucose) og samtidig tage højde for alder, bruger vi multipel regression. Definitionen af multipel regression er ganske enkelt regression med mindst 2 prædiktorer. Multipel regression følger de samme principper som den lineære regression, der hidtil er gennemgået. Least-squares-metoden anvendes som sædvanligt, men i dette tilfælde tilpasses ikke en regressionslinje, men i stedet et regressionsplan gennem datapunkterne. Dette plan har et tredimensionelt udseende, som illustreres nedenfor med de samme data. Den anden prædiktor er pressure (blodtryk).

Tredimensionelt diagram med regressionsplan for glucose mod mass og pressure, farveskala efter glukoseværdi

Koden for regressionsmodellen bliver:

modell_2 <- lm(glucose ~ mass + pressure, data=PimaIndiansDiabetes)
summary(modell_2)
Call:
lm(formula = glucose ~ mass + pressure, data = PimaIndiansDiabetes)

Residuals:
     Min       1Q   Median       3Q      Max
-129.725  -20.893   -3.277   19.206   80.092

Coefficients:
            Estimate Std. Error t value             Pr(>|t|)
(Intercept) 84.60294    5.48135  15.435 < 0.0000000000000002 ***
mass         0.78442    0.14834   5.288          0.000000161 ***
pressure     0.16201    0.06042   2.681              0.00749 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 31.08 on 765 degrees of freedom
Multiple R-squared:  0.05773,	Adjusted R-squared:  0.05526
F-statistic: 23.43 on 2 and 765 DF,  p-value: 0.0000000001326

Fortolkningen af koefficienterne er som følger.

  • Når mass stiger med 1 enhed, øges glucose med 0,78442 enheder. Denne effekt er justeret for pressure.
  • Når pressure stiger 1 enhed, øges glucose med 0,16201 enheder. Denne effekt er justeret for mass.