Il modello con cui stai lavorando prende la forma
yio= μ + β1X1 i+ β2X2 i+ ϵ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 iX⋆1 iX⋆2 iyio
y⋆io= μ^+ β^1X⋆1 i+ β^2X⋆2 i (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- y⋆io
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
x1ex2siano predittori continui, non categorici. (Perché non denotare l'intercettazione di ?)