计算预测间隔


9

我在这里有以下数据。我正在尝试计算烃百分比为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的预测函数不同。我对预测间隔有什么误解?


您如何在代码中计算MSE?

我将计算结果添加到帖子中。
Idealistikz 2013年

1
正如MMJ建议的那样,您应该尝试predict(purity.lm, newdata=list(hydro=1.0), interval="prediction", level=.95)
vinux

Answers:


16

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


1

来自dpel的好答案。我还要补充说,置信区间和预测区间之间的差异可以这样表示:

置信区间

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

预测间隔

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.