Quali sono i valori previsti restituiti dalla funzione predict () in R quando si utilizzano i dati originali come input?


11

Dopo aver eseguito una regressione del modulo reg <- lm(y ~ x1 + x2, data=example)su un set di dati, posso ottenere i valori previsti utilizzando

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

Mi chiedo a cosa si riferiscano effettivamente i valori previsti quando sto usando la regressione per prevedere il set di dati effettivo. Non dovrei ottenere i valori originali?

Risposte:


18

Il modello con cui stai lavorando prende la forma

yio=μ+β1X1io+β2X2io+εio (1)

dove εio è un termine di errore che si presume provenga da una distribuzione normale a media zero.

Hai adattato il modello e hai ottenuto stime: , e . β 1 β 2μ^β^1β^2

Ora, se si correggono i valori della covariata all'interno del loro intervallo, dire e , è possibile ottenere un valore previsto per calcolando x 2 i y iX1ioX2ioyio

yio=μ^+β^1X1io+β^2X2io (2)

Se il tuo modello si adatta perfettamente ai tuoi dati, i valori previsti sono valori reali. Ma, in generale, i valori non possono essere ottenuti esattamente come una semplice combinazione lineare di valori (" Tutti i modelli sono sbagliati, ma alcuni sono utili "). In altri termini, la varianza del termine di errore in (1) non è zero in generale. Ma, fondamentalmente, il modello (1) è una buona approssimazione se i residui (o una versione in scala di questi) sono "piccoli".x y i - y iyXyio-yio

modificare

Nei tuoi commenti, hai chiesto cosa predict()effettivamente fa. Ecco un semplice esempio illustrativo.

    #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

1
(+1) Notare che il modello (1) così come è scritto presuppone che x1e x2siano predittori continui, non categorici. (Perché non denotare l'intercettazione di ?)β0
chl

@ocram quindi cosa sta facendo esattamente la funzione di previsione quando sto usando lo stesso set di dati e la corrispondente equazione di regressione?
fino

@chl, significa che la previsione non dovrebbe essere su un modello glm (o glm.nb) con predittori categorici? Ad esempio: 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 ("no", 6))), t = as.factor (c (rep ("tp1", 3), rep ("tp2", 3), rep ("tp1", 3), rep ("tp2" , 3)))) richiedono (MASSA) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- predict (nb_fit, type = "response")
Arun,

μβ0

1
KK-1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.