Logistisk regression
Logistisk regression
Logistisk regression
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
<strong>Logistisk</strong> <strong>regression</strong><br />
Susanne Rosthøj<br />
Biostatistisk Afdeling<br />
Institut for Folkesundhedsvidenskab<br />
Københavns Universitet<br />
sr@biostat.ku.dk<br />
Kursushjemmeside:<br />
www.biostat.ku.dk/~sr/forskningsaar/<strong>regression</strong>2012/<br />
29. maj 2012
u n i v e r s i t y o f c o p e n h a g e n<br />
Dagens program<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
• Chi-i-anden (χ 2 )-testet<br />
• Sandsynligheder, odds og odds-ratio<br />
• <strong>Logistisk</strong> <strong>regression</strong>:<br />
• En binær forklarende variabel<br />
• En kategorisk forklarende variabel<br />
• To binære forklarende variable<br />
• En kvantitativ forklarende variabel<br />
• Flere forklarende variable<br />
• Prædiktion<br />
Kirkwood & Sterne: Kapitel 14, 16, 17, 19 og 20.<br />
2 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Regressionsanalyse<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Formålet med en <strong>regression</strong>sanalyse er at beskrive fordelingen af én<br />
responsvariabel som en funktion af en eller flere forklarende variable<br />
Typen af respons-variablen bestemmer <strong>regression</strong>smodellen<br />
Respons<br />
Kvantitativ (kontinuert)<br />
Binær (0/1)<br />
Levetid (> 0, censurering)<br />
Model<br />
lineær <strong>regression</strong><br />
logistisk <strong>regression</strong><br />
Cox (Poisson) <strong>regression</strong>.<br />
og fortolkningen af effekten af en forklarende variabel<br />
Regressionsmodel<br />
Lineær<br />
<strong>Logistisk</strong><br />
Cox (Poisson)<br />
Effect<br />
forskelle mellem middelværdier<br />
odds-ratio (OR), ln(OR)<br />
rate / hazard ratio, ln(rate ratio).<br />
3 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
<strong>Logistisk</strong> <strong>regression</strong><br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Analyse af en binær responsvariabel, e.g.<br />
• syg/rask, død/levende, højt/lavt blodtryk, etc.<br />
ud fra en eller flere forklarende variable<br />
• behandling, rygning, vægt, alder, køn, etc.<br />
For individ i observerer vi:<br />
Responsen<br />
{<br />
1 hvis i er syg<br />
Y i =<br />
0 hvis i ikke er syg<br />
og forklarende variable: x i1 , . . . , x ip .<br />
Simpel logistisk <strong>regression</strong>: Én forklarende variabel.<br />
Multipel logistisk <strong>regression</strong>: Flere forklarende variable.<br />
4 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Eksempler<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Hvordan afhænger risikoen for hjertesygdom af køn, alder, rygning og<br />
blodtryk<br />
Hvordan afhænger sandsynligheden for menarke af alder<br />
Hvorledes afhænger risikoen for graft-vs-host disease af diverse<br />
forhold omkring knoglemarvstransplantationen<br />
5 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
χ 2 -testet<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Benyttes til at evaluere association mellem to kategoriske variable.<br />
Lad R and S være kategoriske variable med hhv k og m inddelinger.<br />
Uafhængighed er defineret som<br />
P(R = r, S = s) = P(R = r)P(S = s)<br />
hvorfor<br />
svarende til<br />
Andel rs ≈ Andel r × Andel s<br />
Observeret rs ≈ Total antal × Andel r × Andel s = Forventet rs<br />
χ 2 -testet måler afstanden mellem observerede og forventede værdier.<br />
6 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
χ 2 -testet (fortsat)<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Definition:<br />
Evaluering:<br />
χ 2 =<br />
∑r,s (Observeret rs − Forventet rs ) 2<br />
Forventet rs<br />
.<br />
• Store værdier peger på manglende uafhængighed.<br />
• Hvis de forventede antal alle er større end 5, kan p-værdien<br />
bestemmes i en χ 2 fordeling med (k − 1) × (m − 1) frihedsgrader.<br />
• Dette test kaldes for Pearson’s chi-i-anden-test.<br />
• Hvis nogle af de forventede antal er mindre end 5, benyttes i<br />
stedet Fishers eksakte test.<br />
7 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Framinghamstudiet<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Planlagt som 20-årigt kohorte studie af indbyggere i alderen 30-59 i<br />
Framingham Town, Massachusetts, i 1948.<br />
Vi har data på 1406 indbyggere i alderen 45-62 år.<br />
13 variable:<br />
Baseline: sex, age, frw, sbp, dbp, chol, cig<br />
Follow-up: sbp10, chd, yrschd, death, yrsdth, cause<br />
8 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Framingham: Kodning af variable<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
sex 1 for mænd, 2 for kvinder<br />
age alder (år) ved baseline (45-62)<br />
frw “Framingham relative weight” (pct) ved baseline (52-222)<br />
sbp systolisk blodtryk ved baseline (mmHg) (90-300)<br />
dbp diastolisk blodtryk ved baseline (mmHg) 50-160)<br />
chol kolesterol ved baseline (mg/100ml) (96-430)<br />
cig cigaretter per dag ved baseline (0-60)<br />
chd 0 hvis ej “coronary heart disease” i løbet af follow-up, 1 hvis<br />
“coronary heart disease” ved baseline, x=2-10 hvis “coronary<br />
heart disease” blev diagnosticeret ved follow-up no. x.<br />
9 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Eksempel 1: køn og CHD<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Er der forskel på hyppigheden af CHD blandt mænd og kvinder<br />
Køn vs CHD<br />
> framing$chdI0,1,0)<br />
> framing$mand framingCHD attach(framingCHD)<br />
> table(mand,chdI)<br />
chdI<br />
mand 0 1<br />
0 616 104<br />
1 479 164<br />
> chisq.test(mand,chdI)<br />
Pearson’s Chi-squared test with Yates’ continuity correction<br />
data: mand and chdI<br />
X-squared = 25.6119, df = 1, p-value = 4.175e-07<br />
> fisher.test(mand,chdI)<br />
Fisher’s Exact Test for Count Data<br />
data: mand and chdI<br />
p-value = 3.831e-07<br />
alternative hypothesis: true odds ratio is not equal to 1<br />
95 percent confidence interval:<br />
1.530131 2.693462<br />
sample estimates:<br />
odds ratio<br />
2.026904<br />
10 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Beskrivelse af effekten<br />
Risikoen for CHD for mænd: p 1 ≈ 164/643 = 0.26<br />
Risikoen for CHD for kvinder: p 2 ≈ 104/720 = 0.14<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Odds for CHD for mænd: p 1 /(1 − p 1 ) ≈ 164/479 = 0.34(≈ 1 : 3)<br />
Odds for CHD for kvinder: p 2 /(1 − p 2 ) ≈ 104/616 = 0.17(≈ 1 : 6)<br />
Mulige effektmål:<br />
Absolut differens i risiko (ARR): |p 1 − p 2 | ≈ 0.12<br />
Relativ risiko (RR) : p 1 /p 2 ≈ 1.77<br />
Odds-ratio (OR): p 1 /(1 − p 1 )/(p 2 /(1 − p 2 )) ≈ 2.03.<br />
Når p 1 og p 2 er små ( 0, RR ≠1, OR ≠1<br />
11 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Regressionsanalyse for binær respons<br />
Formålet er relatere f.eks.<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Y i =<br />
{<br />
1 if i får CHD<br />
0 if i ej får CHD<br />
til forklarende variable for det i’te individ. Sæt<br />
p i = Prob (individ i får CHD) = Prob (Y i = 1) = E(Y i ).<br />
Køn som forklarende variabel, dvs.<br />
Lineær <strong>regression</strong><br />
x i =<br />
{<br />
1 hvis i er en mand<br />
0 hvis i er en kvinde<br />
p i = a + bx i<br />
Potentielt kan denne model tilskrive nogle individer<br />
sandsynligheder 12 / 42<br />
uden for [0, 1].
u n i v e r s i t y o f c o p e n h a g e n<br />
log-odds<br />
Vi ser på ln(odds i ) = logit(p i ) = ln<br />
(<br />
pi<br />
1−p i<br />
)<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
som er ubegrænset:<br />
logit(p)<br />
−10 −5 0 5 10<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
13 / 42<br />
p
u n i v e r s i t y o f c o p e n h a g e n<br />
Den logistiske <strong>regression</strong>smodel<br />
Model:<br />
( ) pi<br />
ln = a + bx i =<br />
1 − p i<br />
{<br />
a kvinder<br />
a + b mænd.<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Det betyder at kønsparameteren b får følgende fortolkning<br />
b = (a + b) − a = ln (odds for mænd) - ln (odds for kvinder)<br />
= ln (OR for mænd vs. kvinder)<br />
og tilsvarende<br />
−b = a − (a + b) = ln(OR for kvinder vs. mænd).<br />
Dermed er OR = exp(b) for mænd vs kvinder.<br />
For b > 0 er der øget risiko for mænd: OR > 1.<br />
For b < 0 er der lavere risiko for mænd: OR < 1.<br />
For b = 0 er der ingen forskel: OR < 1.<br />
14 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Estimation af simpel logistisk <strong>regression</strong> med køn<br />
Data er:<br />
Y = 0 (ej CHD) Y = 1 (CHD)<br />
Z = 0 (kvinder) 616 104<br />
Z = 1 (mænd) 479 164<br />
1095 264<br />
Vi kan selv trylle estimater for <strong>regression</strong>sparametrene frem:<br />
OR =<br />
( )<br />
164 · 616<br />
164 · 616<br />
104 · 479 = 2.03, b = ln(OR) = ln 104 · 479<br />
( ) 104<br />
a = ln(odds for kvinder) = ln = −1.78<br />
616<br />
Men hvad med usikkerheden<br />
= 0.71<br />
15 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Simpel logistisk <strong>regression</strong> i R<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
<strong>Logistisk</strong> <strong>regression</strong> i R laves vha funktionen glm:<br />
Estimation<br />
> glm1 summary(glm1)<br />
Call:<br />
glm(formula = chdI ~ mand, family = binomial)<br />
Deviance Residuals:<br />
Min 1Q Median 3Q Max<br />
-0.7674 -0.7674 -0.5586 -0.5586 1.9672<br />
Coefficients:<br />
Estimate Std. Error z value Pr(>|z|)<br />
(Intercept) -1.7789 0.1060 -16.780 < 2e-16 ***<br />
mand 0.7070 0.1394 5.073 3.92e-07 ***<br />
--<br />
(Dispersion parameter for binomial family taken to be 1)<br />
Null deviance: 1351.2 on 1362 degrees of freedom<br />
Residual deviance: 1324.9 on 1361 degrees of freedom<br />
AIC: 1328.9<br />
Number of Fisher Scoring iterations: 4<br />
16 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Test af kønseffekten<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Nulhypotesen er at sandsynligheden for CHD ikke afhænger af køn:<br />
Dette kan testes med et Wald-test:<br />
z = estimat<br />
SE<br />
H 0 : b = 0.<br />
∼ N (0, 1).<br />
Her er b = 0.7070, SE = 0.1394, z=5.073, p < .0001.<br />
Bemærk at z 2 = 5.073 2 = 25.74 ∼ χ 2 (df = 1) stemmer overens med<br />
standard χ 2 -testet i 2×2-tabellen: 25.62 (df = 1).<br />
Der er en stærkt signifikant forskel på kønnene mht risikoen for CHD.<br />
17 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Kvantificering af kønseffekten<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
OR for CHD for mænd vs kvinder er exp(0.707) = 2.03.<br />
Hvor sikre er vi på dette estimat<br />
Vi kan få et 95% KI for b ved b ± 1.94 · SE.<br />
Dermed fås et KI for OR ved exp(b ± 1.94 · SE).<br />
Konfidensinterval for OR<br />
> confint(glm1)<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
(Intercept) -1.9919851 -1.575984<br />
mand 0.4355102 0.982305<br />
> round( c( exp(glm1$coef[-1]), exp(confint(glm1))[-1,] ),2 )<br />
Waiting for profiling to be done...<br />
mand 2.5 % 97.5 %<br />
2.03 1.55 2.67<br />
><br />
18 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
<strong>Logistisk</strong> <strong>regression</strong> i R<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
<strong>Logistisk</strong> <strong>regression</strong> laves i R vha funktionen glm (Generaliserede<br />
Lineære Modeller).<br />
HUSK family=binomial for logistisk <strong>regression</strong>.<br />
På et glm-objekt kan vi benytte de samme funktioner, som vi har<br />
benyttet på lm-objekter:<br />
summary<br />
confint<br />
drop1<br />
anova<br />
predict<br />
19 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Forklarende variable med flere niveauer<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Spørgsmål: Hvorledes stiger risikoen for CHD med alderen<br />
Inddel alder i 4 grupper:<br />
⎧<br />
⎪⎨<br />
x i =<br />
⎪⎩<br />
Kategoriseret alder mod responsen:<br />
1 hvis i er 45 − 48 år<br />
2 hvis i er 49 − 52 år<br />
3 hvis i er 53 − 56 år<br />
4 hvis i er 57 − 62 år<br />
x = 1 x = 2 x = 3 x = 4<br />
45-48 49-52 53-56 57-62<br />
Y = 0 308 298 254 235 1095<br />
Y = 1 51 61 64 92 268<br />
359 359 318 327 1363<br />
20 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Beskrivelse af alderseffekten<br />
Alderseffekten kan undersøges ved at se på odds-ratio’erne:<br />
OR 1 (X = 2 vs. X = 1) =<br />
61·308<br />
298·51<br />
= 1.24<br />
= exp(0.21)<br />
OR 2 (X = 3 vs. X = 1) =<br />
64·308<br />
254·51<br />
1.52<br />
= exp(0.42)<br />
OR 3 (X = 4 vs. X = 1) =<br />
92·308<br />
235·51<br />
2.36<br />
= exp(0.86)<br />
Vi kan benytte et sædvanligt χ 2 -test til at undersøge om<br />
OR 1 = OR 2 = OR 3 = 1:<br />
Chi-i-anden test<br />
> ageGrp48)+I(age>52)+I(age>56))<br />
> chisq.test(ageGrp,chdI)<br />
Pearson’s Chi-squared test<br />
data: ageGrp and chdI<br />
X-squared = 23.2889, df = 3, p-value = 3.515e-05<br />
><br />
21 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
<strong>Logistisk</strong> <strong>regression</strong> på kategorisk variabel<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
For hver kategori estimeres ln(OR) relativt til en referencekategori:<br />
( ) pi<br />
ln =<br />
1 − p i<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
b 1 = ln(OR)(2 vs. 1) = 0.21<br />
b 2 = ln(OR)(3 vs. 1) = 0.42<br />
b 3 = ln(OR)(4 vs. 1) = 0.86<br />
a hvis i er 45 − 48 år<br />
a + b 1 hvis i er 49 − 52 år<br />
a + b 2 hvis i er 53 − 56 år<br />
a + b 3 hvis i er 57 − 62 år.<br />
NB: Computerprogrammerne vælger referencekategorien forskelligt.<br />
R vælger laveste niveau som reference.<br />
Jævnfør ensidet variansanalyse.<br />
22 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
<strong>Logistisk</strong> <strong>regression</strong> på kategorisk variabel i R<br />
Estimation<br />
> glm2 summary(glm2)<br />
Call:<br />
glm(formula = chdI ~ ageGrp, family = binomial)<br />
Deviance Residuals:<br />
Min 1Q Median 3Q Max<br />
-0.8129 -0.6704 -0.6103 -0.5536 1.9756<br />
Coefficients:<br />
Estimate Std. Error z value Pr(>|z|)<br />
(Intercept) -1.7983 0.1512 -11.895 < 2e-16 ***<br />
ageGrp2 0.2121 0.2064 1.027 0.3042<br />
ageGrp3 0.4198 0.2060 2.038 0.0415 *<br />
ageGrp4 0.8605 0.1949 4.415 1.01e-05 ***<br />
--<br />
(Dispersion parameter for binomial family taken to be 1)<br />
Null deviance: 1351.2 on 1362 degrees of freedom<br />
Residual deviance: 1328.7 on 1359 degrees of freedom<br />
AIC: 1336.7<br />
Number of Fisher Scoring iterations: 4<br />
><br />
23 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Test af alderseffekten<br />
Vi kan også lave et test for effekt af alder vha anova eller drop1.<br />
Her skal vi ALTID benytte et chi-i-anden-test (Likelihood Ratio Test):<br />
Test af alderseffekt<br />
> glm2red anova(glm2,glm2red,test="Chisq")<br />
Analysis of Deviance Table<br />
Model 1: chdI ~ ageGrp<br />
Model 2: chdI ~ 1<br />
Resid. Df Resid. Dev Df Deviance P(>|Chi|)<br />
1 1359 1328.7<br />
2 1362 1351.2 -3 -22.595 4.904e-05 ***<br />
--<br />
> drop1(glm2,test="Chisq")<br />
Single term deletions<br />
Model:<br />
chdI ~ ageGrp<br />
Df Deviance AIC LRT Pr(Chi)<br />
1328.7 1336.7<br />
ageGrp 3 1351.2 1353.2 22.595 4.904e-05 ***<br />
--<br />
><br />
24 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Kvantificering af alderseffekten<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
OR incl konfidensintervaller<br />
> confint(glm2)<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
(Intercept) -2.10571624 -1.5118423<br />
ageGrp2 -0.19158197 0.6192138<br />
ageGrp3 0.01756503 0.8264937<br />
ageGrp4 0.48250667 1.2477345<br />
> round( cbind( exp(glm2$coef[-1]), exp(confint(glm2))[-1,] ),2 )<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
ageGrp2 1.24 0.83 1.86<br />
ageGrp3 1.52 1.02 2.29<br />
ageGrp4 2.36 1.62 3.48<br />
><br />
Risikoen for CHD stiger med alderen.<br />
De ældste har mere end dobbelt så stor odds for CHD end de yngste<br />
(OR=2.4, 95% CI 1.6-3.5).<br />
25 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Valg af anden referencekategori<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Nogle gange ønsker vi sammenligningen en anden vej, f.eks. kunne vi<br />
sammenligne de yngre ifht de ældre.<br />
I R kan vi ændre referencekategorien vha relevel:<br />
Ny referencekategori<br />
> ageGrpNy table(ageGrpNy)<br />
ageGrpNy<br />
4 1 2 3<br />
327 359 359 318<br />
><br />
ref=4 specificerer at kategori nummer 4 skal være referencen (ikke<br />
værdien 4).<br />
26 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Kvantificering af alderseffekten<br />
OR incl konfidensintervaller<br />
> glm3 summary(glm3)<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Deviance Residuals:<br />
Min 1Q Median 3Q Max<br />
-0.8129 -0.6704 -0.6103 -0.5536 1.9756<br />
Coefficients:<br />
Estimate Std. Error z value Pr(>|z|)<br />
(Intercept) -0.9378 0.1230 -7.625 2.43e-14 ***<br />
ageGrpNy1 -0.8605 0.1949 -4.415 1.01e-05 ***<br />
ageGrpNy2 -0.6484 0.1867 -3.472 0.000516 ***<br />
ageGrpNy3 -0.4407 0.1862 -2.366 0.017981 *<br />
--<br />
(Dispersion parameter for binomial family taken to be 1)<br />
Null deviance: 1351.2 on 1362 degrees of freedom<br />
Residual deviance: 1328.7 on 1359 degrees of freedom<br />
AIC: 1336.7<br />
Number of Fisher Scoring iterations: 4<br />
> round( cbind( exp(glm3$coef[-1]), exp(confint(glm3))[-1,] ),2 )<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
ageGrpNy1 0.42 0.29 0.62<br />
ageGrpNy2 0.52 0.36 0.75<br />
ageGrpNy3 0.64 0.45 0.93<br />
><br />
27 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
<strong>Logistisk</strong> <strong>regression</strong> med to kategoriske variable<br />
Spørgsmål: Hvorledes afhænger sandsynligheden for CHD af køn og<br />
aldersgruppe<br />
ln<br />
(<br />
pi<br />
1−p i<br />
)<br />
= a + b 1 mand i + b 2 ryger<br />
⎧<br />
i<br />
a K ikke-ryger<br />
⎪⎨<br />
a + b<br />
=<br />
1 M ikke-ryger<br />
a + b 2 K ryger<br />
⎪⎩<br />
a + b 1 + b 2 M ryger.<br />
Bemærk: b 1 = (a + b 1 ) − a = (a + b 1 + b 2 ) − (a + b 2 )<br />
= ln OR (mænd vs. kvinder for givet rygestatus),<br />
b 2 = (a + b 2 ) − a = (a + b 1 + b 2 ) − (a + b 1 )<br />
= ln OR (rygere vs. ikke-rygere for givet køn)<br />
NB: Dette er en additiv model / ingen interaktion.<br />
Jævnfør tosidet variansanalyse<br />
28 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
To kategoriske variable i R<br />
Estimation<br />
> ryger=1,1,0))<br />
> table(ryger)<br />
ryger<br />
0 1<br />
748 614<br />
> glm5 summary(glm5)<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Call:<br />
glm(formula = chdI ~ mand + ryger, family = binomial)<br />
Deviance Residuals:<br />
Min 1Q Median 3Q Max<br />
-0.7716 -0.7607 -0.5564 -0.5564 1.9708<br />
Coefficients:<br />
Estimate Std. Error z value Pr(>|z|)<br />
(Intercept) -1.78735 0.11508 -15.531 < 2e-16 ***<br />
mand 0.69521 0.14635 4.750 2.03e-06 ***<br />
ryger1 0.03296 0.14457 0.228 0.82<br />
-<br />
(Dispersion parameter for binomial family taken to be 1)<br />
Null deviance: 1350.8 on 1361 degrees of freedom<br />
Residual deviance: 1324.5 on 1359 degrees of freedom<br />
(1 observation deleted due to missingness)<br />
AIC: 1330.5<br />
Number of Fisher Scoring iterations: 4<br />
29 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
OR’er med to forklarende variable<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
I den logistiske <strong>regression</strong>smodel med to forklarende variable, er de<br />
estimerede ln(OR)’er indbyrdes justeret.<br />
De estimeres begge med det laveste niveau som referencekategori.<br />
OR’er incl konfidensintervaller<br />
> round( cbind( exp(glm5$coef[-1]), exp(confint(glm5))[-1,] ),2 )<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
mand 2.00 1.51 2.68<br />
ryger1 1.03 0.78 1.37<br />
><br />
OR for CHD for mænd vs kvinder er 2.0 (1.5-2.7).<br />
OR for rygere vs ikke-rygere er 1.03 (0.8-1.4).<br />
30 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Kvantitativ forklarende variabel<br />
Eksempel 2: juul-datasættet i ISwR-pakken.<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Spørgsmål: Hvordan afhænger sandsynligheden for menarke af alder<br />
Respons: Menarke (ja/nej) Forklarende variabel: alder.<br />
Alder vs menarke<br />
> install.packages("ISwR")<br />
> library(ISwR)<br />
> data(juul)<br />
><br />
> juul28 &age juul2$ageGrp juul2$menarke attach(juul2)<br />
> table(ageGrp,menarke)<br />
menarke<br />
ageGrp 0 1<br />
(8,10] 100 0<br />
(10,12] 97 4<br />
(12,13] 32 21<br />
(13,14] 22 20<br />
(14,15] 5 36<br />
(15,16] 0 31<br />
(16,18] 0 105<br />
><br />
31 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Plot af hyppighederne<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Sandsynlighed for menarke<br />
−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
8 10 12 14 16 18<br />
Linien angiver den estimerede <strong>regression</strong>slinie fra en lineær<br />
model.<br />
32 / 42<br />
Alder
u n i v e r s i t y o f c o p e n h a g e n<br />
En kvantitativ forklarende variabel<br />
Model med alder som kvantitativ:<br />
( ) pi<br />
ln<br />
1 − p i<br />
= a + bage i<br />
Her er b øgningen / reduktionen i log-odds per år.<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Hvad er forskellen i log-odds for to piger med alder a 1 og a 2 <br />
svarende til<br />
( ) ( )<br />
p1<br />
p2<br />
ln − ln<br />
1 − p 1 1 − p 2<br />
= a + ba 1 − (a + ba 2 )<br />
= b(a 1 − a 2 )<br />
= log(OR).<br />
OR = exp(b(a 1 − a 2 )) = exp(b) (a 1−a 2 )<br />
33 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Kvantitativ forklarende variabel i R<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Estimation<br />
> glm1a summary(glm1a)<br />
Call:<br />
glm(formula = menarke ~ age, family = "binomial")<br />
Deviance Residuals:<br />
Min 1Q Median 3Q Max<br />
-2.32603 -0.22117 -0.04169 0.15090 2.45808<br />
Coefficients:<br />
Estimate Std. Error z value Pr(>|z|)<br />
(Intercept) -19.9894 2.0344 -9.826
u n i v e r s i t y o f c o p e n h a g e n<br />
Beskrivelse af alderseffekten<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Konfidensintervaller<br />
> glm1a$coef<br />
(Intercept)<br />
age<br />
-19.989374 1.515431<br />
> confint(glm1)<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
(Intercept) -24.38353 -16.36677<br />
age 1.23980 1.85004<br />
> # OR incl CI<br />
> round( c(exp(glm1a$coef[-1]), exp(confint(glm1a)[-1,])),2 )<br />
Waiting for profiling to be done...<br />
age 2.5 % 97.5 %<br />
4.55 3.45 6.36<br />
><br />
Når alderen øges med et år, stiger log-odds med 1.51 (1.24-1.85).<br />
Når alderen øges med et år, øges odds med en faktor 4.55<br />
(3.45-6.36).<br />
Interceptet a = −19.99 er log-odds for en pige på 0 år (!).<br />
35 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Sandsynlighed for menarke som funktion af alder<br />
Sandsynlighed for menarke<br />
−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
8 10 12 14 16 18<br />
Alder<br />
Kurven er baseret på den logistiske <strong>regression</strong>smodel.<br />
36 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Multipel logistisk <strong>regression</strong><br />
Hvordan afhænger risikoen for CHD af køn, alder, rygning og SBP<br />
( ) pi<br />
ln<br />
1 − p i<br />
= a + b 1 mand i + b 2 ryger i + b 3 alder i + b 4 log 2 (SBP i )<br />
Estimation<br />
> glm6 summary(glm6)<br />
Call:<br />
glm(formula = chdI ~ mand + ryger + age + I(log2(sbp)), family =<br />
binomial)<br />
Deviance Residuals:<br />
Min 1Q Median 3Q Max<br />
-1.4921 -0.6893 -0.5332 -0.3615 2.5142<br />
Coefficients:<br />
Estimate Std. Error z value Pr(>|z|)<br />
(Intercept) -19.74839 2.15012 -9.185 < 2e-16 ***<br />
mand 0.86400 0.15487 5.579 2.42e-08 ***<br />
ryger1 0.18504 0.15180 1.219 0.222858<br />
age 0.05376 0.01531 3.511 0.000446 ***<br />
I(log2(sbp)) 2.07204 0.28337 7.312 2.63e-13 ***<br />
><br />
37 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Kvantificering af effekterne<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
( ) pi<br />
ln<br />
1 − p i<br />
= a + b 1 mand i + b 2 ryger i + b 3 alder i + b 4 log 2 (SBP i )<br />
Her er a=log-odds for et individ med værdi 0 af alle kovariater.<br />
OR’er incl konfidensintervaller<br />
> round( cbind( exp(glm6$coef[-1]), exp(confint(glm6))[-1,] ),2 )<br />
Waiting for profiling to be done...<br />
2.5 % 97.5 %<br />
mand 2.37 1.76 3.22<br />
ryger1 1.20 0.89 1.62<br />
age 1.06 1.02 1.09<br />
I(log2(sbp)) 7.94 4.58 13.91<br />
><br />
Odds for CHD er mere end dobbelt så stor for mænd.<br />
Der er ingen øget risiko for rygere (OR=1.2, CI=0.9-1.6).<br />
Risikoen stiger med alder, OR=1.06 per år (CI=1.02-1.09).<br />
Odds 8-dobles ved en fordobling af SBP (OR=7.9, CI=4.6-13.9).<br />
38 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Den logistiske <strong>regression</strong>smodel på odds-skala<br />
Modellen er lineær på log-odds-skala:<br />
( ) pi<br />
ln<br />
1 − p i<br />
= a + b 1 mand i + b 2 ryger i + b 3 alder i + b 4 log 2 (SBP i )<br />
og derfor multiplikativ på odds-skala:<br />
p i<br />
1 − p i<br />
= exp(a + b 1 mand i + b 2 ryger i + b 3 alder i + b 4 log 2 (SBP i ))<br />
= exp(a) exp(b 1 mand i ) exp(b 2 ryger i ) exp(b 3 alder i ) exp(b 4 log 2 (SBP i ))<br />
= exp(a) × OR mandi<br />
mand<br />
× ORryger i<br />
rygning × ORalderi alder<br />
× OR log 2 (SBPi)<br />
SBP<br />
39 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Fra <strong>regression</strong>smodel til prædiktion<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Den generelle model er<br />
( ) pi<br />
ln<br />
1 − p i<br />
= a + b 1 x i1 + · · · + b p x ip<br />
Der er en én-til-én relation mellem log-odds og sandsynlighed:<br />
p i =<br />
exp(a + b 1 x i1 + · · · + b p x ip )<br />
1 + exp(a + b 1 x i1 + · · · + b p x ip )<br />
40 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Prædiktion<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Vi ønsker at sammenligne sandsynligheden for CHD for en<br />
ikke-rygende mand på 50 år med sandsynligheden for en ikke-rygende<br />
kvinde på 50 år som funktion af SBP.<br />
Prædiktion i R<br />
> Mdata head(Mdata,3)<br />
mand ryger age sbp<br />
1 1 0 50 90<br />
2 1 0 50 91<br />
3 1 0 50 92<br />
> pM head(pM)<br />
1 2 3 4 5 6<br />
0.06037988 0.06228133 0.06421687 0.06618649 0.06819014 0.07022779<br />
><br />
> Kdata pK<br />
> plot(90:300,pM,xlab="SBP",ylab="Sandsynlighed for CHD",ylim=c(0,1),col="blue",type="l")<br />
> lines(90:300,pK,col="red")<br />
> legend(100,1,c("Mand, ikke-ryger, 50 aar","Kvinde, ikke-ryger, 50 aar"),<br />
> col=c("blue","red"),lty=1)<br />
><br />
41 / 42
u n i v e r s i t y o f c o p e n h a g e n<br />
Sandsynlighed for CHD som funktion af SBP<br />
d e p a r t m e n t o f b i o s t a t i s t i c s<br />
Sandsynlighed for CHD<br />
0.0 0.2 0.4 0.6 0.8 1.0<br />
Mand, ikke−ryger, 50 aar<br />
Kvinde, ikke−ryger, 50 aar<br />
100 150 200 250 300<br />
SBP<br />
42 / 42