Obliczanie przedziału prognozy

9

Mam następujące dane znajdujące się tutaj . Próbuję obliczyć 95% przedział ufności dla średniej czystości, gdy procent węglowodorów wynosi 1,0. W R wpisuję następujące.

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

Jak mogę jednak samodzielnie uzyskać ten wynik? Próbowałem użyć następującego równania.

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

I wpisuję w 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

Moje wyniki różnią się od funkcji przewidywania R. Co ja mylę się co do przedziałów prognoz?

idealistikz
źródło
Jak obliczasz MSE w swoim kodzie?
Dodałem obliczenia do postu.
idealistikz
1
zgodnie z sugestią MMJ powinieneś spróbowaćpredict(purity.lm, newdata=list(hydro=1.0), interval="prediction", level=.95)
vinux

Odpowiedzi:

16

Twój predict.lmkod oblicza przedziały ufności dla dopasowanych wartości. Twoje obliczenia ręczne obliczają przedziały prognoz dla nowych danych. Jeśli chcesz uzyskać ten sam wynik z predict.lmobliczeń ręki, zmień interval="confidence"na interval="prediction"

MMJ
źródło
1

Dobra odpowiedź od dpel. Dodałbym, że różnicę między przedziałem ufności a przedziałem prognozy można określić jak poniżej:

Przedział ufności

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

Interwał przewidywania

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

Źródło Patrz slajd strona 5/17 i 11/17

lklklk
źródło