開始使用免費開始

初始化遺漏值與在變數間反覆迭代

如同你剛看到的,執行 impute_lm() 可能不會填補所有遺漏值。為了確保全部補齊,你應先用簡單的方法初始化遺漏值,例如你在前一章學到的 hot-deck 插補,它會把最後一次觀測到的值往後遞推。

此外,單次插補通常不夠。它是以基礎的初始化值為依據,可能產生偏誤。較合適的做法是對各個變數逐一迭代,只在原本遺漏的位置進行插補。

在本練習中,你會先用 hot-deck 插補初始化遺漏值,接著針對 tao 資料裡的 air_temphumidity 進行 5 次迴圈,以線性迴歸來插補它們。開始吧!

本練習屬於課程

在 R 中以插補處理遺漏值

檢視課程

練習說明

  • 使用 hotdeck() 插補來初始化遺漏值。
  • 建立 humidity 原本遺漏位置的布林遮罩,並指定給 missing_humidity
  • 在 for 迴圈內,利用你建立的布林遮罩,將 tao_imp 中對應位置的 humidity 設為 NA(僅在其原本遺漏的地方)。
  • 在 for 迴圈內,使用線性迴歸為 tao_imphumidity 進行插補,並以 yearlatitudesea_surface_tempair_temp 作為預測變數,將結果重新指定回 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 + ___)
}
編輯並執行程式碼