Ao incluir polinômios e interações entre eles, a multicolinearidade pode ser um grande problema; Uma abordagem é examinar polinômios ortogonais.
Geralmente, os polinômios ortogonais são uma família de polinômios ortogonais em relação a algum produto interno.
Assim, por exemplo, no caso de polinômios sobre alguma região com função de peso , o produto interno é - a ortogonalidade torna esse produto interno
menos que .W∫baw(x)pm(x)pn(x)dx0m=n
O exemplo mais simples para polinômios contínuos são os polinômios de Legendre, que têm função de peso constante durante um intervalo real finito (geralmente acima de ).[−1,1]
No nosso caso, o espaço (as próprias observações) é discreto e nossa função de peso também é constante (geralmente), de modo que os polinômios ortogonais são uma espécie de equivalente discreto dos polinômios de Legendre. Com a constante incluída em nossos preditores, o produto interno é simplesmente .pm(x)Tpn(x)=∑ipm(xi)pn(xi)
Por exemplo, considerex=1,2,3,4,5
Comece com a coluna constante, . O próximo polinômio é da forma , mas não estamos nos preocupando com a escala no momento, então . O próximo polinômio seria da forma ; verifica-se que é ortogonal aos dois anteriores:a x - b p 1 ( x ) = x - ˉ x = x - 3 a x 2 + b x + c p 2 ( x ) = ( x - 3 ) 2 - 2 = x 2 - 6 x + 7p0(x)=x0=1ax−bp1(x)=x−x¯=x−3ax2+bx+cp2(x)=(x−3)2−2=x2−6x+7
x p0 p1 p2
1 1 -2 2
2 1 -1 -1
3 1 0 -2
4 1 1 -1
5 1 2 2
Freqüentemente, a base também é normalizada (produzindo uma família ortonormal) - ou seja, as somas de quadrados de cada termo são definidas como constantes (digamos, para ou para , de modo que o desvio padrão seja 1 ou talvez com mais freqüência, para ).n - 1 1nn−11
As formas de ortogonalizar um conjunto de preditores polinomiais incluem a ortogonalização de Gram-Schmidt e a decomposição de Cholesky, embora existam inúmeras outras abordagens.
Algumas das vantagens dos polinômios ortogonais:
1) a multicolinearidade é uma não emissão - esses preditores são todos ortogonais.
2) Os coeficientes de ordem inferior não mudam à medida que você adiciona termos . Se você ajustar um polinômio grau através de polinômios ortogonais, conhecerá os coeficientes de um ajuste de todos os polinômios de ordem inferior sem reajustar.k
Exemplo em R ( cars
dados, parando distâncias contra velocidade):
Aqui consideramos a possibilidade de um modelo quadrático ser adequado:
R usa a poly
função para configurar preditores polinomiais ortogonais:
> p <- model.matrix(dist~poly(speed,2),cars)
> cbind(head(cars),head(p))
speed dist (Intercept) poly(speed, 2)1 poly(speed, 2)2
1 4 2 1 -0.3079956 0.41625480
2 4 10 1 -0.3079956 0.41625480
3 7 4 1 -0.2269442 0.16583013
4 7 22 1 -0.2269442 0.16583013
5 8 16 1 -0.1999270 0.09974267
6 9 10 1 -0.1729098 0.04234892
Eles são ortogonais:
> round(crossprod(p),9)
(Intercept) poly(speed, 2)1 poly(speed, 2)2
(Intercept) 50 0 0
poly(speed, 2)1 0 1 0
poly(speed, 2)2 0 0 1
Aqui está um gráfico dos polinômios:
Aqui está a saída do modelo linear:
> summary(carsp)
Call:
lm(formula = dist ~ poly(speed, 2), data = cars)
Residuals:
Min 1Q Median 3Q Max
-28.720 -9.184 -3.188 4.628 45.152
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 42.980 2.146 20.026 < 2e-16 ***
poly(speed, 2)1 145.552 15.176 9.591 1.21e-12 ***
poly(speed, 2)2 22.996 15.176 1.515 0.136
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 15.18 on 47 degrees of freedom
Multiple R-squared: 0.6673, Adjusted R-squared: 0.6532
F-statistic: 47.14 on 2 and 47 DF, p-value: 5.852e-12
Aqui está um gráfico do ajuste quadrático: