Une interaction est-elle possible entre deux variables continues?

27

Toutes mes variables sont continues. Il n'y a pas de niveaux. Est-il possible d' avoir même une interaction entre les variables?

TheCloudlessSky
la source

Réponses:

31

Oui pourquoi pas? La même considération que pour les variables catégorielles s'appliquerait dans ce cas: l'effet de sur le résultat n'est pas le même selon la valeur de . Pour aider à le visualiser, vous pouvez penser aux valeurs prises par lorsque prend des valeurs hautes ou basses. Contrairement aux variables catégorielles, l'interaction n'est ici représentée que par le produit de et . Il est à noter qu'il vaut mieux centrer vos deux variables en premier (de sorte que le coefficient de par exemple se lise comme l'effet de lorsque est à sa moyenne d'échantillon). Y X 2 X 1 X 2 X 1 X 2 X 1 X 1 X 2X1YX2X1X2X1X2X1X1X2

Comme l'a gentiment suggéré @whuber, un moyen simple de voir comment varie avec en fonction de lorsqu'un terme d'interaction est inclus, est d'écrire le modèle . Y X 2 E ( Y | X ) = β 0 + β 1 X 1 + β 2 X 2 + β 3 X 1 X 2X1YX2E(Y|X)=β0+β1X1+β2X2+β3X1X2

Ensuite, on peut voir que l'effet d'une augmentation d'une unité de lorsque est maintenu constant peut être exprimé comme suit:X 2X1X2

E(Y|X1+1,X2)E(Y|X1,X2)=β0+β1(X1+1)+β2X2+β3(X1+1)X2(β0+β1X1+β2X2+β3X1X2)=β1+β3X2

De même, l'effet lorsque est augmenté d'une unité tout en maintenant constant est . Cela démontre pourquoi il est difficile d'interpréter les effets de ( ) et ( ) isolément. Cela sera encore plus compliqué si les deux prédicteurs sont fortement corrélés. Il est également important de garder à l'esprit l'hypothèse de linéarité qui est faite dans un tel modèle linéaire.X2X1β2+β3X1X1β1X2β2

Vous pouvez jeter un œil à Régression multiple: tester et interpréter les interactions , par Leona S. Aiken, Stephen G. West et Raymond R. Reno (Sage Publications, 1996), pour un aperçu des différents types d'effets d'interaction dans la régression multiple . (Ce n'est probablement pas le meilleur livre, mais il est disponible via Google)

Voici un exemple de jouet dans R:

library(mvtnorm)
set.seed(101)
n <- 300                      # sample size
S <- matrix(c(1,.2,.8,0,.2,1,.6,0,.8,.6,1,-.2,0,0,-.2,1), 
            nr=4, byrow=TRUE) # cor matrix
X <- as.data.frame(rmvnorm(n, mean=rep(0, 4), sigma=S))
colnames(X) <- c("x1","x2","y","x1x2")
summary(lm(y~x1+x2+x1x2, data=X))
pairs(X)

où la sortie se lit réellement:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.01050    0.01860  -0.565    0.573    
x1           0.71498    0.01999  35.758   <2e-16 ***
x2           0.43706    0.01969  22.201   <2e-16 ***
x1x2        -0.17626    0.01801  -9.789   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.3206 on 296 degrees of freedom
Multiple R-squared: 0.8828, Adjusted R-squared: 0.8816 
F-statistic: 743.2 on 3 and 296 DF,  p-value: < 2.2e-16 

Et voici à quoi ressemblent les données simulées:

texte alternatif

Pour illustrer le deuxième commentaire de @ whuber, vous pouvez toujours regarder les variations de en fonction de à différentes valeurs de (par exemple, terciles ou déciles); les affichages en treillis sont utiles dans ce cas. Avec les données ci-dessus, nous procéderions comme suit:YX2X1

library(Hmisc)
X$x1b <- cut2(X$x1, g=5) # consider 5 quantiles (60 obs. per group)
coplot(y~x2|x1b, data=X, panel = panel.smooth)

texte alternatif

chl
la source
5
(+1) Si vous avez le temps et l'envie, vous pouvez renforcer cette réponse en développant votre affirmation selon laquelle l'inclusion de X1 * X2 fait que l'effet de X1 sur Y varie avec X2. Plus précisément, un modèle Y = b0 + b1 * X1 + b2 * X2 + b3 * (X1 * X2) + erreur peut également être considéré comme ayant la forme Y = b0 + (b1 + b3 * X2) * X1 + b2 * X2 + erreur, montrant précisément comment le coefficient de X1 - qui est égal à b1 + b3 * X2 - varie avec X2 (et, symétriquement, le coefficient de X2 varie avec X1). C'est une forme simple et naturelle d '"interaction".
whuber
1
@chl - Merci pour la réponse. Le problème que j'ai, c'est que j'ai un grand n(11K) et j'utilise MiniTab pour faire un tracé d'interactions et il faut une éternité pour calculer mais n'affiche rien. Je ne sais pas comment je vois s'il y a interaction avec cet ensemble de données.
TheCloudlessSky
3
@TheCloudlessSky: Une approche consiste à découper les données en bacs selon les valeurs de X1. Tracez Y par rapport à X2 bin par bin, en recherchant les changements de pente lorsque les bacs varient. Faites de même avec les rôles de X1 et X2 inversés.
whuber
3
@chl L'affichage en treillis est une belle illustration. Le découpage d'une variable à des quantiles à intervalles égaux est intéressant. Il existe d'autres approches. Par exemple, Tukey a recommandé de trancher en divisant les queues par deux: autrement dit, trancher les valeurs X2 en deux à la médiane, puis trancher ces moitiés par leur médiane , puis trancher la moitié inférieure du groupe le plus bas à sa médiane et la moitié supérieure du plus haut groupe à sa médiane, et ainsi de suite, tant que les nouveaux groupes disposent de suffisamment de données.
whuber
1
@whuber C'est encore une fois un bon point. Je vais jeter un œil à la mise en œuvre possible de R, ou l'essayer moi-même.
chl