如何计算测试数据集中R的残差标准误?

时间:2015-04-19 02:53:42

标签: r linear-regression

我已将Boston数据集拆分为训练和测试集,如下所示:

  library(MASS)
  smp_size <- floor(.7 * nrow(Boston))
  set.seed(133)
  train_boston <- sample(seq_len(nrow(Boston)), size = smp_size)
  train_ind <- sample(seq_len(nrow(Boston)), size = smp_size)
  train_boston <- Boston[train_ind, ]
  test_boston <- Boston[-train_ind,]
  nrow(train_boston)
  # [1] 354
  nrow(test_boston)
  # [1] 152

现在我使用lm函数获取RSE,如下所示:

  train_boston.lm <- lm(lstat~medv, train_boston)
  summary(train_boston.lm)
  summary(train_boston.lm)$sigma

如何计算测试数据集的残差标准误差?我不能在测试数据集上使用lm函数。有没有方法可以在测试数据集上计算RSE?

1 个答案:

答案 0 :(得分:2)

此处您的残差标准误差与

相同
summary(train_boston.lm)$sigma
# [1] 4.73988

sqrt(sum((fitted(train_boston.lm)-train_boston$lstat)^2)/
    (nrow(train_boston)-2))
# [1] 4.73988

你松了估计两个参数,所以你的自由度是n-2

使用您的测试数据,您实际上并没有进行相同的估算,但是如果您想计算相同类型的计算,则将模型中的预测值替换为原始模型中拟合值的新数据,你可以做到

sqrt(sum((predict(train_boston.lm, test_boston)-test_boston$lstat)^2)/
    (nrow(test_boston)-2))

虽然计算预测残差的标准差可能更有意义

sd(predict(train_boston.lm, test_boston)-test_boston$lstat)