偵測收斂
上一題你已經很棒地在各個變數上反覆迭代!但到底需要做多少次迭代呢?當新一輪迭代後插補的數值不再改變時,就可以停止了。
你現在要擴充程式碼,計算連續兩次迭代之間插補變數的差異。為此,你會使用「平均絕對百分比變化」函式,已為你定義如下:
mapc <- function(a, b) {
mean(abs(b - a) / a, na.rm = TRUE)
}
mapc() 會輸出單一數值,用來表示 b 與 a 的差異程度。你將用它來檢查每次迭代中插補變數改變了多少。根據這些結果,你就能決定需要多少次迭代!
布林遮罩 missing_air_temp 與 missing_humidity 已經為你準備好,另外也提供了以 hotdeck 初始化的 tao_imp 資料。
本練習屬於課程
在 R 中以插補處理遺漏值
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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)
}