Aan de slagGa gratis aan de slag

Lineair model en een binaire responsvariabele

In de video zag je een voorbeeld van het fitten van een lineair model op een binaire responsvariabele en hoe dat snel mis kan gaan. Je leerde dat je, gegeven de lineaire lijnfit, geschatte waarden \(\hat{y}\) kunt krijgen die niet logisch zijn voor het probleem, omdat de responsvariabele alleen de waarden 0 en 1 aanneemt.

Met de vooringeladen crab-gegevensset ga je dit effect onderzoeken door y als functie van x te modelleren met het GLM-raamwerk.

Onthoud dat de GLM-modelformulering is:

glm(formula = 'y ~ X', data = my_data, family = sm.families.____).fit()

waarbij je de formula, data en family opgeeft.

Onthoud ook dat een GLM met:

  • de Gaussian-familie een lineair model is (een speciaal geval van GLM's)
  • de Binomial-familie een logistisch regressiemodel is.

Deze oefening maakt deel uit van de cursus

Generalized Linear Models in Python

Cursus bekijken

Oefeninstructies

  • Gebruik de crab-gegevensset en definieer de modelformule zodat y wordt voorspeld door width.
  • Gebruik voor een lineair model met de GLM-formule Gaussian() voor het family-argument; daarbij neem je aan dat y continu en ongeveer normaal verdeeld is.
  • Gebruik voor een logistisch model met de GLM-formule Binomial() voor het family-argument.
  • Fit een model met glm() met de juiste argumenten en gebruik print() en summary() om de samenvattingen van de gefitte modellen te bekijken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Define model formula
formula = '____ ~ ____'

# Define probability distribution for the response variable for 
# the linear (LM) and logistic (GLM) model
family_LM = sm.families.____
family_GLM = sm.families.____

# Define and fit a linear regression model
model_LM = glm(formula = ____, data = ____, family = ____).fit()
print(____.____)

# Define and fit a logistic regression model
model_GLM = glm(formula = ____, data = ____, family = ____).fit()
print(____.____)
Code bewerken en uitvoeren