从条件分布中抽样
直接对模型调用 predict(),在给定相同自变量时总会返回相同的值。这会导致填补数据的变异性很小。为增大变异性,使填补能复现原始数据的波动,我们可以从条件分布中抽样。也就是说,与其当模型输出的概率大于 0.5 时总是预测为 1,不如根据模型返回的概率,从二项分布中抽取预测值。
您将基于上一个练习中编写的代码继续完成。本行代码已被移除:
preds <- ifelse(preds >= 0.5, 1, 0)
您的任务是在其位置改为从二项分布中抽样。只需一行代码即可!
本练习是课程的一部分
R 中的缺失值填补处理
练习说明
- 通过从二项分布采样来覆盖
preds。 - 将
preds的长度作为第一个参数传入。 - 将 size 设为 1。
- 将
prob设为模型返回的概率。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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 <- is.na(df[imp_var])
# Fit logistic regression mode
logreg_model <- glm(formula, data = df, family = binomial)
# Predict the response
preds <- predict(logreg_model, type = "response")
# Sample the predictions from binomial distribution
preds <- ___(___, size = ___, prob = ___)
# Impute missing values with predictions
df[missing_imp_var, imp_var] <- preds[missing_imp_var]
return(df)
}