Model, z którym pracujesz, przyjmuje formę
yja= μ + β1x1 i+ β2)x2 i+ ϵja (1)
gdzie jest błędu przyjmowanym z zerowego średniego rozkładu normalnego.ϵja
Dopasowałeś model i uzyskałeś oszacowania: , i . β 1 β 2μ^β^1β^2)
Teraz, jeśli naprawisz wartości zmiennych towarzyszących w ich zakresie, powiedzmy i , prognozowaną wartość można uzyskać obliczając x ⋆ 2 i y ix⋆1 ix⋆2 iyja
y⋆ja= μ^+ β^1x⋆1 i+ β^2)x⋆2 i (2)
Jeśli Twój model idealnie pasuje do danych, prognozowane wartości są wartościami rzeczywistymi. Ale generalnie wartości nie można dokładnie otrzymać jako prostej liniowej kombinacji wartości („ Wszystkie modele są błędne, ale niektóre są przydatne ”). Innymi słowy, wariancja składnika błędu w (1) nie jest ogólnie zerowa. Ale w zasadzie model (1) jest dobrym przybliżeniem, jeśli reszty (lub ich skalowana wersja) są „małe”.x y i - y ⋆ iyxyja- y⋆ja
Edytować
W swoich komentarzach zapytałeś, co predict()
faktycznie robi. Oto prosty przykład ilustrujący.
#generate a simple illustrative data set
> x <- runif(10)
> y <- 5 + 2.7 * x + rnorm(10, mean=0, sd=sqrt(0.15))
>
> #fit the model and store the coefficients
> regLin <- lm(y~x)
> coef <- coef(regLin)
>
> #use the predict() function
> y_star2 <- predict(regLin)
> #use equation (2)
> y_star1 <- coef[1] + coef[2] * x
> #compare
> cbind(y, y_star1, y_star2)
y y_star1 y_star2
1 7.100217 6.813616 6.813616
2 6.186333 5.785473 5.785473
3 7.141016 7.492979 7.492979
4 5.121265 5.282990 5.282990
5 4.681924 4.849776 4.849776
6 6.102339 6.106751 6.106751
7 7.223215 7.156512 7.156512
8 5.158546 5.253380 5.253380
9 7.160201 7.198074 7.198074
10 5.555289 5.490793 5.490793
x1
x2