Avsnitt 4 of 6
Pågående

Logistisk regression

Vad är logistisk regression?

Föreställ dig att du du studerar hur ålder, kön, kroppsvikt och etnicitet påverkar risken för levercancer. Du har alltså fyra prediktorer varav ålder och kroppsvikt är kontinuerliga variabler, medan kön och etnicitet är kategoriska variabler. Utfallsmåttet i detta fallet är dikotomt (även kallat binärt) eftersom levercancer är ett tillstånd/händelse som man antingen inträffar eller inte. Utfallsmåttet är alltså ”ja” eller ”nej” med avseende på levercancer. Utfallsmåttet kan lika gärna kodas som ”0” och ”1” eller “A” och “B”; det har ingen betydelse utan huvudsaken är att utfallsmåttet är en binär variabel med två nivåer och en individ kan endast tillhöra en av dessa nivåer.

Eftersom utfallet är binärt så kan relationen mellan prediktorerna och utfallsmåttet inte vara linjärt, vilket innebär att linjär regression inte är lämpligt. För att ändå kunna studera denna typen av samband så har logistisk regression utvecklats.

Med logistisk regression kan man studera hur olika prediktorer (kontinuerliga och kategoriska) är associerade med ett binärt (dikotomt) utfall. Alla utfallsmått som är binära kan studeras med logistisk regression. Exempel på sådana utfallsmått följer:

  • Död – Man kan studera hur olika prediktorer är associerade med risken att dö.
  • Akut hjärtinfarkt – Man kan studera hur olika prediktorer är associerade med risken att utveckla akut hjärtinfarkt.
  • Cancer – Man kan studera hur olika prediktorer är associerade med att utveckla cancer.
  • Att ha diabetes – Man kan studera hur olika prediktorer är associerade med att ha diabetes.

Logistisk regression kan alltså användas för alla utfallsmått som har två nivåer och du kan säkert komma på många andra exempel på utfallsmått. Dessutom finns situationer då det är önskvärt att konvertera ett kontinuerligt utfallsmått till ett kategoriskt utfallsmått och därmed övergå från linjär regression till logistisk regression. Ett exempel följer:

Du studerar hur vikt, ålder, kön och etnicitet påverkar graden av fysisk aktivitet. Du har samlat in data på 1000 personer i Stockholm och varje person har under en månad rapporterat antalet steg de gått dagligen. Du skall nu studera hur vikt, ålder, kön och etnicitet är associerade med antalet steg, som är en kontinuerlig variabel och därför lämplig att studeras med linjär regression. Det är också fullt möjligt att kategorisera utfallsmåttet (antal steg) så till vida att en gräns dras mellan fysiskt aktiv och fysiskt inaktiv. Låt oss säga att vi drar gränsen vid 8000 steg; Om man går minst 8000 steg så är man fysisk aktiv och går man färre än 8000 steg så är man inaktiv. Således har vi skapat en ny variabel som är binär och den är baserad på en konitnuerlig variabel. Denna variabeln kan studeras med logistisk regression. Då kommer regressionen svara på hur de olika prediktorerna är associerade med att vara fysisk aktivt.

Grundbulten i logistisk regression: odds

Odds är centralt för logistisk regression. I en logistisk regression är utfallsmåttet binärt (0 eller 1), vilket innebär att en händelse skall inträffa eller inte. Den logistiska modellen beräknar odds för att händelsen skall inträffa. Odds är sannolikheten för att något skall inträffa dividerat med sannolikheten för att det inte skall inträffa. För att förstå detta krävs två exempel.

  1. Låt oss säga att vi kastar tärning en gång och vi undrar vad oddsen är för att få en jämn siffra (2, 4 eller 6) vid ett kast med tärning. Sannolikheten för att få en jämn siffra är 3/6 (det finns tre jämna siffror av totalt 6 siffror på en tärning). Sannolikheten att inte få en jämn siffra är också 3/6. Oddsen blir därför 3/6 dividerat med 3/6 vilket är 1.0. En odds på 1.0 innebär att det är lika stor chans att utfallet inträffar som att utfallet inte inträffar.
  2. Vad är oddsen för att slå någon av siffrorna 1, 2, 3 eller 4? Sannolikheten för att det inträffar är 4/6 och sannolikheten för att det inte inträffar är 2/6. Oddsen är 4/6 dividerat med 2/6 vilket är 2.0. Odds på 2.0 innebär att det är dubbelt så hög sannolikhet för att händelsen skall inträffa, jämfört med att den inte skall inträffa.

I logistisk regression är den naturliga logaritmen av odds en funktion av prediktorerna. Formeln är som följer:

ln[odds(Y = 1)] = β0 + β1X

ln är den naturliga logaritmen.

Y är utfallet och 1 innebär att det inträffar.

odds(Y = 1) är oddsen fö ratt Y skall inträffa, jämfört med att det inte skall inträffa

 β0 är interceptet

β1 är regressionskoefficienten för prediktor X.

Här är tolkningen av regressionskoefficienten (β) viktig. β representerar hur logaritmen av odds för händelsen ändras när prediktorn X  ökar med 1 enhet. Detta påminner om linjär regression, där β representerar hur Y ändras när prediktorn X ökar med 1 enhet. Vid logistisk regression är det dock logaritmen av odds för händelsens inträffande som ändras. Detta är konceptuellt svårare att förstå än linjär regression men med några övningsexempel blir det lättare att förstå.

Odds ratio (oddskvot)

Vi människor har svårt för logaritmer och i synnerhet vad beträffar tolkning av logaritmerade sannolikheter. Därför transformerar man regressionskoefficienterna genom att exponentiera dem och då erhåller vi odds ratio. Genom odds ratio blir sambandet mellan prediktorn och utfallsmåttet enklare att tolka. Ett exempel följer:

För prediktorn X erhåller vi en regressionskoefficient på 0.5, vilket innebär att när prediktorn X ökar med 1 enhet så ökar logaritmen av odds för att händelsen skall inträffa med 0.5.

Omvandling till odds ratio: exp(0.5) = 1.65. Detta innebär att när prediktorn X ökar med 1 enhet så ökar odds för händelsen med 65%.

Man kan alltså omvandla en odds ratio till procent! Detta görs enkelt genom formeln: 100 • (Odds Ratio – 1). Exempel följer.

Odds ratio = 1.10

Beräkning: 100•(1.10 – 1) = 10%. För varje enhet prediktorn X ökar så ökar odds för händelsen med 10%.

Odds ratio = 0.90

Beräkning: 100•(0.9 – 1) = –10%. För varje enhet prediktorn X ökar så minskar odds för händelsen med 10%.

Odds ratio på 1.0 innebär att prediktorn X inte har något samband med Y eftersom en ökning/minskning av X inte påverkar odds för händelsen. Om odds ratio är större än 1.0 så ökar odds för händelsen och om odds ratio är mindre än 1.0 så minskar odds för händelsen. Odds ratio på 1.50 innebär 50% ökad odds och odds ratio 0.5 innebär 50% minskad odds.

När man använder odds ratio så är procent-ändringen i odds samma varje gång prediktorn X ökar med 1 enhet. Detta beror på att den logistiska regressionen förutsätter att förhållandet mellan X och log(odds) är linjärt.

Multipel logistisk regression

Man kan självfallet introducera många prediktorer i den logistiska modellen och man kan inkludera både kategoriska och kontinuerliga prediktorer. Om modellen inbegriper prediktorerna X1, X2 och X3 så tolkas koefficienten för X1 som effekten av X1 när övriga prediktorer hålls konstanta (dvs effekten av X1 är justerad för effekten av X2 och X3).

Beräkning av regressionskoefficienter i logistisk regression

För linjär regression existerar en formeln för att hitta modellens parametrar (interceptet och regressionskoefficienterna). Denna formel (som diskuterades i kapitelet Regression och korrelation) skapar en regressionslinje som bäst beskriver data. Detta görs genom att minimera summan av alla errors (se tidigare diskussion).

För logistisk regression finns ingen matematisk formeln. Mjukvaran hittar istället parametrarna med hjälp av så kallade optimizer functions, vilket är algoritmer som letar och hittar de optimala parametrarna genom att prova sig fram (detta går fort med modern mjukvara).

Goodness-of-fit: hur bra beskriver modellen data?

För logistisk regression kan modellens precision utvärderas med c statistic (concordance statistic). C statistic indikerar hur bra modellen är på att särsklija observationer som fick respektive inte fick utfallet. C statistic kan maximalt vara 1.0 vilket innebär att modellen gissar rätt i 100% av fallen. Minimalt är 0.5, vilket innebär att modellen inte är bättre än slumpen. C statistic mellan 0.7 och 0.8 anses vara acceptabla. Mellan 0.8 och 0.9 anses vara utmärkt precision.

Praktiskt exempel i R med tolkning av resultat

Nedan kan du kopiera kod till R och prova själv.

# Ladda in (direkt från Internet) dataset med hjärtkateterisering
rhc <- read.csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/rhc.csv")
# inspektera första 6 raderna
head(rhc)
# Se själva tabellen
View(rhc)
# Se datastruktur och variabler
str(rhc)
# Skapa en baseline-tabell med funktionen mytable() från paketet moonBook
# Vi gör ett urval av variabler som vi är intresserade av och delar upp tabellen på kön.
install.packages("moonBook")
library(moonBook)
mytable(sex ~ age + race + income + alb1, data=rhc)
# Kontrollera hur utfallsmåttet är kodat
levels(rhc$death)
# Det är kodat som "Yes" eller "No". Detta måste specificeras i den logistiska regressionen.
# Skapa en logistisk regression där död är utfallsmåttet
# logistisk regression görs med funktionen glm(), där argumentet family skall vara "binomial"
# VI anger att det är händelsen death = Yes som vi vill relatera till kön, ålder, ras och inkomst
modell <- glm(death=="Yes" ~ sex + age + race + income, data=rhc, family="binomial")
# kontrollera kategorier för kategoriska variabler. Kom ihåg att första kategorin i utskriften kommer användas som referenskategori vid regressionen
levels(rhc$sex)
levels(rhc$race)
levels(rhc$income)
# Rita en graf (forest plot) med resultaten. Detta görs med funktionen ORplot från moonBook
ORplot(modell)
# Kontrollera goodness-of-fit
install.packages("Deducer")
library(Deducer)
rocplot(modell)