Hoofdstuk 23 Logistische Regressie

23.1 Intro

Logistische regressieanalyse kan handig zijn om een model te maken dat een dichotome uitkomstvariabele heeft (ook wel binaire variabele genoemd). Deze dichotome uitkomst kan worden voorspeld aan de hand van één of meer predictorvariabelen.

23.1.1 Voorbeeld data

In dit voorbeeld wordt de schoolsucces dataset gebruikt. De afhankelijke variabele is de dichotome variabele uitslag, met de waarden “gezakt” of “geslaagd”. Deze variabele wordt onder andere voorspeld door intelligentie (IQ) en het inkomen van de ouders (drie categorieen).

23.2 jamovi

Klik op het tabblad “Analyse” op de knop “Regressie” en selecteer in het gedeelte “Logistieke regressie” in het menu dat verschijnt “2 resultaten (binomiaal)”. Selecteer in het vak aan de linkerkant de afhankelijke variabele en verplaats deze naar het vak met het label “Afhankelijke variabele” met behulp van de knop met het naar rechts wijzende pijltje. Selecteer in het vak aan de linkerkant alle numerieke voorspellers en verplaats ze naar het vak met het label “Covariaten” met behulp van de knop met het naar rechts wijzende pijltje. Als er categorische voorspellers zijn, verplaats ze dan naar het vak met het label “Factoren”. De resultaten worden direct getoond in het rechter “Resultaten” paneel. Je kunt naar beneden scrollen om aanvullende analyses op te geven, bijvoorbeeld om meer details over de regressiecoëfficiënten op te vragen kun je de sectie “Modelcoëfficiënten” openen. Als je bijvoorbeeld de odds-ratio’s en hun betrouwbaarheidsintervallen wilt ordenen, vink je de bijbehorende selectievakjes aan.

Hieronder zie je hoe deze resultaten tot stand zijn gekomen in de syntax.

jmv::logRegBin(
    data = data,
    dep = uitslag,
    covs = IQ,
    factors = inkomen,
    blocks = list(
        list(
            "IQ",
            "inkomen")),
    refLevels = list(
        list(
            var="uitslag",
            ref="1"),
        list(
            var="inkomen",
            ref="laag")))

Voor het toevoegen van aanvullende analyses kun je simpelweg extra regels toevoegen aan de syntax. Zie hieronder een voorbeeld van dezelfde logistische regressie, maar dan met odds-ratio’s, betrouwbaarheidsintervallen, en een classificatietabel.

jmv::logRegBin(
    data = data,
    dep = uitslag,
    covs = IQ,
    factors = inkomen,
    blocks = list(
        list(
            "IQ",
            "inkomen")),
    refLevels = list(
        list(
            var="uitslag",
            ref="1"),
        list(
            var="inkomen",
            ref="laag")),
    ci = TRUE,
    OR = TRUE,
    class = TRUE,
    duplicate = 10)

23.3 R

In basis R, de glm (generalized linear model) functie kan worden aangeroepen met het argument family = binomial(link = "logit") om een logistische regressie uit te voeren. De summary functie toont de resultaten.

result <-
  glm(uitslag ~ IQ + inkomen,
    data = schoolsucces,
    family = binomial(link = "logit"))
    
summary(result);

In het rosetta package, the logRegr functie gebruikt base R’s glm functie om de output te presenteren gelijkend op SPSS. Met meerdere predictoren, gebruik collinearity=TRUE, om collinearity diagnostics te bekijken. Als er maar één voorspeller is, kun je een visualisatie van de ruwe data, de (binned) gemiddelden en de logistieke curve opvragen door gebruik te maken van plot=TRUE.

rosetta::logRegr(uitslag ~ IQ + inkomen,
  data = schoolsucces,
  plot = TRUE)

23.4 SPSS

In SPSS, wordt het LOGISTIC REGRESSION commando gebruikt. Omdat inkomen een categorische variabele is, moet dat apart worden aangegeven. Dit hoeft dus niet in een analyse met alleen maar intervalvariabelen.

LOGISTIC REGRESSION VARIABLES uitslag
  /METHOD=ENTER IQ inkomen
  /CONTRAST (inkomen)=Indicator
  /CRITERIA=PIN(.05) POUT(.10) ITERATE(20) CUT(.5).

Ook hier kunnen aan de syntax extra commando’s worden toegevoegd, zoals betrouwbaarheidsintervallen voor de odds ratio’s en classificatieplots.

LOGISTIC REGRESSION VARIABLES uitslag
  /METHOD=ENTER IQ inkomen
  /CONTRAST (inkomen)=Indicator
  /CLASSPLOT
  /PRINT=CI(95)
  /CRITERIA=PIN(.05) POUT(.10) ITERATE(20) CUT(.5).