建模交互项 (2)
本练习是课程的一部分
R 中的监督学习:回归
练习说明
- 使用
kWayCrossValidation()(文档)创建 3 折交叉验证的划分计划。- 第 1 个参数是需要划分的行数。
- 第 2 个参数是交叉验证的折数。
- 可以将函数的第 3、4 个参数设为
NULL。
- 查看并运行示例代码,获得无交互项模型的 3 折交叉验证预测,并将其赋给列
pred_add。 - 获得含交互项模型的 3 折交叉验证预测。将预测赋给列
pred_interaction。- 示例代码展示了具体流程。
- 继续使用您已创建的同一个
splitPlan。
- 填空以:
- 用
pivot_longer将多列预测折叠为单列pred。 - 新增一列残差(实际结果 - 预测结果)。
- 计算每种模型类型在交叉验证预测下的 RMSE。
- 用
- 比较 RMSE。基于这些结果,您应该选择哪个模型?
交互式实操练习
通过完成这段示例代码来试试这个练习。
# alcohol is available
summary(alcohol)
# Both the formulae are available
fmla_add
fmla_interaction
# Create the splitting plan for 3-fold cross validation
set.seed(34245) # set the seed for reproducibility
splitPlan <- ___(___(___), ___, ___, ___)
# Sample code: Get cross-val predictions for main-effects only model
alcohol$pred_add <- 0 # initialize the prediction vector
for(i in 1:3) {
split <- splitPlan[[i]]
model_add <- lm(fmla_add, data = alcohol[split$train, ])
alcohol$pred_add[split$app] <- predict(model_add, newdata = alcohol[split$app, ])
}
# Get the cross-val predictions for the model with interactions
alcohol$pred_interaction <- 0 # initialize the prediction vector
for(i ___ ___) {
split <- ___
model_interaction <- lm(___, data = alcohol[split$train, ])
alcohol$___[split$app] <- predict(___, newdata = alcohol[split$app, ])
}
# Get RMSE
alcohol %>%
pivot_longer(cols=c('pred_add', 'pred_interaction'), names_to='modeltype', values_to='pred') %>%
mutate(residuals = ____) %>%
group_by(modeltype) %>%
summarize(rmse = ___(___(___)))