Convergentie detecteren
Goed gedaan met het itereren over de variabelen in de vorige oefening! Maar hoeveel iteraties heb je nodig? Als de geïmputeerde waarden niet meer veranderen bij een nieuwe iteratie, kun je stoppen.
Je breidt nu je code uit om de verschillen te berekenen tussen de geïmputeerde variabelen in opeenvolgende iteraties. Hiervoor gebruik je de Mean Absolute Percentage Change-functie, die voor je is gedefinieerd als volgt:
mapc <- function(a, b) {
mean(abs(b - a) / a, na.rm = TRUE)
}
mapc() geeft één getal terug dat aangeeft hoeveel b afwijkt van a. Je gebruikt dit om te controleren hoeveel de geïmputeerde variabelen per iteratie veranderen. Op basis daarvan bepaal je hoeveel iteraties nodig zijn!
De booleaanse maskers missing_air_temp en missing_humidity zijn beschikbaar, net als de hotdeck-geïnitialiseerde gegevensset tao_imp.
Deze oefening maakt deel uit van de cursus
Omgaan met missende data met imputaties in R
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
diff_air_temp <- ___
diff_humidity <- ___
for (i in 1:5) {
# Assign the outcome of the previous iteration (or initialization) to prev_iter
prev_iter <- ___
# Impute air_temp and humidity at originally missing locations
tao_imp$air_temp[missing_air_temp] <- NA
tao_imp <- impute_lm(tao_imp, air_temp ~ year + latitude + sea_surface_temp + humidity)
tao_imp$humidity[missing_humidity] <- NA
tao_imp <- impute_lm(tao_imp, humidity ~ year + latitude + sea_surface_temp + air_temp)
}