检测收敛
上一题中您已经很好地在各变量间迭代了!但需要迭代多少次呢?当新一轮迭代后插补值不再变化时,就可以停止。
现在请扩展您的代码,计算相邻迭代中各插补变量的差异。为此,您将使用已为您定义好的平均绝对百分比变化(Mean Absolute Percentage Change)函数:
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)
}