计算预测区间

机器算法验证 r 回归 置信区间 预测区间
2022-03-08 08:52:39

我有以下数据位于此处当碳氢化合物百分比为 1.0 时,我试图计算平均纯度的 95% 置信区间。在 R 中,我输入以下内容。

> predict(purity.lm, newdata=list(hydro=1.0), interval="confidence", level=.95)
   fit      lwr      upr
1 89.66431 87.51017 91.81845

但是,我自己如何得出这个结果?我尝试使用以下等式。

snew=s2(1+1N+(xnewx¯)2(xix¯)2)

我在 R 中输入以下内容。

> SSE_line = sum((purity - (77.863 + 11.801*hydro))^2)
> MSE = SSE_line/18
> t.quantiles <- qt(c(.025, .975), 18)
> prediction = B0 + B1*1
> SE_predict = sqrt(MSE)*sqrt(1+1/20+(mean(hydro)-1)^2/sum((hydro - mean(hydro))^2))
> prediction + SE_predict*t.quantiles
[1] 81.80716 97.52146

我的结果与 R 的预测函数不同。我对预测间隔有什么误解?

2个回答

您的predict.lm代码正在计算拟合值的置信区间。您的手工计算正在计算新数据的预测区间。如果您想predict.lm从手动计算中获得相同的结果,请更改 interval="confidence"interval="prediction"

dpel的好答案。我要补充一点,置信区间和预测区间之间的差异可以如下所述:

置信区间

snew=s2(1N+(xnewx¯)2(xix¯)2)

预测区间

snew=s2(1+1N+(xnewx¯)2(xix¯)2)

来源见幻灯片页 5/17 和 11/17