我目前正在阅读斯坦福 OpenX 的“统计学习简介”MOOC。在其中一个实验室练习中,它建议通过显式使用从测试数据创建模型矩阵model.matrix()
。
课本摘录
我们现在计算每个模型大小的最佳模型的验证集误差。我们首先从测试数据中制作模型矩阵。
test.mat=model.matrix (Salary∼.,data=Hitters [test ,])
model.matrix() 函数在许多回归包中用于
X
从数据构建矩阵。现在我们运行一个循环,对于每个大小i
,我们从中提取该regfit.best
大小的最佳模型的系数,将它们相乘到测试模型矩阵的适当列中以形成预测,并计算测试 MSE。
val.errors =rep(NA ,19)
for(i in 1:19){
coefi=coef(regfit .best ,id=i)
pred=test.mat [,names(coefi)]%*% coefi
val.errors [i]= mean(( Hitters$Salary[test]-pred)^2)
}
我知道这model.matrix
会将字符串变量转换为具有不同级别的值,并且模型lm()
会在后台进行转换。
但是,我们会明确使用哪些实例,model.matrix()
为什么?