我目前正在阅读统计学习简介' MOOC by Stanford OpenX。在其中一个实验练习中,它建议通过明确使用model.matrix()
从测试数据创建模型矩阵。
从教科书中提取
我们现在计算每个模型大小的最佳模型的验证集错误。我们首先根据测试数据制作模型矩阵。
test.mat=model.matrix (Salary∼.,data=Hitters [test ,])
model.matrix()函数用于许多回归包中 从数据构建
X
矩阵。现在我们运行一个循环,对于每个大小i
,我们 从regfit.best
中提取系数以获得最佳模型 size,将它们乘以测试模型的相应列 矩阵形成预测,并计算测试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()
的实例是什么?为什么?