欠損値の初期化と変数の繰り返し処理
impute_lm() を実行しても、すべての欠損値が補完されるとは限りません。確実にすべての欠損値を補完するには、前の章で学んだホットデック補完のようなシンプルな方法で欠損値を初期化しましょう。ホットデック補完は、直前に観測された値をそのまま引き継ぐ手法です。
また、1回の補完だけでは通常不十分です。初期化された基本的な値をもとにしているため、結果にバイアスが生じる可能性があります。適切なアプローチは、元々欠損していた箇所に対して、変数を1つずつ順番に補完する処理を繰り返すことです。
この演習では、まずホットデック補完で欠損値を初期化し、次に tao データの air_temp と humidity に対して線形回帰による補完を5回繰り返します。さっそく始めましょう。
この演習はコースの一部です
R による欠損データの補完処理
演習の手順
hotdeck()補完で欠損値を初期化してください。humidityが元々欠損していた箇所のブールマスクを作成し、missing_humidityに代入してください。- forループの中で、作成したブールマスクを使って
tao_impのhumidityを元々欠損していた箇所でNAに設定してください。 - forループの中で、
year、latitude、sea_surface_temp、air_tempを予測変数として線形回帰によりtao_impのhumidityを補完し、結果をtao_impに再代入してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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 + ___)
}