R中predict.lm预测的标准偏差是否正确?

时间:2017-10-07 17:50:37

标签: r standard-error

通过以下设置,为什么在两种情况下都会得到相同的标准偏差,即:1.396411?

回归:

CopierDataRegression <- lm(V1~V2, data=CopierData1)

间隔:

X6 <- data.frame(V2=6)
predict(CopierDataRegression, X6, se.fit=TRUE, interval="confidence", level=0.90)
predict(CopierDataRegression, X6, se.fit=TRUE, interval="prediction", level=0.90)

两者都为se.fit提供相同的结果。

使用以下代码获得预测的正确标准偏差:

z <- predict(CopierDataRegression, X6, se.fit=TRUE)
sqrt(z$se.fit^2 + z$residual.scale^2),

但是我不明白为什么这个公式中的一个在标准误差的计算中增加了残差标准差,有人可以解释一下吗?

数据:

CopierData1 <- structure(list(V1 = c(20L, 60L, 46L, 41L, 12L, 137L, 68L, 89L, 
          4L, 32L, 144L, 156L, 93L, 36L, 72L, 100L, 105L, 131L, 127L, 57L, 
          66L, 101L, 109L, 74L, 134L, 112L, 18L, 73L, 111L, 96L, 123L, 
          90L, 20L, 28L, 3L, 57L, 86L, 132L, 112L, 27L, 131L, 34L, 27L, 
          61L, 77L), V2 = c(2L, 4L, 3L, 2L, 1L, 10L, 5L, 5L, 1L, 2L, 9L, 
          10L, 6L, 3L, 4L, 8L, 7L, 8L, 10L, 4L, 5L, 7L, 7L, 5L, 9L, 7L, 
          2L, 5L, 7L, 6L, 8L, 5L, 2L, 2L, 1L, 4L, 5L, 9L, 7L, 1L, 9L, 2L, 
          2L, 4L, 5L)), .Names = c("V1", "V2"),
          class = "data.frame", row.names = c(NA, -45L))

1 个答案:

答案 0 :(得分:0)

您必须考虑采样时的估算误差以及进行预测时的噪声项。置信区间仅考虑前者。请参阅答案here

此外,它们不会给边界提供相同的结果:

> predict(CopierDataRegression, X6, 
+         se.fit=TRUE, interval="confidence", level=0.90)$fit
       fit      lwr     upr
1 89.63133 87.28387 91.9788
> predict(CopierDataRegression, X6, 
+         se.fit=TRUE, interval="prediction", level=0.90)$fit
       fit      lwr      upr
1 89.63133 74.46433 104.7983

se.fit仅为您提供预测均值的误差,而不是?predict.lm中记录的误差项的sd:

  预测意味着

se.fit标准错误

     

residual.scale剩余标准偏差