IniziaInizia gratis

Modello lineare e variabile risposta binaria

Nel video hai visto un esempio di adattamento di un modello lineare a una variabile risposta binaria e quanto velocemente le cose possano andare storte. Hai imparato che, dato l’adattamento lineare, puoi ottenere i valori stimati \(\hat{y}\), che non sono coerenti con la logica del problema, poiché la variabile risposta assume valori 0 e 1.

Usando l’insieme di dati precaricato crab, studierai questo effetto modellando y in funzione di x usando il framework dei GLM.

Ricorda che la formulazione di un GLM è:

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

dove specifichi formula, data e family.

Ricorda anche che un GLM con:

  • famiglia Gaussiana è un modello lineare (un caso speciale di GLM)
  • famiglia Binomiale è un modello di regressione logistica.

Questo esercizio fa parte del corso

Modelli lineari generalizzati in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Usando il dataset crab, definisci la formula del modello in modo che y sia predetta da width.
  • Per adattare un modello lineare usando la formula GLM, usa Gaussian() per l’argomento family, che assume y continua e approssimativamente distribuita normalmente.
  • Per adattare un modello logistico usando la formula GLM, usa Binomial() per l’argomento family.
  • Adatta un modello usando glm() con gli argomenti appropriati e usa print() e summary() per visualizzare i riepiloghi dei modelli stimati.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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(____.____)
Modifica ed esegui il codice