Først gentager vi lige beregningerne fra forrige side:
#opsætning af udvidelsespakker
library(jtools)
library(ggfortify)
library(ggplot2)
#indlæs data
radon<-dget("https://statepi.statnoter.dk/data/radon2.robj")
head(radon)
radon smoke cancer high
1 1.0 1 0 FALSE
2 1.2 0 0 FALSE
3 3.5 0 0 TRUE
4 3.4 1 0 TRUE
5 0.9 0 0 FALSE
6 3.3 1 0 TRUE
myModel<-glm(formula=cancer~radon,family=binomial,data=radon)
summary(myModel)
Call:
glm(formula = cancer ~ radon, family = binomial, data = radon)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.88517 0.08339 -34.6 < 2e-16 ***
radon 0.11616 0.03417 3.4 0.000675 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 4879.2 on 9999 degrees of freedom
Residual deviance: 4867.6 on 9998 degrees of freedom
AIC: 4871.6
Number of Fisher Scoring iterations: 5
Ligesom med de lineære normale modeller kan det, måske, bidrage til forståelsen at se på et effektplot. Det kan laves på samme måde:
effect_plot(model=myModel,pred="radon",interval=TRUE)+
scale_y_continuous(name="Sandsynlighed for 'cancer'")
Her kunne man tro at effektplottet igen er en ret linje - men det er forkert. For at kunne forstå hvad dette effektplot viser, laver vi lige nogle helt fiktive data (Man behøver ikke forstå koden)
x<-seq(from = -5,to=5,length.out = 500) #generer 500 tal mellem -5 og +5 - dette er vores prediktor
p<-exp(x)/(1+exp(x)) #dette er sandsynligheden for at få outcome=1, som selvfølgelig afhænger af vores prediktor
outcome<-rbinom(n=length(p),size=1,prob=p) #og dette er vores binæree outcome (0 eller 1)
df<-data.frame(x,p,outcome)
ggplot(data=df)+geom_point(aes(x=x,y=p),size=0.5)+geom_point(aes(x=x,y=outcome),color="red",alpha=0.2,size=0.5)
x-værdierne er vores prediktor, som er et tal mellem -5 og +5. Den sorte streg angiver sandsynligheden for at få outcome=1 som altså afhænger af prediktoren. For høje værdier af prediktoren er sandsynligheden tæt på 1; for lave værdier er den tæt på 0. De røde prikker angiver så de faktiske udfald, som jo kun kan være 0 eller 1, da udfaldet netop er binært. Det ses at for lave x-værdier er der mange 0-værdier af outcome, og for høje x-værdier er der flest 1-værdier af outcome. For de midterste værdier af prediktoren, er der ca. lige mange 0-værdier og 1-værdier af outcome.
I den virkelige verden vil vores datasæt altså bestå af de røde prikker, mens effektplottet netop er den sorte streg. Altså en graf som viser sandsynligheden for 1-outcome, som funktion af prediktoren. Vores effektplot fra radon-tallene er altså ikke en ret linje, men i stedet et udsnit af den s-formede sorte kurve. Det er bare sjældent at virkelige data inkluderer sandsynligheder i hele intervallet fra 0 til 1, hvorfor effektplottet altid kun bliver et lille udsnit af den sorte kurve - og så ligner det en ret linje.
Denne graf illustrerer meget godt de matematiske vanskeligheder ved logistisk regression. Almindelig lineær regression kan vi næsten lave uden R. Hvis man har et xy-plot med en række punkter, så kan vi med lidt rimelighed tegne en ret linje gennem disse punkter, blot ved at kigge på dem, og bruge vores sunde fornuft. På ovenstående effektplot, vil det derimod være noget nær umuligt at tegne den sorte streg, blot ved at kigge på de røde prikker.