Inicializace chybějících hodnot a iterace přes proměnné
Jak ses právě přesvědčil/a, funkce impute_lm() nemusí vždy doplnit všechny chybějící hodnoty. Aby se imputovaly skutečně všechny, je dobré nejprve inicializovat chybějící hodnoty jednoduchou metodou – například hot-deck imputací z předchozí kapitoly, která jednoduše přenáší poslední pozorovanou hodnotu dopředu.
Navíc jedna imputace obvykle nestačí. Vychází totiž jen ze základních inicializovaných hodnot a může být zkreslená. Správný přístup je iterovat přes jednotlivé proměnné a imputovat je jednu po druhé pouze na těch místech, kde původně chyběly.
V tomto cvičení nejprve inicializuješ chybějící hodnoty pomocí hot-deck imputace a pak pětkrát projdeš cyklem přes proměnné air_temp a humidity z dat tao a imputuješ je pomocí lineární regrese. Pojďme na to!
Toto cvičení je součástí kurzu
Práce s chybějícími daty pomocí imputace v R
Pokyny k cvičení
- Inicializuj chybějící hodnoty pomocí imputace
hotdeck(). - Vytvoř booleovskou masku označující místa, kde
humiditypůvodně chybělo, a přiřaď ji do proměnnémissing_humidity. - Uvnitř cyklu for nastav
humidityvtao_impnaNAna místech, kde původně chybělo – použij přitom booleovskou masku, kterou jsi vytvořil/a. - Uvnitř cyklu for imputuj
humidityvtao_imppomocí lineární regrese s prediktoryyear,latitude,sea_surface_tempaair_tempa výsledek znovu přiřaď dotao_imp.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Initialize missing values with hot-deck
tao_imp <- ___(tao)
# Create boolean masks for where air_temp and humidity are missing
missing_air_temp <- tao_imp$air_temp_imp
missing_humidity <- ___
for (i in 1:5) {
# Set air_temp to NA in places where it was originally missing and re-impute it
tao_imp$air_temp[missing_air_temp] <- NA
tao_imp <- impute_lm(tao_imp, air_temp ~ year + latitude + sea_surface_temp + humidity)
# Set humidity to NA in places where it was originally missing and re-impute it
tao_imp$humidity[___] <- ___
tao_imp <- ___(___, ___ ~ year + latitude + sea_surface_temp + ___)
}