Jakie są przewidywane wartości zwracane przez funkcję predykcji () w R, gdy używasz oryginalnych danych jako danych wejściowych?

11

Po uruchomieniu regresji formularza reg <- lm(y ~ x1 + x2, data=example)w zbiorze danych mogę uzyskać przewidywane wartości za pomocą

predict(reg, example, interval="prediction", level=0.95)

Zastanawiam się, do czego faktycznie odnoszą się przewidywane wartości, gdy używam regresji do przewidywania rzeczywistego zestawu danych. Czy nie powinienem uzyskać oryginalnych wartości?

powyżej
źródło

Odpowiedzi:

18

Model, z którym pracujesz, przyjmuje formę

yi=μ+β1x1i+β2x2i+ϵi (1)

gdzie jest błędu przyjmowanym z zerowego średniego rozkładu normalnego.ϵi

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 ix1ix2iyi

yi=μ^+β^1x1i+β^2x2i (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 iyxyiyi

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
ocram
źródło
1
x1x2β0
@ocram, co dokładnie wykonuje funkcja przewidywania, gdy używam tego samego zestawu danych i odpowiadającego równania regresji?
powyżej
@chl, czy to oznacza, że ​​przewidywanie nie powinno być oparte na modelu glm (lub glm.nb) z predyktorami jakościowymi? Na przykład: dat <- data.frame (y = as.numeric (c (10,15,12,1,0; 2,180,200,188,181,300,288)), p = as.factor (c (rep ("yes", 6), rep („nie”, 6))), t = współczynnik as (c (rep („tp1”, 3), rep („tp2”, 3), rep („tp1”, 3), rep („tp2”) , 3)))) wymagają (MASA) nb_fit <- glm.nb (y ~ p * t, data = data) pre_fit <- przewidywana (nb_fit, type = "response")
Arun
μβ0
1
kk1