Lineær regresjon (regresjonsanalyse)

Regresjon

Med regresjon undersøker man sammenhengen (assosiasjonen) mellom to eller flere variabler. I en regresjonsanalyse predikeres én variabel (YY) av minst én prediktor (XX). Rent terminologisk sier man at YY er avhengig av XX; YY er derfor den avhengige variabelen, og XX er den uavhengige variabelen.

Oppgave i modellen Synonym
Y Variabelen som skal predikeres Avhengig variabel, dependent variable, outcome, utfall, utfallsmål, label, target
X Brukes til å predikere Y Prediktor, predictor, feature, kovariat, covariate

Tenk deg at vi undersøker sammenhengen mellom BMI (body mass index) og blodsukker. Med regresjon kan vi bruke den ene variabelen til å predikere verdien av den andre. I dette tilfellet brukes BMI til å predikere blodsukker. BMI er altså uavhengig (prediktor), og glukose er avhengig (outcome).

Vi skal illustrere lineær regresjon med data fra pimaindianere, som har svært høy risiko for diabetes. Data fra pimaindianere finnes i pakken mlbench. Installer mlbench og aktiver pakken, samt dataene med pimaindianere, med følgende kommando:

library(mlbench)
data(PimaIndiansDiabetes)

## Graf med sammenhengen mellom mass og glucose
ggplot(data=PimaIndiansDiabetes,
       aes(x=mass, y=glucose, color=diabetes)) +
  geom_point() +
  geom_smooth()
Spredningsdiagram av BMI (mass) mot glukose etter diabetesstatus med blå regresjonslinje og interceptet β0 markert ved x = 0

Figuren over viser hvordan BMI (mass) er assosiert med blodsukker (glucose). I grafen ser man en rett blå linje som utgjør regresjonslinjen for mass. Sammenhengen mellom 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, det vil si punktet der regresjonslinjen krysser Y-aksen (se figuren over).
  • b1b_1 er koeffisienten for mass, det vil si verdien av regresjonslinjens stigningstall.
  • ϵi\epsilon_i er differansen mellom modellens predikerte verdi av YY og den observerte verdien av YY. Dette er altså modellens feil (error).

Oppsummert er dette en modell som predikerer YY ved hjelp av en regresjonslinje med stigningstall b1b_1. Interceptet (b0b_0) er vi svært sjelden interessert i. Modellens feil (ϵi\epsilon_i) er et mål på hvor god modellen er.

Målet er å lage en regresjonslinje der stigningen tilpasses slik at den representerer sammenhengen mellom XX og YY. Linjens stigning avhenger av sammenhengen mellom mass og glucose. Stigningstallet for mass kalles også koeffisienten for mass. Hvis glucose øker med økende mass, vil regresjonslinjen ha en positiv stigning. I figuren over ser man at linjen har en positiv stigning, og derfor er koeffisienten for mass positiv.

Merk at relasjonen mellom XX og YY må være lineær for at den lineære modellen skal kunne brukes. Hvis sammenhengen ikke er lineær, kan den lineære modellen bli misvisende. Her følger et eksempel på en ikke-lineær sammenheng mellom XX og YY. Den beregnede regresjonslinjen klarer ikke å fange opp sammenhengen mellom XX og YY.

Spredningsdiagram med U-formet ikke-lineær sammenheng mellom prediktor X og utfall Y, der en rett regresjonslinje passer dårlig

Vi fortsetter med å lage en lineær regresjonsmodell i R. Dette gjøres med funksjonen lm(), som finnes i base R (du trenger ikke å installere noen 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
Spredningsdiagram av BMI (mass) mot glukose etter diabetesstatus med blå regresjonslinje og interceptet β0 markert ved x = 0

Av resultatet over fremgår følgende:

  • Interceptet b0b_0 er 92,2, noe som betyr at regresjonslinjen krysser Y-aksen ved Y=92,2, og det ser ut til å stemme med den grafiske undersøkelsen.
  • bBMIb_{BMI}, altså koeffisienten for mass, er 0,8965. Det betyr at hvis mass øker med 1 enhet, øker glucose med 0,8965 enheter.

Beregning av regresjonslinjen

Grunnleggende for regresjonsanalyse er beregningen av regresjonslinjen. Den vanligste metoden er least-squares method (på norsk minste kvadraters metode). Least-squares kan også kalles ordinary least-squares. Metoden lager en linje som minimerer summen av error. I figuren nedenfor er de samme dataene som over (pimaindianerne) forstørret i intervallet 50 til 150 på x-aksen og y-aksen for å tydeliggjøre hva kvadratsummer er. I figuren nedenfor ser man også en regresjonslinje.

Spredningsdiagram av mass mot glucose med en rød linje og loddrette streker som viser avstanden fra hvert punkt til linjen

Least-squares har som mål å lage en regresjonslinje som minimerer summen av alle observasjonenes error. I figuren over fremgår det at avstanden fra regresjonslinjen til punktene varierer mye. I intervallet 100 til 140 på x-aksen ligger linjen nær punktene (error blir lite), men utenfor dette intervallet ligger linjen lenger unna punktene (error blir større). Metoden med kvadratsummer går ut på å minimere samlet (total) error. Linjen vippes frem og tilbake til stigningen minimerer summen av alle error. Før man legger sammen alle error, kvadreres de; hensikten med dette er at alle negative error (de som ligger under linjen) skal bli positive verdier. Summen av alle kvadrerte error kalles RSS (Residual Sum of Squares). Den lineære modellens oppgave er altså å finne b1b_1 og b0b_0 som minimerer RSS. Formelen 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 å estimere styrken på sammenhengen mellom XX og YY kan man bruke coefficient of determination, også kalt R2R^2. Denne verdien går fra 0 til 1. Hvis R2R^2 er 0, finnes det ingen sammenheng, og hvis R2R^2 er 1, finnes det en perfekt sammenheng, noe som betyr at XX kan forklare hele variasjonen i YY.

Forutsetninger for regresjon med least-squares method

Følgende forutsetninger kreves for at least-squares skal kunne brukes:

  1. Residualene skal være normalfordelte med gjennomsnitt 0. Dette kan kontrolleres med et såkalt quantile-quantile plot. I et quantile-quantile plot skal man se en rett linje dersom forutsetningen er oppfylt.
  2. Residualene skal ha konstant varians. Dette kan kontrolleres med et spredningsdiagram (scatterplot) med estimerte residualer mot fitted values. Spredningsdiagrammet skal vise en sky uten noen sammenheng mellom verdiene.
  3. Residualene skal være uavhengige av hverandre. Dette er sjelden et problem, med mindre samme person/celle/bakterie/enhet/etc. inngår flere ganger i studiepopulasjonen. Hvis samme person inngår flere ganger i studiepopulasjonen (for eksempel gjennom gjentatte målinger av BMI og glukose), er residualene for disse observasjonene avhengige av hverandre.

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

plot(modell)
Residuals vs fitted: Residualer plottet mot fitted values. Her skal det ikke foreligge noe mønster. Punktene skal utgjøre en sky uten assosiasjon mellom residualer og fitted values.
Residuals vs fitted: Residualer plottet mot fitted values. Her skal det ikke foreligge noe mønster. Punktene skal utgjøre en sky uten assosiasjon mellom residualer og fitted values.
Quantile-Quantile plot (QQ plot): Dette skal vise en helt rett linje, noe som er tilfellet her (selv om det er litt avvik i endene).
Quantile-Quantile plot (QQ plot): Dette skal vise en helt rett linje, noe som er tilfellet her (selv om det er litt avvik i endene).
Scale-Location-diagram: kvadratroten av absolutte standardiserte residualer mot fitted values for lm(glucose ~ mass)
Residuals vs Leverage-diagram med Cooks avstand for lm(glucose ~ mass), der noen observasjoner er nummerert

Prediksjon med regresjon

Regresjonsmodellen kan brukes til prediksjon. Det betyr at vi kan anslå verdien av Y for en gitt verdi av X. Det kan for eksempel være av interesse å forutsi hva glucose vil være ved en gitt mass. For å gjøre dette lager vi nå en ny modell med spesifikasjonen glucose ~ ., som betyr at vi modellerer glucose mot alle de andre variablene. Deretter bruker vi predict() med modellobjektet (modell_2) og angir hvilke data vi vil teste modellen på. I dette tilfellet tester vi på de samme dataene som vi trente på, noe som ikke anbefales. Vi lagrer den predikerte verdien som en ny kolonne (Predicted_Glucose) i samme dataframe. Helt til slutt skriver vi ut de første 10 radene med observerte og predikerte verdier.

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

Multippel regresjon

Hvis vi vil undersøke hvordan BMI (mass) samvarierer med glukose (glucose) og samtidig ta hensyn til alder, bruker vi multippel regresjon. Definisjonen av multippel regresjon er ganske enkelt regresjon med minst 2 prediktorer. Multippel regresjon følger de samme prinsippene som den lineære regresjonen vi har diskutert så langt. Metoden least-squares brukes som vanlig, men i dette tilfellet tilpasses ikke en regresjonslinje, men i stedet et regresjonsplan gjennom datapunktene. Dette planet har et tredimensjonalt utseende, som illustreres nedenfor med de samme dataene. Den andre prediktoren er pressure (blodtrykk).

Tredimensjonalt diagram med regresjonsplan for glucose mot mass og pressure, fargeskala etter glukoseverdi

Koden for regresjonsmodellen blir:

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

Tolkningen av koeffisientene er som følger.

  • Når mass øker med 1 enhet, øker glucose med 0,78442 enheter. Denne effekten er justert for pressure.
  • Når pressure øker med 1 enhet, øker glucose med 0,16201 enheter. Denne effekten er justert for mass.