始める無料で始める

欠損値の初期化と変数の繰り返し処理

impute_lm() を実行しても、すべての欠損値が補完されるとは限りません。確実にすべての欠損値を補完するには、前の章で学んだホットデック補完のようなシンプルな方法で欠損値を初期化しましょう。ホットデック補完は、直前に観測された値をそのまま引き継ぐ手法です。

また、1回の補完だけでは通常不十分です。初期化された基本的な値をもとにしているため、結果にバイアスが生じる可能性があります。適切なアプローチは、元々欠損していた箇所に対して、変数を1つずつ順番に補完する処理を繰り返すことです。

この演習では、まずホットデック補完で欠損値を初期化し、次に tao データの air_temphumidity に対して線形回帰による補完を5回繰り返します。さっそく始めましょう。

この演習はコースの一部です

R による欠損データの補完処理

コースを見る

演習の手順

  • hotdeck() 補完で欠損値を初期化してください。
  • humidity が元々欠損していた箇所のブールマスクを作成し、missing_humidity に代入してください。
  • forループの中で、作成したブールマスクを使って tao_imphumidity を元々欠損していた箇所で NA に設定してください。
  • forループの中で、yearlatitudesea_surface_tempair_temp を予測変数として線形回帰により tao_imphumidity を補完し、結果を 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 + ___)
}
コードを編集して実行