Aan de slagGa gratis aan de slag

Trekken uit een conditionele verdeling

Alleen predict() aanroepen op een model geeft altijd dezelfde waarde voor dezelfde waarden van de voorspellers. Dat zorgt voor weinig variatie in geimputeerde data. Om die te vergroten, zodat de imputatie de variabiliteit van de originele data nabootst, kunnen we trekken uit de conditionele verdeling. Dat betekent dat we, in plaats van altijd 1 te voorspellen zodra het model een kans groter dan 0.5 geeft, de voorspelling trekken uit een binomiale verdeling die wordt beschreven door de door het model geretourneerde kans.

Je werkt verder op de code die je in de vorige oefening hebt geschreven. De volgende regel is verwijderd:

  preds <- ifelse(preds >= 0.5, 1, 0)

Jouw taak is om deze te vervangen door een trekking uit een binomiale verdeling. Dat is maar één regel code!

Deze oefening maakt deel uit van de cursus

Omgaan met missende data met imputaties in R

Cursus bekijken

Oefeninstructies

  • Overschrijf preds door te sampelen uit een binomiale verdeling.
  • Geef de lengte van preds door als eerste argument.
  • Zet size op 1.
  • Zet prob op de door het model geretourneerde kansen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

 impute_logreg <- function(df, formula) {
  # Extract name of response variable
  imp_var <- as.character(formula[2])
  # Save locations where the response is missing
  missing_imp_var <- is.na(df[imp_var])
  # Fit logistic regression mode
  logreg_model <- glm(formula, data = df, family = binomial)
  # Predict the response
  preds <- predict(logreg_model, type = "response")
  # Sample the predictions from binomial distribution
  preds <- ___(___, size = ___, prob = ___)
  # Impute missing values with predictions
  df[missing_imp_var, imp_var] <- preds[missing_imp_var]
  return(df)
}
Code bewerken en uitvoeren