Was sind die vorhergesagten Werte, die von der Funktion dict () in R zurückgegeben werden, wenn Originaldaten als Eingabe verwendet werden?

11

Nachdem reg <- lm(y ~ x1 + x2, data=example)ich eine Regression des Formulars für ein Dataset ausgeführt habe, kann ich mithilfe von vorhergesagte Werte abrufen

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

Ich frage mich, worauf sich die vorhergesagten Werte tatsächlich beziehen, wenn ich die Regression verwende, um den tatsächlichen Datensatz vorherzusagen. Sollte ich nicht die ursprünglichen Werte erhalten?

hoch oben
quelle

Antworten:

18

Das Modell, mit dem Sie arbeiten, hat die Form

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

ϵi

μ^β^1β^2

x1ix2iyi

yi=μ^+β^1x1i+β^2x2i (2)

yxyiyi

Bearbeiten

In Ihren Kommentaren haben Sie gefragt, was predict()tatsächlich funktioniert. Hier ist ein einfaches veranschaulichendes Beispiel.

    #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
quelle
1
x1x2β0
@ocram Was genau macht die Vorhersagefunktion dann, wenn ich denselben Datensatz und die entsprechende Regressionsgleichung verwende?
bis
@chl, bedeutet das, dass die Vorhersage nicht auf einem glm- (oder glm.nb-) Modell mit kategorialen Prädiktoren erfolgen sollte? Zum Beispiel: 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 ("nein", 6))), t = as.Faktor (c (rep ("tp1", 3), rep ("tp2", 3), rep ("tp1", 3), rep ("tp2") , 3)))) erfordern (MASS) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- vorhersagen (nb_fit, type = "response")
Arun
μβ0
1
kk1