Phát hiện hội tụ
Bạn đã lặp qua các biến rất tốt ở bài trước! Nhưng cần bao nhiêu vòng lặp? Khi các giá trị bù không còn thay đổi ở vòng lặp mới, bạn có thể dừng lại.
Giờ bạn sẽ mở rộng mã để tính độ khác biệt giữa các biến đã bù ở các vòng lặp liên tiếp. Để làm điều này, bạn sẽ dùng hàm Mean Absolute Percentage Change, đã được định nghĩa sẵn như sau:
mapc <- function(a, b) {
mean(abs(b - a) / a, na.rm = TRUE)
}
mapc() trả về một số duy nhất cho biết b khác a bao nhiêu. Bạn sẽ dùng nó để kiểm tra mức độ thay đổi của các biến đã bù qua các vòng lặp. Dựa trên đó, bạn sẽ quyết định cần bao nhiêu vòng lặp!
Các mặt nạ boolean missing_air_temp và missing_humidity đã có sẵn cho bạn, cũng như tao_imp được khởi tạo bằng hotdeck.
Bài tập này là một phần của khóa học
Xử lý dữ liệu khuyết bằng Imputation trong R
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)
}