Vous devez centrer les termes impliqués dans l'interaction pour réduire la colinéarité, par exemple
set.seed(10204)
x1 <- rnorm(1000, 10, 1)
x2 <- rnorm(1000, 10, 1)
y <- x1 + rnorm(1000, 5, 5) + x2*rnorm(1000) + x1*x2*rnorm(1000)
x1cent <- x1 - mean(x1)
x2cent <- x2 - mean(x2)
x1x2cent <- x1cent*x2cent
m1 <- lm(y ~ x1 + x2 + x1*x2)
m2 <- lm(y ~ x1cent + x2cent + x1cent*x2cent)
summary(m1)
summary(m2)
Production:
> summary(m1)
Call:
lm(formula = y ~ x1 + x2 + x1 * x2)
Residuals:
Min 1Q Median 3Q Max
-344.62 -66.29 -1.44 66.05 392.22
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 193.333 335.281 0.577 0.564
x1 -15.830 33.719 -0.469 0.639
x2 -14.065 33.567 -0.419 0.675
x1:x2 1.179 3.375 0.349 0.727
Residual standard error: 101.3 on 996 degrees of freedom
Multiple R-squared: 0.002363, Adjusted R-squared: -0.0006416
F-statistic: 0.7865 on 3 and 996 DF, p-value: 0.5015
> summary(m2)
Call:
lm(formula = y ~ x1cent + x2cent + x1cent * x2cent)
Residuals:
Min 1Q Median 3Q Max
-344.62 -66.29 -1.44 66.05 392.22
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.513 3.203 3.907 9.99e-05 ***
x1cent -4.106 3.186 -1.289 0.198
x2cent -2.291 3.198 -0.716 0.474
x1cent:x2cent 1.179 3.375 0.349 0.727
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 101.3 on 996 degrees of freedom
Multiple R-squared: 0.002363, Adjusted R-squared: -0.0006416
F-statistic: 0.7865 on 3 and 996 DF, p-value: 0.5015
library(perturb)
colldiag(m1)
colldiag(m2)
La décision de centrer d'autres variables dépend de vous; centrer (par opposition à standardiser) une variable qui n'est pas impliquée dans une interaction changera le sens de l'interception, mais pas d'autres choses par exemple
x1 <- rnorm(1000, 10, 1)
x2 <- x1 - mean(x1)
y <- x1 + rnorm(1000, 5, 5)
m1 <- lm(y ~ x1)
m2 <- lm(y ~ x2)
summary(m1)
summary(m2)
Production:
> summary(m1)
Call:
lm(formula = y ~ x1)
Residuals:
Min 1Q Median 3Q Max
-16.5288 -3.3348 0.0946 3.4293 14.0678
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.5412 1.6003 4.087 4.71e-05 ***
x1 0.8548 0.1591 5.373 9.63e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5.082 on 998 degrees of freedom
Multiple R-squared: 0.02812, Adjusted R-squared: 0.02714
F-statistic: 28.87 on 1 and 998 DF, p-value: 9.629e-08
> summary(m2)
Call:
lm(formula = y ~ x2)
Residuals:
Min 1Q Median 3Q Max
-16.5288 -3.3348 0.0946 3.4293 14.0678
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 15.0965 0.1607 93.931 < 2e-16 ***
x2 0.8548 0.1591 5.373 9.63e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5.082 on 998 degrees of freedom
Multiple R-squared: 0.02812, Adjusted R-squared: 0.02714
F-statistic: 28.87 on 1 and 998 DF, p-value: 9.629e-08
Mais vous devez prendre des journaux de variables parce qu'il est logique de le faire ou parce que les résidus du modèle indiquent que vous devriez le faire, pas parce qu'ils ont beaucoup de variabilité. La régression ne fait pas d'hypothèses sur la distribution des variables, elle fait des hypothèses sur la distribution des résidus.
y <- x1 + rnorm(1000, 5, 5) + x2*rnorm(1000) + x1*x2*rnorm(1000)
aide à illustrer la réponse. La moyenne de ceci est et la variance est , il n'y a donc pas de terme d'interaction dans le modèle générateur. 1 + 25 + 1 + 1