Detektera konvergens
Bra jobbat med att iterera över variablerna i förra övningen! Men hur många iterationer behövs egentligen? När de imputerade värdena slutar förändras mellan iterationerna kan vi stanna.
Nu ska du bygga vidare på din kod för att beräkna skillnaderna mellan de imputerade variablerna i efterföljande iterationer. Du använder funktionen Mean Absolute Percentage Change, som redan är definierad åt dig:
mapc <- function(a, b) {
mean(abs(b - a) / a, na.rm = TRUE)
}
mapc() returnerar ett enskilt tal som anger hur mycket b skiljer sig från a. Du använder den för att kontrollera hur mycket de imputerade variablerna förändras mellan iterationer – och utifrån det avgöra hur många iterationer som faktiskt behövs!
De booleska maskerna missing_air_temp och missing_humidity finns tillgängliga, liksom den hotdeck-initierade datamängden tao_imp.
Den här övningen är en del av kursen
Hantering av saknade värden med imputering i R
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)
}