R - 根据训练集和测试集中的训练模型计算测试MSE

Use*_*job 5 statistics regression r machine-learning linear-regression

给出两组简单的数据:

 head(training_set)
      x         y
    1 1  2.167512
    2 2  4.684017
    3 3  3.702477
    4 4  9.417312
    5 5  9.424831
    6 6 13.090983

 head(test_set)
      x        y
    1 1 2.068663
    2 2 4.162103
    3 3 5.080583
    4 4 8.366680
    5 5 8.344651
Run Code Online (Sandbox Code Playgroud)

我想在训练数据上拟合线性回归线,并使用该线(或系数)计算测试数据上的残差的"测试MSE"或均方误差.

model = lm(y~x,data=training_set)
train_MSE = mean(model$residuals^2)
test_MSE = ?
Run Code Online (Sandbox Code Playgroud)

李哲源*_*李哲源 7

在这种情况下,将其称为MSPE(均方预测误差)更精确:

mean((test_set$y - predict.lm(model, test_set)) ^ 2)
Run Code Online (Sandbox Code Playgroud)

这是一个更有用的衡量标准,因为所有模型都旨在预测.我们想要一个具有最小MSPE的模型.

实际上,如果我们有备用测试数据集,我们可以直接计算MSPE,如上所述.但是,我们经常没有备用数据.在统计中,留一法交叉验证是来自训练数据集的MSPE估计.

还有其他一些用于评估预测误差的统计数据,如Mallows的统计数据AIC.