初始化缺失值与按变量迭代
正如您刚刚看到的,运行 impute_lm() 可能无法填充所有缺失值。为确保全部填补,您应先用一种简单方法进行初始化,例如上一章介绍的热平台(hot-deck)插补,它会将最近一次观测到的值向前填充。
此外,单次插补通常不够。它基于初始的简单值,可能带来偏倚。更合适的做法是按变量迭代,在那些最初缺失的位置逐个变量进行插补。
在本练习中,您将先用热平台插补初始化缺失值,然后在 tao 数据中对 air_temp 和 humidity 进行 5 次循环,用线性回归来插补它们。开始吧!
本练习是课程的一部分
R 中的缺失值填补处理
练习说明
- 使用
hotdeck()插补来初始化缺失值。 - 为最初缺失的
humidity创建一个布尔掩码,并将其赋给missing_humidity。 - 在 for 循环中,利用您创建的布尔掩码,将
tao_imp中对应位置的humidity设为NA。 - 在 for 循环中,使用线性回归为
tao_imp的humidity进行插补,使用year、latitude、sea_surface_temp和air_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 + ___)
}