Quando si forma un modello di regressione come y i = β 0 + β 1 x i + β 2 x 2 i , il modello e le OLS stimatore non 'sapere' che x 2 i è semplicemente il quadrato x i , 'pensa' che sia un'altra variabile. Naturalmente c'è una certa collinearità, che viene incorporata nell'adattamento (ad esempio, gli errori standard sono più grandi di quanto potrebbero essere altrimenti), ma molte coppie di variabili possono essere in qualche modo collineari senza che una di esse sia una funzione dell'altra. y^i=β^0+β^1xi+β^2x2ix2ixi
Noi non riconosciamo che ci sono davvero due variabili distinte nel modello, perché noi sappiamo che è in definitiva la stessa variabile x i che abbiamo trasformato e incluso al fine di catturare una relazione curvilinea tra x i e y i . Che la conoscenza della vera natura di x 2 i , insieme con la nostra convinzione che ci sia una relazione curvilinea tra x i e y i è ciò che rende difficile per noi capire il modo in cui è ancora lineare dal punto di vista del modello. Inoltre, visualizziamo xx2ixixiyix2ixiyi e x 2 i insieme osservando la proiezione marginale della funzione 3D sul piano 2D x , y . xix2ix,y
Se hai solo e x 2 i , puoi provare a visualizzarli nello spazio 3D completo (anche se è ancora piuttosto difficile vedere davvero cosa sta succedendo). Se osservassi la funzione adattata in tutto lo spazio 3D, vedresti che la funzione adattata è un piano 2D e inoltre che è un piano piatto. Come ho detto, è difficile vedere bene perché i dati x i , x 2 i esistono solo lungo una linea curva che attraversa quello spazio 3D (quel fatto è la manifestazione visiva della loro collinearità). Possiamo provare a farlo qui. Immagina che questo sia il modello montato: xix2ixi,x2i
x = seq(from=0, to=10, by=.5)
x2 = x**2
y = 3 + x - .05*x2
d.mat = data.frame(X1=x, X2=x2, Y=y)
# 2D plot
plot(x, y, pch=1, ylim=c(0,11), col="red",
main="Marginal projection onto the 2D X,Y plane")
lines(x, y, col="lightblue")
# 3D plot
library(scatterplot3d)
s = scatterplot3d(x=d.mat$X1, y=d.mat$X2, z=d.mat$Y, color="gray", pch=1,
xlab="X1", ylab="X2", zlab="Y", xlim=c(0, 11), ylim=c(0,101),
zlim=c(0, 11), type="h", main="In pseudo-3D space")
s$points(x=d.mat$X1, y=d.mat$X2, z=d.mat$Y, col="red", pch=1)
s$plane3d(Intercept=3, x.coef=1, y.coef=-.05, col="lightblue")
Potrebbe essere più facile vedere in queste immagini, che sono schermate di una figura 3D ruotata fatta con gli stessi dati usando il rgl
pacchetto.
ppp+1