逻辑回归插补
对二元变量进行插补的常见方法是逻辑回归。遗憾的是,没有类似 impute_lm() 的函数可以直接完成这件事。因此,您将亲自编写这样一个函数!
我们把这个函数命名为 impute_logreg()。它的第 1 个参数是数据框 df,其中缺失值已经被初始化,而且只有待插补的那一列仍有缺失值。第 2 个参数是用于逻辑回归模型的 formula。
该函数将执行以下步骤:
- 记录缺失值的位置。
- 构建模型。
- 进行预测。
- 用预测结果替换缺失值。
无需担心创建 imp_var 的那行代码——这只是从公式中提取待插补列名的一种方式。让我们来做一些函数式编程吧!
本练习是课程的一部分
R 中的缺失值填补处理
练习说明
- 为
df[imp_var]中的缺失位置创建布尔掩码,并将其赋值给missing_imp_var。 - 使用传入函数的公式和数据拟合一个逻辑回归模型,注意设置正确的
family以确保拟合的是逻辑回归(无需加引号传入);将模型赋给logreg_model。 - 使用该模型预测响应并赋给
preds;记得设置合适的预测type。 - 使用
preds与missing_imp_var一起对缺失值进行插补。
交互式实操练习
通过完成这段示例代码来试试这个练习。
impute_logreg <- function(df, formula) {
# Extract name of response variable
imp_var <- as.character(formula[2])
# Save locations where the response is missing
missing_imp_var <- ___
# Fit logistic regression mode
logreg_model <- ___(___, data = ___, family = ___)
# Predict the response and convert it to 0s and 1s
preds <- predict(___, type = ___)
preds <- ifelse(preds >= 0.5, 1, 0)
# Impute missing values with predictions
df[missing_imp_var, imp_var] <-___[___]
return(df)
}