Zmienne i X 2 nie są liniowo niezależne. Więc nawet jeśli nie ma efektu kwadratowa, dodając X 2 do modelu zmodyfikuje szacowany efekt X .XX2)X2)X
Spójrzmy na bardzo prostą symulację.
> x <- runif(1e3)
> y <- x + rnorm(length(x))
> summary(lm(y~x))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.03486 0.06233 -0.559 0.576
x 1.05843 0.10755 9.841 <2e-16 ***
Teraz z kwadratowym terminem w modelu, aby pasował.
> summary(lm(y~x+I(x^2)))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.03275 0.09528 0.344 0.731
x 0.65742 0.44068 1.492 0.136
I(x^2) 0.39914 0.42537 0.938 0.348
Oczywiście test zbiorczy jest nadal znaczący, ale myślę, że wynik, którego szukamy, nie jest ten. Rozwiązaniem jest użycie wielomianów ortogonalnych.
> summary(lm(y~poly(x,2)))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.49744 0.03098 16.059 <2e-16 ***
poly(x, 2)1 9.63943 0.97954 9.841 <2e-16 ***
poly(x, 2)2 0.91916 0.97954 0.938 0.348
Zauważ, że współczynniki x
w pierwszym modelu i poly(x,2)1
w drugim modelu nie są równe, a nawet przecięcia są różne. Jest tak, ponieważ poly
dostarcza wektory ortonormalne, które są również ortogonalne względem wektora rep(1, length(x))
. Tak poly(x,2)1
nie jest, x
ale raczej (x -mean(x))/sqrt(sum((x-mean(x))**2))
...
Ważną kwestią jest to, że testy Walda w tym ostatnim modelu są niezależne. Możesz użyć ortogonalnych wielomianów, aby zdecydować, do jakiego stopnia chcesz przejść, po prostu patrząc na test Walda: tutaj decydujesz się zachować ale nie X 2 . Oczywiście można znaleźć ten sam model, porównując dwa pierwsze dopasowane modele, ale w ten sposób jest to prostsze - jeśli weźmiesz pod uwagę wyższe stopnie, jest to o wiele prostsze.XX2)
Gdy już zdecydujesz, które warunki zachować, możesz wrócić do surowych wielomianów i X 2 w celu interpretacji lub prognozowania.XX2)