Logistische regressie: Difference between revisions
J Wezelman (talk | contribs) |
|||
(18 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
|coauthor= prof dr J.W.R. Twisk | |coauthor= prof dr J.W.R. Twisk | ||
}} | }} | ||
==Wanneer gebruik ik een logistisch | ==Wanneer gebruik ik een logistisch regressiemodel?== | ||
Met logistische regressie kan je een [[KEUZE TOETS#Van welk type is mijn data?|dichotome uitkomstvariabele]] (dood versus leven, wel of geen klachten, etc.) relateren aan één of meerdere predictoren. Het basis idee achter logistische regressie is dat je de uitkomstvariabele zodanig transformeert dat er een soort [[lineaire regressie]] mogelijk is. De logistische | Met logistische regressie kan je een [[KEUZE TOETS#Van welk type is mijn data?|dichotome uitkomstvariabele]] (dood versus leven, wel of geen klachten, etc.) relateren aan één of meerdere predictoren. Het basis idee achter logistische regressie is dat je de uitkomstvariabele zodanig transformeert dat er een soort [[lineaire regressie]] mogelijk is. De logistische regressiecoëfficiënten van de onafhankelijke variabelen in het model kunnen vervolgens worden omgezet in odds ratio’s. | ||
In tegenstelling tot bij [[Lineaire regressie|lineaire regressie]] gelden bij logistische regressie niet al te veel statistische voorwaarden. Zo hoeven er bijvoorbeeld geen aannames te worden gedaan over de verdeling van de uitkomstvariabele. De voorspellers (of verklarende variabelen) kunnen (net als bij [[Lineaire regressie|lineaire regressie]]) zowel discreet als continu zijn. Wel moeten de observaties onafhankelijk van elkaar zijn. Dat betekent dat logistische regressie niet geschikt is om onderzoeksgegevens te analyseren waarbij de patiënten herhaaldelijk in de tijd zijn gemeten (voor [[herhaalde metingen]] bestaan andere technieken). | In tegenstelling tot bij [[Lineaire regressie|lineaire regressie]] gelden bij logistische regressie niet al te veel statistische voorwaarden. Zo hoeven er bijvoorbeeld geen aannames te worden gedaan over de verdeling van de uitkomstvariabele. De voorspellers (of verklarende variabelen) kunnen (net als bij [[Lineaire regressie|lineaire regressie]]) zowel discreet als continu zijn. Wel moeten de observaties onafhankelijk van elkaar zijn. Dat betekent dat logistische regressie niet geschikt is om onderzoeksgegevens te analyseren waarbij de patiënten herhaaldelijk in de tijd zijn gemeten (voor [[herhaalde metingen]] bestaan andere technieken). | ||
==Hoe werkt logistische regressie?== | ==Hoe werkt logistische regressie?== | ||
In een logistisch regressiemodel wordt niet de dichotome uitkomst zelf gemodelleerd, maar de kans op die uitkomst. Omdat een kans loopt van minimum 0 tot maximaal 1 en bij lineaire regressie de uitkomstvariabele continu moet zijn, kunnen we de kans niet rechtstreeks als uitkomstvariabele gebruiken. We kunnen wel gebruik maken van de relatieve kans: de [ | In een logistisch regressiemodel wordt niet de dichotome uitkomst zelf gemodelleerd, maar de kans op die uitkomst. Omdat een kans loopt van minimum 0 tot maximaal 1 en bij lineaire regressie de uitkomstvariabele continu moet zijn, kunnen we de kans niet rechtstreeks als uitkomstvariabele gebruiken. We kunnen wel gebruik maken van de relatieve kans: de [https://nl.wikipedia.org/wiki/Odds odds]. Immers, de odds kan gezien worden als een continue variabele die loopt van 0 tot oneindig. Vervolgens moet er statistisch nog iets aanvullends worden gedaan. De odds loopt van 0 tot oneindig, waarden onder de 0 zijn niet mogelijk. Als uitkomstvariabele wordt daarom niet de odds gebruikt, maar de natuurlijke logaritme van de odds. Deze ln(odds), ook wel logit genoemd, kan alle waarden tussen min oneindig en oneindig aannemen. In de logistische regressievergelijking | ||
In de logistische | |||
<math> | :<math> | ||
ln(odds)=a+b_1X_1+b_2X_2+\cdots+b_kX_k | \ln(odds)=a+b_1X_1+b_2X_2+\cdots+b_kX_k | ||
</math> | </math> | ||
is de natuurlijke logaritme van de odds de | is de natuurlijke logaritme van de odds de uitkomstvariabele, is <math>a</math> de constante, zijn <math>X_i, (i = 1,2, .., k)</math> de verklarende variabelen of covariaten, en vormen <math>b_1, b_2, \ldots b_k</math> de logistische regressiecoëfficiënten. | ||
==Hoe interpreteer ik mijn SPSS output bij gebruik van een enkelvoudig logistisch model?== | ==Hoe interpreteer ik mijn SPSS output bij gebruik van een enkelvoudig logistisch model?== | ||
Line 23: | Line 22: | ||
In een case-control onderzoek wordt bij 100 patiënten en 100 controlepersonen de relatie onderzocht tussen roken en het krijgen van een hartinfarct. De onderzoeksresultaten staan in de volgende 2x2 tabel weergegeven. | In een case-control onderzoek wordt bij 100 patiënten en 100 controlepersonen de relatie onderzocht tussen roken en het krijgen van een hartinfarct. De onderzoeksresultaten staan in de volgende 2x2 tabel weergegeven. | ||
{| border ="1" style="text-align: | {| border ="1" style="text-align:right" cellpadding="3" cellspacing="0" | ||
|width="70"| | |width="70"| | ||
|width="70" | | |width="70" | patiënt | ||
|width="70" | controle | |width="70" | controle | ||
|width="70" | totaal | |width="70" | totaal | ||
Line 47: | Line 46: | ||
De odds ratio (OR) voor roken in vergelijking tot niet-roken op het krijgen van een hartinfarct kan op de volgende manier berekend worden: | De odds ratio (OR) voor roken in vergelijking tot niet-roken op het krijgen van een hartinfarct kan op de volgende manier berekend worden: | ||
<math>OR = \frac{a/b}{c/d}=\frac{a*d}{b*c} = \frac{39*86}{14*61} = 3,93.</math> | : <math>OR = \frac{a/b}{c/d}=\frac{a*d}{b*c} = \frac{39*86}{14*61} = 3,93.</math> | ||
Het 95% [[betrouwbaarheidsinterval]] loopt van 1,70 tot 7,86. Er is een significante associatie, want de waarde van de nulhypothese (er is geen associatie: OR = 1) ligt buiten het betrouwbaarheidsinterval. | Het 95% [[betrouwbaarheidsinterval]] loopt van 1,70 tot 7,86. Er is een significante associatie, want de waarde van de nulhypothese (er is geen associatie: OR = 1) ligt buiten het betrouwbaarheidsinterval. | ||
Line 90: | Line 89: | ||
|} | |} | ||
De logistische regressiecoëfficiënt | De logistische regressiecoëfficiënt voor roken heeft de waarde 1,368. De Wald-test geeft aan dat er sprake is van een significant verband (p < 0,001) tussen roken en het krijgen van een infarct. Omdat de logistische regressiecoëfficiënt gelijk is aan de natuurlijk logaritme van de OR, kunnen we de e-macht nemen van de regressiecoëfficiënt (exp(B)), waardoor de natuurlijke logaritme als het ware ‘wegvalt’ en de OR overblijft. De OR op het hebben van een hartinfarct voor rokers ten opzichte van niet-rokers is hier dus <math>e^{1,368}</math> = 3,927 (95% CI: 1,694 - 7,855). | ||
==Hoe interpreteer ik mijn SPSS output bij gebruik van een meervoudig logistisch model?== | ==Hoe interpreteer ik mijn SPSS output bij gebruik van een meervoudig logistisch model?== | ||
Line 253: | Line 252: | ||
|} | |} | ||
De categorie die alleen maar 0-en in zijn rijtje heeft staan is de referentiecategorie. Dit is in jouw geval ‘unknown’. De andere categorieën worden genummerd door de '1' in een bepaalde kolom. | De categorie die alleen maar 0-en in zijn rijtje heeft staan is de referentiecategorie. Dit is in jouw geval ‘unknown’. De andere categorieën worden genummerd door de '1' in een bepaalde kolom. Bijvoorbeeld HIV-Positive is gecodeerd met een (1) en HIV-Negative met een (2). Verderop in de uitkomsttabellen kom je deze codering opnieuw tegen, in de 'variables in the equation tabel'. | ||
Je ziet hier in dat de HIV positieven (HIV(1)) een 1.4 maal hogere odds op klachten hebben dan de personen met onbekende HIV status. Evenzo zie je dat de HIV negatieven een 1.1 maal hogere odds hebben op klachten vergeleken met personen met onbekende HIV status. Om robuuste odds ratio’s te krijgen (met klein [[betrouwbaarheidsinterval|confidence interval]]) is het aan te raden om een referentiecategorie te gebruiken met redelijke grootte. De ‘unknown’ categorie is juist de kleinste, dus dat is niet zo’n handige referentiecategorie. Het kiezen van de referentiecategorie kan in het 'Categorical' scherm (keuze uit 'first' of 'last' + vergeet niet op change te klikken). Door de uitkomstcategorieën anders te coderen kun je iedere gewenste categorie als 'first' of 'last' verkrijgen. | Je ziet hier in dat de HIV-positieven (HIV(1)) een 1.4 maal hogere odds op klachten hebben dan de personen met onbekende HIV-status. Evenzo zie je dat de HIV-negatieven een 1.1 maal hogere odds hebben op klachten vergeleken met personen met onbekende HIV-status. Om robuuste odds ratio’s te krijgen (met klein [[betrouwbaarheidsinterval|confidence interval]]) is het aan te raden om een referentiecategorie te gebruiken met redelijke grootte. De ‘unknown’ categorie is juist de kleinste, dus dat is niet zo’n handige referentiecategorie. Het kiezen van de referentiecategorie kan in het 'Categorical' scherm (keuze uit 'first' of 'last' + vergeet niet op change te klikken). Door de uitkomstcategorieën anders te coderen kun je iedere gewenste categorie als 'first' of 'last' verkrijgen. | ||
Overigens lijkt de variabele HIV in dit model niet significant bij te dragen (overall test op alle drie de categorieën geeft p=0.451), dus je kunt hier niet met statistische zekerheid spreken over meer of minder kans op klachten. | Overigens lijkt de variabele HIV in dit model niet significant bij te dragen (overall test op alle drie de categorieën geeft p=0.451), dus je kunt hier niet met statistische zekerheid spreken over meer of minder kans op klachten. | ||
==Hoe bepaal ik of ik age als continue voorspeller of opgedeeld in | ==Hoe bepaal ik of ik age als continue voorspeller of opgedeeld in categorieën meegeef aan het model?== | ||
''Bij age twijfelde ik of ik het als een continue waarde moest laten, of dat ik het in (4) leeftijdscategorieën moet opdelen. Kunt u mij hierbij helpen? | ''Bij age twijfelde ik of ik het als een continue waarde moest laten, of dat ik het in (4) leeftijdscategorieën moet opdelen. Kunt u mij hierbij helpen? | ||
Statistisch is het mooier om age als continue mee te nemen en daarbij een lineaire relatie te veronderstellen, omdat je dan maar 1 parameter hoeft te schatten, je houdt dan meer ruimte over in het model voor het schatten van andere effecten. Die ene parameter staat voor het extra risico per jaar en je veronderstelt dan dat het effect van een jaar extra niet afhangt van de startleeftijd. Bijv leeftijd 21 | Statistisch is het mooier om age als continue voorspeller mee te nemen en daarbij een lineaire relatie te veronderstellen, omdat je dan maar 1 parameter hoeft te schatten, je houdt dan meer ruimte over in het model voor het schatten van andere effecten. Die ene parameter staat voor het extra risico per jaar en je veronderstelt dan dat het effect van een jaar extra niet afhangt van de startleeftijd. Bijv leeftijd 21 t.o.v. leeftijd 20 geeft dan evenveel 'extra risico' als leeftijd 76 t.o.v. leeftijd 75. Om te checken of die aanname redelijk is om te maken in jouw data, zou je de data eerst een keer ingedeeld in (4, eventueel meer, je moet wel een redelijk aantal personen per categorie overhouden) categorieën te analyseren. Je kunt dan kijken of de risicoschatting inderdaad mooi 'linear' oploopt. Bijv: | ||
:{| border ="1" cellpadding="3" style="text-align:right;" cellspacing="0" | |||
|- | |||
|width="70"|categorie | |||
|width="70"| OR | |||
|- | |||
|20-30||ref | |||
|- | |||
|30-40||1.10 | |||
|- | |||
|40-50||1.21 | |||
|- | |||
|50-60||1.46 | |||
|- | |||
|} | |||
loopt prachtig linear op (iedere 10 jaar verder wordt de OR vermenigvuldigd met 1.1), terwijl een uitslag als | loopt prachtig linear op (iedere 10 jaar verder wordt de OR vermenigvuldigd met 1.1), terwijl een uitslag als | ||
:{| border ="1" cellpadding="3" style="text-align:right;" cellspacing="0" | |||
|- | |||
|width="70"|categorie | |||
|width="70"| OR | |||
|- | |||
|20-30||ref | |||
|- | |||
|30-40||1.20 | |||
|- | |||
|40-50||0.63 | |||
|- | |||
|50-60||1.01 | |||
|- | |||
|} | |||
helemaal niet mooi oploopt: 30-40 geeft meer risico dan 20-30 en 40-50 geeft minder risico dan 20-30. In dit tweede voorbeeld past het meenemen van age als continue voorspeller niet goed. | helemaal niet mooi oploopt: 30-40 geeft meer risico dan 20-30 en 40-50 geeft minder risico dan 20-30. In dit tweede voorbeeld past het meenemen van age als continue voorspeller niet goed. | ||
==Moet ik mijn ordinale predictor als categorische variabele meegeven in het logistisch model? == | ==Moet ik mijn ordinale predictor als categorische variabele meegeven in het logistisch model? == | ||
''Ik doe momenteel een logistische regressie analyse. Mijn predictoren zijn ordinale variabelen (score 0,1,3 of 5). Moet ik dit in het logistische regressiemodel wel of niet aangeven als categorische variabelen? | ''Ik doe momenteel een logistische regressie analyse. Mijn predictoren zijn ordinale variabelen (score 0,1,3 of 5). Moet ik dit in het logistische regressiemodel wel of niet aangeven als categorische variabelen? | ||
Wanneer je de variabele niet als categorische variabele opgeeft, dan wordt er een lineair op- of aflopend effect verondersteld. Dat wil zeggen er wordt 1 odds ratio geschat die aangeeft hoeveel extra kans op de uitkomst 1 punt toename op de score geeft. Een score op de predictor van 3 versus een score van 1 geeft dan evenveel extra kans op de uitkomst als een score op de predictor van 5 versus 3. Een score van 1 versus 0 geeft de helft van die extra kans (alles gemeten op de logodds schaal). Wanneer je de predictor wel als categorisch opgeeft, dan worden er 3 odds ratios geschat. Het model kan dan vrij allerlei effecten schatten. Er kan dan bijvoorbeeld ook uitkomen dat categorie 0 en 5 een hoge kans op de uitkomst geven en categorie 1 en 3 een lage. De richting van het effect hoeft dan dus niet mooi op- of aflopend te zijn. Het meegeven als categorische legt minder restricties op en is daarom aan te raden. Wel zijn er voor het schatten van al die losse effecten meer parameters nodig (3 ipv 1), wat zou kunnen leiden tot minder | Wanneer je de variabele niet als categorische variabele opgeeft, dan wordt er een lineair op- of aflopend effect verondersteld. Dat wil zeggen er wordt 1 odds ratio geschat die aangeeft hoeveel extra kans op de uitkomst 1 punt toename op de score geeft. Een score op de predictor van 3 versus een score van 1 geeft dan evenveel extra kans op de uitkomst als een score op de predictor van 5 versus 3. Een score van 1 versus 0 geeft de helft van die extra kans (alles gemeten op de logodds schaal). Wanneer je de predictor wel als categorisch opgeeft, dan worden er 3 odds ratios geschat. Het model kan dan vrij allerlei effecten schatten. Er kan dan bijvoorbeeld ook uitkomen dat categorie 0 en 5 een hoge kans op de uitkomst geven en categorie 1 en 3 een lage. De richting van het effect hoeft dan dus niet mooi op- of aflopend te zijn. Het meegeven als categorische legt minder restricties op en is daarom aan te raden. Wel zijn er voor het schatten van al die losse effecten meer parameters nodig (3 ipv 1), wat zou kunnen leiden tot minder efficiënte schattingen (minder power). Een advies zou kunnen zijn om eerst de resultaten met gebruik van een categorische predictor te bekijken. Indien de gevonden odds ratios mooi op- of aflopen, dan kun je overwegen de predictor alsnog als numerieke mee te geven, mits dit ook overeen stemt met jouw hypothese. | ||
== Wat betekenen de | == Wat betekenen de regressiecoëfficiënten in een logistisch model? == | ||
''Ik onderzoek de invloed van leeftijd van de | ''Ik onderzoek de invloed van leeftijd van de patiënt op het wel/ niet uitvoeren van een onderzoek. | ||
''afhankelijke = onderzoek ja/nee dichotoom) | ''afhankelijke = onderzoek ja/nee dichotoom) | ||
''onafhankelijke = leeftijd (numeriek) | ''onafhankelijke = leeftijd (numeriek) | ||
Line 299: | Line 312: | ||
De eerste interpretatie is de juiste. OR van 0.951 zegt inderdaad dat met ieder levensjaar de kans (eigenlijk de odds) op onderzoek krijgen met ~5% afneemt. De a is meestal niet van belang. Die geeft binnen het model de intercept weer (dus de verwachte waarde bij een leeftijd van 0). De a staat op de logit schaal genoteerd. De proportie behorend bij een a van -0.05 kan als volgt hieruit berekend worden: | De eerste interpretatie is de juiste. OR van 0.951 zegt inderdaad dat met ieder levensjaar de kans (eigenlijk de odds) op onderzoek krijgen met ~5% afneemt. De a is meestal niet van belang. Die geeft binnen het model de intercept weer (dus de verwachte waarde bij een leeftijd van 0). De a staat op de logit schaal genoteerd. De proportie behorend bij een a van -0.05 kan als volgt hieruit berekend worden: | ||
<math> | :<math> | ||
\ln(odds)= \ln{\frac{p}{1-p}} = -0.05 | \ln(odds)= \ln{\frac{p}{1-p}} = -0.05 | ||
</math> | </math> | ||
<math> | :<math> | ||
p = \frac{e^{-0.05}}{1+e^{-0.05}} = 0.49. | p = \frac{e^{-0.05}}{1+e^{-0.05}} = 0.49. | ||
</math> | </math> | ||
Je ziet dus dat er voor kinderen met leeftijd 0 een proportie van 0.49 onderzoek ja geschat wordt. Vaak is een | Je ziet dus dat er voor kinderen met leeftijd 0 een proportie van 0.49 onderzoek ja geschat wordt. Vaak is een patiënt met de covariabele waarde 0 niet aanwezig binnen de studiepopulatie en heeft deze intercept minder betekenis, maar het is wel goed om te kijken of deze waarde redelijk lijkt. | ||
De b staat ook genoteerd in de logit context. Een negatieve b betekent dat de kans op onderzoek afneemt bij toenemende leeftijd. De b is direct gekoppeld aan de OR. | De b staat ook genoteerd in de logit context. Een negatieve b betekent dat de kans op onderzoek afneemt bij toenemende leeftijd. De b is direct gekoppeld aan de OR. | ||
<math> | :<math> | ||
OR = e^{b} = e^{-0.0556} = 0.95 | OR = e^{b} = e^{-0.0556} = 0.95 | ||
</math> | </math> | ||
Let er dus op dat de | Let er dus op dat de regressiecoëfficiënten (a en b) niet op dezelfde manier geïnterpreteerd kunnen worden als bij [[lineaire regressie]]. | ||
==Kan ik adjusted proporties krijgen uit mijn logistisch model?== | ==Kan ik adjusted proporties krijgen uit mijn logistisch model?== | ||
''Bij de follow-up evaluatie van de uitkomsten van een RCT (interventie versus usual care) willen we tevens een analyse doen waarbij we corrigeren voor | ''Bij de follow-up-evaluatie van de uitkomsten van een RCT (interventie versus usual care) willen we tevens een analyse doen waarbij we corrigeren voor baselineverschillen. Voor een dichotome variabele (wel of niet neurologisch afwijkend) hebben we univariaat een crosstab gemaakt, met een chi-kwadraattoets. Vervolgens hebben we dit met een logregressie gedaan en daarna een multivariate logregressie met de covariaten erin. De vraag is nu, hoe presenteren we de data? Normaal gesproken zouden we de frequenties geven (24% versus 14% afwijkend), maar uit de logregressie komt een odds ratio. Is het dan logischer om twee keer een odds ratio te presenteren? Dus van het univariate en multivariate logmodel? Of kunnen we ook vergelijkbaar met adjusted means uit een ANCOVA een adjusted frequentie krijgen? En zo ja, hoe dan. | ||
Meestal worden inderdaad [[multivariabele regressie|univariable en multivariable]] odds ratios gepresenteerd. Je kunt echter ook geadjusteerde proporties berekenen. Het is daarvoor gebruikelijk om de voorspelde frequenties te berekenen voor een | Meestal worden inderdaad [[multivariabele regressie|univariable en multivariable]] odds ratios gepresenteerd. Je kunt echter ook geadjusteerde proporties berekenen. Het is daarvoor gebruikelijk om de voorspelde frequenties te berekenen voor een patiënt die voor alle corrigeerde variabelen de gemiddelde waarde heeft. Met behulp van de formule van de logistische regressie waarbij je voor de corrigerende variabelen de gemiddelde waarde invult en voor de variabele van interesse (interventie versus usual care) een keer een 0 en een keer een 1. Als het model bijvoorbeeld is: | ||
ln(odds_neurologische afwijking) = intercept + B1 * interventie + B2 * age_at_baseline, | : ln(odds_neurologische afwijking) = intercept + B1 * interventie + B2 * age_at_baseline, | ||
en de gemiddelde leeftijd op baseline van alle | en de gemiddelde leeftijd op baseline van alle patiënten was 63, dan geldt voor de 'usual care groep': | ||
ln(odds_neurologische afwijking) = intercept + B2 * 63, | : ln(odds_neurologische afwijking}) = intercept + B2 * 63, | ||
en voor de interventiegroep: | en voor de interventiegroep: | ||
ln(odds_neurologische afwijking) = intercept + B1 *1 + B2 * 63 | : ln(odds_neurologische afwijking) = intercept + B1 * 1 + B2 * 63. | ||
De | De intercept, B1 en B2 lees je af uit de coëfficiëntentabel van de logistische regressie. | ||
ln(odds) = ln (P/1-P) | De zo gevonden 'log odds'-getallen kun je terugrekenen naar proporties, want ln(odds) = ln(P/1-P). | ||
Dus als je uit de 'log odds' weer de P terug wilt vinden, dan kun je (door de inverse transformatie erop los te laten, [https://stats.oarc.ucla.edu/other/mult-pkg/faq/general/faq-how-do-i-interpret-odds-ratios-in-logistic-regression/ hier] staat dat uitgewerkt) gebruiken: | |||
P = exp(ln(odds))/(1+exp(ln(odds))), waarbij exp staat voor 'e tot de macht'. | : P = exp(ln(odds))/(1+exp(ln(odds))), waarbij exp staat voor 'e tot de macht'. | ||
De P is 'kans op het event', maar kan ook | De P is 'kans op het event', maar kan ook geïnterpreteerd worden als (voorspelde) proportie events. De voorspelde proportie events in de twee groepen voor patiënten met alle andere covariaten op hun gemiddelde is een goede weergave van het 'geadjusteerde' effect. | ||
==Mijn logistische regressie lukt niet vanwege een 0 in mijn 2x2 tabel, wat nu?== | ==Mijn logistische regressie lukt niet vanwege een 0 in mijn 2x2 tabel, wat nu?== | ||
''Ik heb een binaire uitkomstmaat (wel of geen detectie) waarvoor ik met logistische regressie aan de gang ben gegaan. Nu kom ik echter bij een voorspellende factor (ook binair) waarbij ik in de war raak. Ik heb een 2x2 tabel gemaakt om een odds ratio te berekenen (ter controle omdat de logistische regressie niet werkt), maar kom dan niet verder. | ''Ik heb een binaire uitkomstmaat (wel of geen detectie) waarvoor ik met logistische regressie aan de gang ben gegaan. Nu kom ik echter bij een voorspellende factor (ook binair) waarbij ik in de war raak. Ik heb een 2x2 tabel gemaakt om een odds ratio te berekenen (ter controle omdat de logistische regressie niet werkt), maar kom dan niet verder. | ||
:{| | |||
| | |||
|Wel detectie | |||
|Geen detectie | |||
|Totaal | |||
|- | |||
|Factor aanwezig||17||3||20 | |||
|- | |||
|Factor afwezig||7||0||7 | |||
|- | |||
|Totaal||24||3||27 | |||
|} | |||
''Het probleem is dus die 0. Hoe kan ik hiervoor alsnog een logistische regressie uitvoeren? | ''Het probleem is dus die 0. Hoe kan ik hiervoor alsnog een logistische regressie uitvoeren? | ||
Het berekenen van een [[odds ratio]] lukt niet vanwege de 0. De odds ratio op geen detectie is hier (3/17)/(0/7) = oneindig (delen door nul is flauwekul). Indien je alleen een univariabele analyse doet (wat met deze aantallen het hoogst haalbare lijkt), is een simpele truc voor het alsnog berekenen van odds ratio het optellen van 0.5 in ieder van de 4 cellen. Je krijgt dan (3.5/17.5)/(0.5/7.5) = 3. Voor het berekenen van een bijbehorende p-waarde zou je bijvoorbeeld een [[Fisher's exact toets]] kunnen gebruiken. | Het berekenen van een [[Associatiematen_2x2_tabel#Odds_ratio| odds ratio]] lukt niet vanwege de 0. De odds ratio op geen detectie is hier (3/17)/(0/7) = oneindig (delen door nul is flauwekul). Indien je alleen een univariabele analyse doet (wat met deze aantallen het hoogst haalbare lijkt), is een simpele truc voor het alsnog berekenen van odds ratio het optellen van 0.5 in ieder van de 4 cellen. Je krijgt dan (3.5/17.5)/(0.5/7.5) = 3. Voor het berekenen van een bijbehorende p-waarde zou je bijvoorbeeld een [[Fisher%27s_exact_toets | Fisher's exact toets]] kunnen gebruiken. | ||
Er bestaan ook statistisch meer geavanceerdere oplossingen hiervoor. Deze zijn vooral handig als je een multivariabele analyse wilt doen waarin ook deze factor moet worden opgenomen. Je kunt dan gebruik maken van zogeheten 'penalized-likelihood logistic regression'. Daarbij wordt tijdens het schatten ervoor gezorgd dat de OR 'eindig' blijft door een 'penalty' te geven aan grote ORs. Dergelijke methoden zijn nog niet in [[statistische software#SPSS|SPSS]] | Er bestaan ook statistisch meer geavanceerdere oplossingen hiervoor. Deze zijn vooral handig als je een multivariabele analyse wilt doen waarin ook deze factor moet worden opgenomen. Je kunt dan gebruik maken van zogeheten 'penalized-likelihood logistic regression'. Daarbij wordt tijdens het schatten ervoor gezorgd dat de OR 'eindig' blijft door een 'penalty' te geven aan grote ORs. Dergelijke methoden zijn nog niet in [[statistische software#SPSS|SPSS]] geïmplementeerd. Wel in bijvoorbeeld de logistf package van [[statistische software#R|R]]. In jouw geval zou een univariabele penalized regression uitkomen op een OR van 3.000008. | ||
==Ik krijg een hele grote odds ratio uit mijn | ==Ik krijg een hele grote odds ratio uit mijn logistische regressie, wat kan er mis zijn?== | ||
''Ik heb een enkelvoudige logistische regressie analyse uitgevoerd met als uitkomstmaat prognose (niet-ernstig n=26 of ernstig n=14) en de variabele is een continue maat. Uitkomst:: B 9.970, SE 5.722, Wald 3.035, df1, Sign 0.081, Exp(B) 21371.871, 95%CI 0.288 to 1587561235. Ik begrijp echter niet hoe de OR zo ontzettend hoog kan zijn en op internet lees ik dat dit ook vaak een bias betreft. Kunt u mij echter uitleggen om wat voor bias het dan gaat en hoe ik deze resultaten kan interpreteren? Mag ik deze analyse nu wel gebruiken? | ''Ik heb een enkelvoudige logistische regressie analyse uitgevoerd met als uitkomstmaat prognose (niet-ernstig n=26 of ernstig n=14) en de variabele is een continue maat. Uitkomst:: B 9.970, SE 5.722, Wald 3.035, df1, Sign 0.081, Exp(B) 21371.871, 95%CI 0.288 to 1587561235. Ik begrijp echter niet hoe de OR zo ontzettend hoog kan zijn en op internet lees ik dat dit ook vaak een bias betreft. Kunt u mij echter uitleggen om wat voor bias het dan gaat en hoe ik deze resultaten kan interpreteren? Mag ik deze analyse nu wel gebruiken? | ||
Het eerste wat ik in zo'n geval zou controleren is de orde grootte van de continue voorspeller. Welke waarden kan deze voorspeller aannemen? Als dit iets is dat in kleine eenheden uitgedrukt wordt ( | Het eerste wat ik in zo'n geval zou controleren is de orde grootte van de continue voorspeller. Welke waarden kan deze voorspeller aannemen? Als dit iets is dat in kleine eenheden uitgedrukt wordt (bijvoorbeeld 0.0012 oid), dan kan dat leiden tot dergelijke grote odds ratio's. Het is voor de interpretatie van de OR handig om de continue voorspeller uit te drukken in getallen binnen een normale range, bijvoorbeeld tussen 0 en 100. Om dit te bewerkstelligen kun je de metingen uitdrukken in bijvoorbeeld 'promille (=duizendsten). Dit kun je doen door alle waarden van de voorspeller te vermenigvuldigen met 1000. De voorbeeldwaarde van 0.0012 wordt dan 1.2. De interpretatie van de OR wordt dan 'hoeveel neemt de odds op het event toe als de voorspeller 1 duizendste toeneemt'. Iets soortgelijks kan natuurlijk ook met andere schalingsfactoren zoals 10^4 (0.0012 wordt dan 12) of 10^5 (0.0012 wordt dan 120) etc. | ||
Ook raad ik je aan te kijken naar de verdeling van de voorspeller. Er is strikt gezien geen normale verdeling voor de voorspeller nodig. Maar er wordt in het logistische model wel de aanname gemaakt dat 1 unit toename op de voorspeller correspondeert met een vaste toename van (log) odds op het event (lineaire relatie tussen voorspeller en log odds). Als de voorspeller zeer scheef verdeeld is, is deze lineariteitsaanname waarschijnlijk niet plausibel. Een transformatie van de voorspeller kan zorgen voor een meer symmetrisch verdeelde voorspeller die mogelijk beter past bij de aanname. | Ook raad ik je aan te kijken naar de verdeling van de voorspeller. Er is strikt gezien geen normale verdeling voor de voorspeller nodig. Maar er wordt in het logistische model wel de aanname gemaakt dat 1 unit toename op de voorspeller correspondeert met een vaste toename van (log) odds op het event (lineaire relatie tussen voorspeller en log odds). Als de voorspeller zeer scheef verdeeld is, is deze lineariteitsaanname waarschijnlijk niet plausibel. Een transformatie van de voorspeller kan zorgen voor een meer symmetrisch verdeelde voorspeller die mogelijk beter past bij de aanname. | ||
==Ik wil een logistische regressie doen op een dataset met gematchte | ==Ik wil een logistische regressie doen op een dataset met gematchte patiënten, hoe doe ik dat in SPSS?== | ||
Wanneer de data bestaat uit gematchte paren, | Wanneer de data bestaat uit gematchte paren, bijvoorbeeld cases en controles gematched op leeftijd en geslacht, is een gewone logistische regressie niet voldoende. Om op goede manier met de gepaardheid van de data rekening te houden is een conditionele logistische regressie nodig. SPSS bevat hier geen directe functie voor, maar de analyse kan wel met een truc via de [[survival analyse#Cox regressie|Cox procedure]] gedaan worden. Dit [http://www.youtube.com/watch?v=be-M0tMMKyU Youtube-filmpje van Robin Beaumont] legt het zeer duidelijk uit. | ||
==Het effect van een scheef verdeelde voorspeller is anders in een logistisch model dan in een Mann-Whitney test, wat nu?== | ==Het effect van een scheef verdeelde voorspeller is anders in een logistisch model dan in een Mann-Whitney-test, wat nu?== | ||
''Ik wil graag een [[multivariabele regressie|multivariabele]] logistische regressie doen voor de uitkomst postoperatieve complicaties ja/ nee. Eén van de variabelen is 'aantal dagen opgenomen in ziekenhuis vóór operatie'. Uit de literatuur is bekend dat als | ''Ik wil graag een [[multivariabele regressie|multivariabele]] logistische regressie doen voor de uitkomst postoperatieve complicaties ja/ nee. Eén van de variabelen is 'aantal dagen opgenomen in ziekenhuis vóór operatie'. Uit de literatuur is bekend dat als patiënten langer opgenomen liggen, dat ze het dan vaak slechter doen postoperatief. Deze variabele is continu, maar scheef verdeeld. Eerst keek ik univariabel - nu had ik eerst een [[Mann-Whitney U toets]] gedaan om te zien of er een verschil was tussen de groep met en de groep zonder complicaties; hieruit kwam P=0.019. Vervolgens deed ik in SPSS een univariable analyse via de logistische regressie knoppen en toen kreeg ik ineens een P=0.275. Vaak verschilt de P dan wel iets, maar nu wel heel veel vind ik. Is het omdat de variabele skewed is, en de logistische regressie hier geen rekening mee houdt? | ||
De verschillen tussen beide analyses zouden inderdaad veroorzaakt kunnen worden door de scheefheid van de variabele. In de logistische regressie wordt aangenomen dat iedere 1 dag extra ligduur een vaste toename in risico (op de log odds schaal) op postoperiatieve complicaties geeft. In de Mann Whitney analyse wordt dit niet gedaan en is enkel de aanname dat degenen met complicaties een gemiddeld hoger ranknummer hebben wanneer alle opnameduren van laag naar hoog | De verschillen tussen beide analyses zouden inderdaad veroorzaakt kunnen worden door de scheefheid van de variabele. In de logistische regressie wordt aangenomen dat iedere 1 dag extra ligduur een vaste toename in risico (op de log odds schaal) op postoperiatieve complicaties geeft. In de Mann-Whitney-analyse wordt dit niet gedaan en is enkel de aanname dat degenen met complicaties een gemiddeld hoger ranknummer hebben wanneer alle opnameduren van laag naar hoog gerankt worden. | ||
Om te controleren of de 'iedere dag is evenveel extra risico'-aanname in het logistisch model inderdaad het verschil tussen beide analyses verklaart, zou je het volgende kunnen doen: maak een nieuwe variabele aan die de ranknummers van de opnameduur bevat (zie | Om te controleren of de 'iedere dag is evenveel extra risico'-aanname in het logistisch model inderdaad het verschil tussen beide analyses verklaart, zou je het volgende kunnen doen: maak een nieuwe variabele aan die de ranknummers van de opnameduur bevat (zie bijvoorbeeld deze [https://statistics.laerd.com/spss-tutorials/ranking-data-in-spss-statistics.php instructie]). Geef deze rank-variabele mee aan een logistische regressie. Wanneer deze 'rank-regressie' wel overeenkomt in conclusie met de Mann-Whitney, dan is dat aanleiding te denken dat de 'iedere dag is evenveel extra risico' aanname niet klopt. Let op, deze analyse is alleen ter controle, het is niet zaligmakend omdat de resulterende OR een 'extra risico per ranknummer' geeft en dergelijke informatie is niet te generaliseren naar andere populaties / patiënten. Je zou - indien je toch graag een multivariabele logistische regressie doet - een transformatie van de ligdag variabele kunnen overwegen. Bijv. een log-transformatie. Kijk of je met die log transformatie beter passende informatie krijgt. | ||
==Komt univariabele logistische regressie overeen met een [[Chi-kwadraat toets]]?== | ==Komt univariabele logistische regressie overeen met een [[Chi-kwadraat toets]]?== | ||
Line 386: | Line 403: | ||
==Waar vind ik logistische regressie in SPSS?== | ==Waar vind ik logistische regressie in SPSS?== | ||
Je vindt deze techniek in SPSS onder Analyze->Regression->Binary Logistic. | Je vindt deze techniek in SPSS onder Analyze -> Regression -> Binary Logistic. | ||
== Hoeveel variabelen mag ik meegeven aan mijn model? == | |||
''Ik wil graag een multivariabele logistische analyse doen voor de risicofactoren voor obesitas binnen een patiëntengroep. Hoeveel variabelen (risicofactoren) mag ik testen op 893 patiënten? | |||
Een vuistregel is dat bij logistische regressie het aantal parameters in een [[multivariabele regressie | multivariabel model]] maximaal 5% tot 10% mag zijn van het minimum van het aantal mensen met en zonder obesitas (event) in je sample. Dus als je 300 patiënten met en 593 zonder obesitas hebt, mag je bij deze vuistregel max 15 tot 30 parameters in je model opnemen. Ik spreek hier over parameters, niet over variabelen, omdat bijv. een categorische variabele met 3 categorieën 2 extra parameters in je model geeft. Bij logistische regressie heb je per parameter dus minimaal 10, maar het liefst ten minste 20 of 30, 'events' nodig. Bij minder 'events' kunnen de schattingen van de parameters misleidend zijn door. Hierbij tel je het uitkomst dat het minst vaak voorkomt als event. Stel je hebt een onderzoek waarbij 285 van de 300 patiënten overlijdt en 15 niet. Dan zijn er 15 'events'. <cite>[Peduzzi1996]</cite> Zie ook de pagina over power op deze wiki: [[Poweranalyse#Hoeveel_pati.C3.ABnten_heb_ik_nodig_om_een_predictie_model_te_bouwen.3F|poweranalyse bij een predictiemodel]] | |||
== | ==Aanvullende bronnen== | ||
*[ | *[https://isqr.uni-freiburg.de/reginmed2011/logistic.pdf Course material on logistic regression] from the web based distance learning course - Regression Models as a Tool in Medical Research - International School of Quantitative Research, University of Freiburg. | ||
*[ | *[https://isqr.uni-freiburg.de/reginmed2011/categorical.pdf Course material on the use of categorical predictors (in logistic regression)] from the web based distance learning course - Regression Models as a Tool in Medical Research - International School of Quantitative Research, University of Freiburg. | ||
Latest revision as of 09:19, 1 July 2024
Auteur | prof dr R.J. de Haan | |
Co-Auteur | prof dr J.W.R. Twisk | |
auteurschap op deze site |
Wanneer gebruik ik een logistisch regressiemodel?
Met logistische regressie kan je een dichotome uitkomstvariabele (dood versus leven, wel of geen klachten, etc.) relateren aan één of meerdere predictoren. Het basis idee achter logistische regressie is dat je de uitkomstvariabele zodanig transformeert dat er een soort lineaire regressie mogelijk is. De logistische regressiecoëfficiënten van de onafhankelijke variabelen in het model kunnen vervolgens worden omgezet in odds ratio’s.
In tegenstelling tot bij lineaire regressie gelden bij logistische regressie niet al te veel statistische voorwaarden. Zo hoeven er bijvoorbeeld geen aannames te worden gedaan over de verdeling van de uitkomstvariabele. De voorspellers (of verklarende variabelen) kunnen (net als bij lineaire regressie) zowel discreet als continu zijn. Wel moeten de observaties onafhankelijk van elkaar zijn. Dat betekent dat logistische regressie niet geschikt is om onderzoeksgegevens te analyseren waarbij de patiënten herhaaldelijk in de tijd zijn gemeten (voor herhaalde metingen bestaan andere technieken).
Hoe werkt logistische regressie?
In een logistisch regressiemodel wordt niet de dichotome uitkomst zelf gemodelleerd, maar de kans op die uitkomst. Omdat een kans loopt van minimum 0 tot maximaal 1 en bij lineaire regressie de uitkomstvariabele continu moet zijn, kunnen we de kans niet rechtstreeks als uitkomstvariabele gebruiken. We kunnen wel gebruik maken van de relatieve kans: de odds. Immers, de odds kan gezien worden als een continue variabele die loopt van 0 tot oneindig. Vervolgens moet er statistisch nog iets aanvullends worden gedaan. De odds loopt van 0 tot oneindig, waarden onder de 0 zijn niet mogelijk. Als uitkomstvariabele wordt daarom niet de odds gebruikt, maar de natuurlijke logaritme van de odds. Deze ln(odds), ook wel logit genoemd, kan alle waarden tussen min oneindig en oneindig aannemen. In de logistische regressievergelijking
is de natuurlijke logaritme van de odds de uitkomstvariabele, is de constante, zijn de verklarende variabelen of covariaten, en vormen de logistische regressiecoëfficiënten.
Hoe interpreteer ik mijn SPSS output bij gebruik van een enkelvoudig logistisch model?
(Het hierna volgende voorbeeld is afkomstig uit het boek “Inleiding in de toegepaste biostatistiek” van J.W.R Twisk, Elsevier gezondheidszorg, Maarssen, 2007).
In een case-control onderzoek wordt bij 100 patiënten en 100 controlepersonen de relatie onderzocht tussen roken en het krijgen van een hartinfarct. De onderzoeksresultaten staan in de volgende 2x2 tabel weergegeven.
patiënt | controle | totaal | |
rookt wel | 39 | 14 | 53 |
rookt niet | 61 | 86 | 147 |
totaal | 100 | 100 | 200 |
De odds ratio (OR) voor roken in vergelijking tot niet-roken op het krijgen van een hartinfarct kan op de volgende manier berekend worden:
Het 95% betrouwbaarheidsinterval loopt van 1,70 tot 7,86. Er is een significante associatie, want de waarde van de nulhypothese (er is geen associatie: OR = 1) ligt buiten het betrouwbaarheidsinterval.
We gaan deze analyse herhalen, maar nu met behulp van logistische regressie. Als we in SPSS in de schermen van de module Binary Logistic de variabele ‘type proefpersoon’ (als afhankelijke (dependent) variabele opgeven (0 = controle, 1 = patiënt) en de variabele ‘roken’ (0 = nee, 1= ja) als onafhankelijke (independent) invoeren, dan zal SPSS, naast ander output, de concluderende slot-tabel “Variables in the Equation” genereren.
Variables in the Equation | |||||||||
---|---|---|---|---|---|---|---|---|---|
B | S.E. | Wald | df | Sig. | Exp(B) | 95.0% C.I.for Exp(B) | |||
Lower | Upper | ||||||||
Step 1 | roken | 1.368 | .354 | 14.960 | 1 | .000 | 3.927 | 1.694 | 7.855 |
Constant | -.343 | .167 | 4.210 | 1 | .040 | .709 |
De logistische regressiecoëfficiënt voor roken heeft de waarde 1,368. De Wald-test geeft aan dat er sprake is van een significant verband (p < 0,001) tussen roken en het krijgen van een infarct. Omdat de logistische regressiecoëfficiënt gelijk is aan de natuurlijk logaritme van de OR, kunnen we de e-macht nemen van de regressiecoëfficiënt (exp(B)), waardoor de natuurlijke logaritme als het ware ‘wegvalt’ en de OR overblijft. De OR op het hebben van een hartinfarct voor rokers ten opzichte van niet-rokers is hier dus = 3,927 (95% CI: 1,694 - 7,855).
Hoe interpreteer ik mijn SPSS output bij gebruik van een meervoudig logistisch model?
In dit voorbeeld zullen we met behulp van meervoudige ('multiple' of 'multivariable') logistische regressie meerdere onafhankelijke variabelen (covariaten) gelijkertijd meenemen in het model. Laten we ervan uitgaan dat we in een prospectief cohortonderzoek bij 115 in het ziekenhuis opgenomen oudere patiënten de kans op het optreden van delier (0 = niet, 1 = wel) tijdens hun opname willen voorspellen. Dit doen we aan de hand van de volgende patiëntkenmerken: cognitief functioneren voor opname (0 = geen stoornis, 1 = wel stoornis), ADL niveau voor opname (0 = niet beperkt, 1 = beperkt), en leeftijd (continue variabele). Merk op dat de geschatte OR bij een continue variabele, in dit geval leeftijd, geïnterpreteerd moet worden als de OR op het krijgen van een delier voor het verschil van één eenheid in leeftijd (hier uitgedrukt in jaren). Stel bijvoorbeeld dat de variabele ‘leeftijd’ een OR heeft van 1,028 (zoals in het voorbeeld), dan wil dat zeggen dat de odds op het krijgen van een delier van een persoon die één jaar ouder is 1,028 keer zo hoog is als de odds van een persoon die één jaar jonger is.
SPSS laat in de concluderende tabel “Variables in the Equation” de volgende resultaten zien:
Variables in the Equation | |||||||||
---|---|---|---|---|---|---|---|---|---|
B | S.E. | Wald | df | Sig. | Exp(B) | 95.0% C.I.for Exp(B) | |||
Lower | Upper | ||||||||
Step 1 | Cognitie | 1.800 | .607 | 8.794 | 1 | .003 | 6.047 | 1.841 | 19.863 |
ADL | 1.237 | .508 | 5.928 | 1 | .015 | 3.444 | 1.273 | 9.321 | |
Leeftijd | .028 | .032 | .761 | 1 | .383 | 1.028 | .966 | 1.094 | |
Constant | -5.034 | 2.527 | 3.970 | 1 | .046 | .007 |
Cognitief functioneren (p = 0,003) en ADL niveau (p = 0,015) blijken onafhankelijke voorspellers te zijn voor het optreden van delier tijdens ziekenhuisopname. Cognitie laat een OR zien van 6,047. Met andere woorden: geadjusteerd voor het ADL niveau en leeftijd, is de odds op het krijgen van een delier bij patiënten met cognitieve stoornissen ongeveer 6 keer zo hoog als de odds voor patiënten zonder cognitieve stoornissen. Rekening houdend met de invloeden van cognitie en leeftijd, blijken patiënten met functionele beperkingen eveneens een grotere kans te hebben op het krijgen van een delier (OR = 3,444). Geadjusteerd voor de twee indicators van functionele gezondheid (cognitie en ADL), blijkt de leeftijd van de patiënt echter niet significant geassocieerd te zijn met het krijgen van een delier (OR = 1,028; p = 0,383).
Hoe interpreteer ik de output van een continue voorspeller een logistisch model?
Een van de risicofactoren die in ons model zit is de totale duur van de anesthesie in minuten. In het model geeft dit een B waarde van 0,005 en een odds ratio van 1,005 zien. Dit geeft een p waarde die sterk significant is (0.001), maar ik begrijp niet precies hoe ik die odds ratio moet interpreteren. Wat ik denk is dat het de toename van de kans op postoperatieve misselijkheid per minuut anesthesieduur weergeeft, maar zeker weten doe ik dat niet.
Je interpretatie per minuut is juist. Om een meer sprekende OR te krijgen zou ook in de dataset de variabele voor de duur eerst door bijvoorbeeld 10 kunnen delen, en dan het model draaien. De OR wordt dan gegeven per 10 minuten toename van anesthesie. Als je daarbij geen afronding gebruikt, verandert er verder niets aan het model.
Hoe interpreteer ik de output van een categorische voorspeller in een logistisch model?
Ik doe een logistische regressie met psychologische klachten (ja/nee) als uitkomst en HIV als voorspeller, dit is een predictor met 3 opties; namelijk HIV 1=positief, 2=negatief, 3=onbekend (geen HIV-test gedaan). Ik vind het moeilijk te begrijpen wat de odds ratio in dit geval betekent. Hebben mensen met HIV, mensen zonder HIV of mensen die hun status niet weten nou meer risico op psychologische klachten? Hieronder de betreffende output.
Variables in the Equation | |||||||||
---|---|---|---|---|---|---|---|---|---|
B | S.E. | Wald | df | Sig. | Exp(B) | 95.0% C.I.for Exp(B) | |||
Lower | Upper | ||||||||
Step 1 | HIV | 1.591 | 2 | .451 | |||||
HIV(1) | 0.361 | 0.425 | 0.722 | 1 | .396 | 1.435 | 0.624 | 3.300 | |
HIV(2) | 0.087 | 0.431 | 0.041 | 1 | .840 | 1.091 | 0.469 | 2.539 | |
Constant | -0.375 | 0.392 | 0.915 | 1 | .339 | .688 |
Voor interpretatie van de odds ratio bij categorische variabelen, is het van belang om te weten welke codering SPSS gebruikt. SPSS kiest een referentiecategorie voor de categorische variabelen. Hij (of zij) vertelt welke dat is in de tabel 'Categorical Variabele Codings':
Categorical Variabele Codings | ||||
---|---|---|---|---|
Frequency | Parameter coding | |||
(1) | (2) | |||
HIV | Positive | 147 | 1.000 | .000 |
Negative | 126 | .000 | 1.000 | |
unknown | 27 | .000 | .000 |
De categorie die alleen maar 0-en in zijn rijtje heeft staan is de referentiecategorie. Dit is in jouw geval ‘unknown’. De andere categorieën worden genummerd door de '1' in een bepaalde kolom. Bijvoorbeeld HIV-Positive is gecodeerd met een (1) en HIV-Negative met een (2). Verderop in de uitkomsttabellen kom je deze codering opnieuw tegen, in de 'variables in the equation tabel'.
Je ziet hier in dat de HIV-positieven (HIV(1)) een 1.4 maal hogere odds op klachten hebben dan de personen met onbekende HIV-status. Evenzo zie je dat de HIV-negatieven een 1.1 maal hogere odds hebben op klachten vergeleken met personen met onbekende HIV-status. Om robuuste odds ratio’s te krijgen (met klein confidence interval) is het aan te raden om een referentiecategorie te gebruiken met redelijke grootte. De ‘unknown’ categorie is juist de kleinste, dus dat is niet zo’n handige referentiecategorie. Het kiezen van de referentiecategorie kan in het 'Categorical' scherm (keuze uit 'first' of 'last' + vergeet niet op change te klikken). Door de uitkomstcategorieën anders te coderen kun je iedere gewenste categorie als 'first' of 'last' verkrijgen.
Overigens lijkt de variabele HIV in dit model niet significant bij te dragen (overall test op alle drie de categorieën geeft p=0.451), dus je kunt hier niet met statistische zekerheid spreken over meer of minder kans op klachten.
Hoe bepaal ik of ik age als continue voorspeller of opgedeeld in categorieën meegeef aan het model?
Bij age twijfelde ik of ik het als een continue waarde moest laten, of dat ik het in (4) leeftijdscategorieën moet opdelen. Kunt u mij hierbij helpen?
Statistisch is het mooier om age als continue voorspeller mee te nemen en daarbij een lineaire relatie te veronderstellen, omdat je dan maar 1 parameter hoeft te schatten, je houdt dan meer ruimte over in het model voor het schatten van andere effecten. Die ene parameter staat voor het extra risico per jaar en je veronderstelt dan dat het effect van een jaar extra niet afhangt van de startleeftijd. Bijv leeftijd 21 t.o.v. leeftijd 20 geeft dan evenveel 'extra risico' als leeftijd 76 t.o.v. leeftijd 75. Om te checken of die aanname redelijk is om te maken in jouw data, zou je de data eerst een keer ingedeeld in (4, eventueel meer, je moet wel een redelijk aantal personen per categorie overhouden) categorieën te analyseren. Je kunt dan kijken of de risicoschatting inderdaad mooi 'linear' oploopt. Bijv:
categorie OR 20-30 ref 30-40 1.10 40-50 1.21 50-60 1.46
loopt prachtig linear op (iedere 10 jaar verder wordt de OR vermenigvuldigd met 1.1), terwijl een uitslag als
categorie OR 20-30 ref 30-40 1.20 40-50 0.63 50-60 1.01
helemaal niet mooi oploopt: 30-40 geeft meer risico dan 20-30 en 40-50 geeft minder risico dan 20-30. In dit tweede voorbeeld past het meenemen van age als continue voorspeller niet goed.
Moet ik mijn ordinale predictor als categorische variabele meegeven in het logistisch model?
Ik doe momenteel een logistische regressie analyse. Mijn predictoren zijn ordinale variabelen (score 0,1,3 of 5). Moet ik dit in het logistische regressiemodel wel of niet aangeven als categorische variabelen?
Wanneer je de variabele niet als categorische variabele opgeeft, dan wordt er een lineair op- of aflopend effect verondersteld. Dat wil zeggen er wordt 1 odds ratio geschat die aangeeft hoeveel extra kans op de uitkomst 1 punt toename op de score geeft. Een score op de predictor van 3 versus een score van 1 geeft dan evenveel extra kans op de uitkomst als een score op de predictor van 5 versus 3. Een score van 1 versus 0 geeft de helft van die extra kans (alles gemeten op de logodds schaal). Wanneer je de predictor wel als categorisch opgeeft, dan worden er 3 odds ratios geschat. Het model kan dan vrij allerlei effecten schatten. Er kan dan bijvoorbeeld ook uitkomen dat categorie 0 en 5 een hoge kans op de uitkomst geven en categorie 1 en 3 een lage. De richting van het effect hoeft dan dus niet mooi op- of aflopend te zijn. Het meegeven als categorische legt minder restricties op en is daarom aan te raden. Wel zijn er voor het schatten van al die losse effecten meer parameters nodig (3 ipv 1), wat zou kunnen leiden tot minder efficiënte schattingen (minder power). Een advies zou kunnen zijn om eerst de resultaten met gebruik van een categorische predictor te bekijken. Indien de gevonden odds ratios mooi op- of aflopen, dan kun je overwegen de predictor alsnog als numerieke mee te geven, mits dit ook overeen stemt met jouw hypothese.
Wat betekenen de regressiecoëfficiënten in een logistisch model?
Ik onderzoek de invloed van leeftijd van de patiënt op het wel/ niet uitvoeren van een onderzoek. afhankelijke = onderzoek ja/nee dichotoom) onafhankelijke = leeftijd (numeriek) Hier heb ik logistische regressie gebruikt, wat er eerst erg interessant uitzag: Exp(B) is 0.951. Ik dacht dat je per toename van levensjaar 5% minder kans had om onderzoek te krijgen. Maar later zag ik dat zowel de a (-0.05) als de b (-0.0556) negatief waren. Nu kan ik het niet meer interpreteren, dat zou betekenen dat voor iedere leeftijd de kans op het krijgen van het onderzoek kleiner dan 0 is? Heb ik iets over het hoofd gezien?
De eerste interpretatie is de juiste. OR van 0.951 zegt inderdaad dat met ieder levensjaar de kans (eigenlijk de odds) op onderzoek krijgen met ~5% afneemt. De a is meestal niet van belang. Die geeft binnen het model de intercept weer (dus de verwachte waarde bij een leeftijd van 0). De a staat op de logit schaal genoteerd. De proportie behorend bij een a van -0.05 kan als volgt hieruit berekend worden:
Je ziet dus dat er voor kinderen met leeftijd 0 een proportie van 0.49 onderzoek ja geschat wordt. Vaak is een patiënt met de covariabele waarde 0 niet aanwezig binnen de studiepopulatie en heeft deze intercept minder betekenis, maar het is wel goed om te kijken of deze waarde redelijk lijkt.
De b staat ook genoteerd in de logit context. Een negatieve b betekent dat de kans op onderzoek afneemt bij toenemende leeftijd. De b is direct gekoppeld aan de OR.
Let er dus op dat de regressiecoëfficiënten (a en b) niet op dezelfde manier geïnterpreteerd kunnen worden als bij lineaire regressie.
Kan ik adjusted proporties krijgen uit mijn logistisch model?
Bij de follow-up-evaluatie van de uitkomsten van een RCT (interventie versus usual care) willen we tevens een analyse doen waarbij we corrigeren voor baselineverschillen. Voor een dichotome variabele (wel of niet neurologisch afwijkend) hebben we univariaat een crosstab gemaakt, met een chi-kwadraattoets. Vervolgens hebben we dit met een logregressie gedaan en daarna een multivariate logregressie met de covariaten erin. De vraag is nu, hoe presenteren we de data? Normaal gesproken zouden we de frequenties geven (24% versus 14% afwijkend), maar uit de logregressie komt een odds ratio. Is het dan logischer om twee keer een odds ratio te presenteren? Dus van het univariate en multivariate logmodel? Of kunnen we ook vergelijkbaar met adjusted means uit een ANCOVA een adjusted frequentie krijgen? En zo ja, hoe dan.
Meestal worden inderdaad univariable en multivariable odds ratios gepresenteerd. Je kunt echter ook geadjusteerde proporties berekenen. Het is daarvoor gebruikelijk om de voorspelde frequenties te berekenen voor een patiënt die voor alle corrigeerde variabelen de gemiddelde waarde heeft. Met behulp van de formule van de logistische regressie waarbij je voor de corrigerende variabelen de gemiddelde waarde invult en voor de variabele van interesse (interventie versus usual care) een keer een 0 en een keer een 1. Als het model bijvoorbeeld is:
- ln(odds_neurologische afwijking) = intercept + B1 * interventie + B2 * age_at_baseline,
en de gemiddelde leeftijd op baseline van alle patiënten was 63, dan geldt voor de 'usual care groep':
- ln(odds_neurologische afwijking}) = intercept + B2 * 63,
en voor de interventiegroep:
- ln(odds_neurologische afwijking) = intercept + B1 * 1 + B2 * 63.
De intercept, B1 en B2 lees je af uit de coëfficiëntentabel van de logistische regressie.
De zo gevonden 'log odds'-getallen kun je terugrekenen naar proporties, want ln(odds) = ln(P/1-P).
Dus als je uit de 'log odds' weer de P terug wilt vinden, dan kun je (door de inverse transformatie erop los te laten, hier staat dat uitgewerkt) gebruiken:
- P = exp(ln(odds))/(1+exp(ln(odds))), waarbij exp staat voor 'e tot de macht'.
De P is 'kans op het event', maar kan ook geïnterpreteerd worden als (voorspelde) proportie events. De voorspelde proportie events in de twee groepen voor patiënten met alle andere covariaten op hun gemiddelde is een goede weergave van het 'geadjusteerde' effect.
Mijn logistische regressie lukt niet vanwege een 0 in mijn 2x2 tabel, wat nu?
Ik heb een binaire uitkomstmaat (wel of geen detectie) waarvoor ik met logistische regressie aan de gang ben gegaan. Nu kom ik echter bij een voorspellende factor (ook binair) waarbij ik in de war raak. Ik heb een 2x2 tabel gemaakt om een odds ratio te berekenen (ter controle omdat de logistische regressie niet werkt), maar kom dan niet verder.
Wel detectie Geen detectie Totaal Factor aanwezig 17 3 20 Factor afwezig 7 0 7 Totaal 24 3 27
Het probleem is dus die 0. Hoe kan ik hiervoor alsnog een logistische regressie uitvoeren?
Het berekenen van een odds ratio lukt niet vanwege de 0. De odds ratio op geen detectie is hier (3/17)/(0/7) = oneindig (delen door nul is flauwekul). Indien je alleen een univariabele analyse doet (wat met deze aantallen het hoogst haalbare lijkt), is een simpele truc voor het alsnog berekenen van odds ratio het optellen van 0.5 in ieder van de 4 cellen. Je krijgt dan (3.5/17.5)/(0.5/7.5) = 3. Voor het berekenen van een bijbehorende p-waarde zou je bijvoorbeeld een Fisher's exact toets kunnen gebruiken.
Er bestaan ook statistisch meer geavanceerdere oplossingen hiervoor. Deze zijn vooral handig als je een multivariabele analyse wilt doen waarin ook deze factor moet worden opgenomen. Je kunt dan gebruik maken van zogeheten 'penalized-likelihood logistic regression'. Daarbij wordt tijdens het schatten ervoor gezorgd dat de OR 'eindig' blijft door een 'penalty' te geven aan grote ORs. Dergelijke methoden zijn nog niet in SPSS geïmplementeerd. Wel in bijvoorbeeld de logistf package van R. In jouw geval zou een univariabele penalized regression uitkomen op een OR van 3.000008.
Ik krijg een hele grote odds ratio uit mijn logistische regressie, wat kan er mis zijn?
Ik heb een enkelvoudige logistische regressie analyse uitgevoerd met als uitkomstmaat prognose (niet-ernstig n=26 of ernstig n=14) en de variabele is een continue maat. Uitkomst:: B 9.970, SE 5.722, Wald 3.035, df1, Sign 0.081, Exp(B) 21371.871, 95%CI 0.288 to 1587561235. Ik begrijp echter niet hoe de OR zo ontzettend hoog kan zijn en op internet lees ik dat dit ook vaak een bias betreft. Kunt u mij echter uitleggen om wat voor bias het dan gaat en hoe ik deze resultaten kan interpreteren? Mag ik deze analyse nu wel gebruiken?
Het eerste wat ik in zo'n geval zou controleren is de orde grootte van de continue voorspeller. Welke waarden kan deze voorspeller aannemen? Als dit iets is dat in kleine eenheden uitgedrukt wordt (bijvoorbeeld 0.0012 oid), dan kan dat leiden tot dergelijke grote odds ratio's. Het is voor de interpretatie van de OR handig om de continue voorspeller uit te drukken in getallen binnen een normale range, bijvoorbeeld tussen 0 en 100. Om dit te bewerkstelligen kun je de metingen uitdrukken in bijvoorbeeld 'promille (=duizendsten). Dit kun je doen door alle waarden van de voorspeller te vermenigvuldigen met 1000. De voorbeeldwaarde van 0.0012 wordt dan 1.2. De interpretatie van de OR wordt dan 'hoeveel neemt de odds op het event toe als de voorspeller 1 duizendste toeneemt'. Iets soortgelijks kan natuurlijk ook met andere schalingsfactoren zoals 10^4 (0.0012 wordt dan 12) of 10^5 (0.0012 wordt dan 120) etc.
Ook raad ik je aan te kijken naar de verdeling van de voorspeller. Er is strikt gezien geen normale verdeling voor de voorspeller nodig. Maar er wordt in het logistische model wel de aanname gemaakt dat 1 unit toename op de voorspeller correspondeert met een vaste toename van (log) odds op het event (lineaire relatie tussen voorspeller en log odds). Als de voorspeller zeer scheef verdeeld is, is deze lineariteitsaanname waarschijnlijk niet plausibel. Een transformatie van de voorspeller kan zorgen voor een meer symmetrisch verdeelde voorspeller die mogelijk beter past bij de aanname.
Ik wil een logistische regressie doen op een dataset met gematchte patiënten, hoe doe ik dat in SPSS?
Wanneer de data bestaat uit gematchte paren, bijvoorbeeld cases en controles gematched op leeftijd en geslacht, is een gewone logistische regressie niet voldoende. Om op goede manier met de gepaardheid van de data rekening te houden is een conditionele logistische regressie nodig. SPSS bevat hier geen directe functie voor, maar de analyse kan wel met een truc via de Cox procedure gedaan worden. Dit Youtube-filmpje van Robin Beaumont legt het zeer duidelijk uit.
Het effect van een scheef verdeelde voorspeller is anders in een logistisch model dan in een Mann-Whitney-test, wat nu?
Ik wil graag een multivariabele logistische regressie doen voor de uitkomst postoperatieve complicaties ja/ nee. Eén van de variabelen is 'aantal dagen opgenomen in ziekenhuis vóór operatie'. Uit de literatuur is bekend dat als patiënten langer opgenomen liggen, dat ze het dan vaak slechter doen postoperatief. Deze variabele is continu, maar scheef verdeeld. Eerst keek ik univariabel - nu had ik eerst een Mann-Whitney U toets gedaan om te zien of er een verschil was tussen de groep met en de groep zonder complicaties; hieruit kwam P=0.019. Vervolgens deed ik in SPSS een univariable analyse via de logistische regressie knoppen en toen kreeg ik ineens een P=0.275. Vaak verschilt de P dan wel iets, maar nu wel heel veel vind ik. Is het omdat de variabele skewed is, en de logistische regressie hier geen rekening mee houdt?
De verschillen tussen beide analyses zouden inderdaad veroorzaakt kunnen worden door de scheefheid van de variabele. In de logistische regressie wordt aangenomen dat iedere 1 dag extra ligduur een vaste toename in risico (op de log odds schaal) op postoperiatieve complicaties geeft. In de Mann-Whitney-analyse wordt dit niet gedaan en is enkel de aanname dat degenen met complicaties een gemiddeld hoger ranknummer hebben wanneer alle opnameduren van laag naar hoog gerankt worden.
Om te controleren of de 'iedere dag is evenveel extra risico'-aanname in het logistisch model inderdaad het verschil tussen beide analyses verklaart, zou je het volgende kunnen doen: maak een nieuwe variabele aan die de ranknummers van de opnameduur bevat (zie bijvoorbeeld deze instructie). Geef deze rank-variabele mee aan een logistische regressie. Wanneer deze 'rank-regressie' wel overeenkomt in conclusie met de Mann-Whitney, dan is dat aanleiding te denken dat de 'iedere dag is evenveel extra risico' aanname niet klopt. Let op, deze analyse is alleen ter controle, het is niet zaligmakend omdat de resulterende OR een 'extra risico per ranknummer' geeft en dergelijke informatie is niet te generaliseren naar andere populaties / patiënten. Je zou - indien je toch graag een multivariabele logistische regressie doet - een transformatie van de ligdag variabele kunnen overwegen. Bijv. een log-transformatie. Kijk of je met die log transformatie beter passende informatie krijgt.
Komt univariabele logistische regressie overeen met een Chi-kwadraat toets?
Op zoek naar risicofactoren voor het ontstaan van PSC wil ik de frequentie van het optreden van een risicofactor (roken) in de PSC groep vergelijken met de controle groep, en vervolgens corrigeren voor mogelijke interacterende variabelen door middel van multivariabele logistische regressie analyse. In eerste instantie had ik voor de analyse naar risicofactoren een Chi-kwadraat toets gedaan. Maar aangezien je met een univariabele logistische regressie in principe hetzelfde test, en ik verder ga met een mutivariabel model, heb ik besloten in plaatst van chi2 een univariabele logistische regressie te doen. Echter als ik uitkomsten van beide toetsen met elkaar vergelijk, valt op dat de OR en 95 CI gelijk zijn, maar dat de p-waarde verschilt tussen beide testen. Hoe valt dit te verklaren?
De 'precieze' overeenstemming tussen de twee procedures zit 'm in de toets die in de SPSS Crosstabs output vermeld wordt onder 'likelihood ratio' en de toets die in de logistische regressie output vermeld wordt in de tabel 'omnibus tests of model coefficients'. De p-waardes die we doorgaans gebruiken uit deze twee procedures zijn bij de crosstabs de 'Pearson chi-square' en bij de logistische regressie de Wald test uit de 'variables in the equation' tabel. Deze twee kunnen iets van elkaar verschillen omdat ze op verschillende formules gebaseerd zijn. De verschillen zouden echter zeer klein moeten zijn. Indien er grote verschillen zijn, dan er zowiso reden om nader te bekijken of de model/toets aannames wel kloppen en wat de beste analyse zou zijn. Je kunt bij voldoende kleine verschillen (zeg als de p-waardes afgerond op 2 decimalen gelijk zijn) zelf een keuze maken in welke toets je gebruikt. Indien er multivariabele analyse gepland is, verhoogt het de consistentie als ook de univariabele analyse binnen het regressie framework afgelezen wordt. Dit geldt uiteraard voor categorische (nominale) voorspellers, voor numerieke voorspellers gaat de Chi-kwadraat toets toets niet op.
Waar vind ik logistische regressie in SPSS?
Je vindt deze techniek in SPSS onder Analyze -> Regression -> Binary Logistic.
Hoeveel variabelen mag ik meegeven aan mijn model?
Ik wil graag een multivariabele logistische analyse doen voor de risicofactoren voor obesitas binnen een patiëntengroep. Hoeveel variabelen (risicofactoren) mag ik testen op 893 patiënten?
Een vuistregel is dat bij logistische regressie het aantal parameters in een multivariabel model maximaal 5% tot 10% mag zijn van het minimum van het aantal mensen met en zonder obesitas (event) in je sample. Dus als je 300 patiënten met en 593 zonder obesitas hebt, mag je bij deze vuistregel max 15 tot 30 parameters in je model opnemen. Ik spreek hier over parameters, niet over variabelen, omdat bijv. een categorische variabele met 3 categorieën 2 extra parameters in je model geeft. Bij logistische regressie heb je per parameter dus minimaal 10, maar het liefst ten minste 20 of 30, 'events' nodig. Bij minder 'events' kunnen de schattingen van de parameters misleidend zijn door. Hierbij tel je het uitkomst dat het minst vaak voorkomt als event. Stel je hebt een onderzoek waarbij 285 van de 300 patiënten overlijdt en 15 niet. Dan zijn er 15 'events'. [1] Zie ook de pagina over power op deze wiki: poweranalyse bij een predictiemodel
Aanvullende bronnen
- Course material on logistic regression from the web based distance learning course - Regression Models as a Tool in Medical Research - International School of Quantitative Research, University of Freiburg.
- Course material on the use of categorical predictors (in logistic regression) from the web based distance learning course - Regression Models as a Tool in Medical Research - International School of Quantitative Research, University of Freiburg.
Terug naar OVERZICHT voor een overzicht van alle statistische onderwerpen op deze wiki.
Terug naar KEUZE TOETS voor hulp bij het uitzoeken van een geschikte toets of analyse.