Comment inclure un terme linéaire et quadratique en incluant également l'interaction avec ces variables?


9

Lors de l'ajout d'un prédicteur numérique avec des prédicteurs catégoriels et leurs interactions, il est généralement considéré nécessaire de centrer les variables à 0 au préalable. Le raisonnement est que les principaux effets sont autrement difficiles à interpréter car ils sont évalués avec le prédicteur numérique à 0.

Ma question est maintenant de savoir comment centrer si l'on inclut non seulement la variable numérique d'origine (en tant que terme linéaire) mais aussi le terme quadratique de cette variable? Ici, deux approches différentes sont nécessaires:

  1. Centrage des deux variables sur leur moyenne individuelle. Cela a l'inconvénient malheureux que le 0 est maintenant à une position différente pour les deux variables compte tenu de la variable d'origine.
  2. Centrage des deux variables sur la moyenne de la variable d'origine (c'est-à-dire soustraction de la moyenne de la variable d'origine pour le terme linéaire et soustraction du carré de la moyenne de la variable d'origine du terme quadratique). Avec cette approche, le 0 représenterait la même valeur que la variable d'origine, mais la variable quadratique ne serait pas centrée sur 0 (c'est-à-dire que la moyenne de la variable ne serait pas 0).

Je pense que l'approche 2 semble raisonnable étant donné la raison du centrage après tout. Cependant, je ne trouve rien à ce sujet (également pas dans les questions connexes: a et b ).

Ou est-ce généralement une mauvaise idée d'inclure des termes linéaires et quadratiques et leurs interactions avec d'autres variables dans un modèle?


Ces problèmes ressemblent à des préoccupations stylistiques. Cela ne veut pas dire que les questions sont sans importance, mais que les réponses peuvent dépendre davantage de vos objectifs précis pour l'analyse. Je ne vois pas comment l'une des approches que vous mentionnez serait "généralement mauvaise". Il pourrait être plus facile d'obtenir la réponse que vous recherchez avec un peu plus d'informations sur le problème scientifique, et en particulier le type de déclaration interprétative que vous souhaitez pouvoir tirer du modèle.
zkurtz

Je suggère d'utiliser des polynômes orthogonaux.
Glen_b -Reinstate Monica

@Glen_b Pouvez-vous donner plus de détails?
Henrik

Détails inclus. Désolé, cela a pris quelques jours.
Glen_b -Reinstate Monica

Réponses:


8

Lorsqu'on inclut des polynômes et des interactions entre eux, la multicolinéarité peut être un gros problème; une approche consiste à examiner les polynômes orthogonaux.

Généralement, les polynômes orthogonaux sont une famille de polynômes qui sont orthogonaux par rapport à un produit intérieur.

Ainsi, par exemple, dans le cas de polynômes sur une région avec une fonction de poids , le produit intérieur est - l'orthogonalité rend ce produit intérieur moins que .wabw(x)pm(x)pn(x)dx0m=n

L'exemple le plus simple pour les polynômes continus est les polynômes de Legendre, qui ont une fonction de pondération constante sur un intervalle réel fini (généralement sur ).[1,1]

Dans notre cas, l'espace (les observations elles-mêmes) est discret, et notre fonction de pondération est également constante (généralement), donc les polynômes orthogonaux sont une sorte d'équivalent discret des polynômes de Legendre. Avec la constante incluse dans nos prédicteurs, le produit intérieur est simplement .pm(x)Tpn(x)=ipm(xi)pn(xi)

Par exemple, considéronsx=1,2,3,4,5

Commencez par la colonne constante, . Le polynôme suivant est de la forme , mais nous ne nous soucions pas de l'échelle pour le moment, donc . Le polynôme suivant serait de la forme ; il s'avère que est orthogonal aux deux précédents:p0(x)=x0=1axbp1(x)=xx¯=x3ax2+bx+cp2(x)=(x3)22=x26x+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

Souvent, la base est également normalisée (produisant une famille orthonormée) - c'est-à-dire que les sommes des carrés de chaque terme sont définies pour être constantes (par exemple, à ou à , de sorte que l'écart-type est 1, ou peut-être le plus souvent, à ).nn11

Les moyens d'orthogonaliser un ensemble de prédicteurs polynomiaux comprennent l'orthogonalisation de Gram-Schmidt et la décomposition de Cholesky, bien qu'il existe de nombreuses autres approches.


Quelques avantages des polynômes orthogonaux:

1) la multicolinéarité n'est pas un problème - ces prédicteurs sont tous orthogonaux.

2) Les coefficients de poids faible ne changent pas lorsque vous ajoutez des termes . Si vous ajustez un polynôme de degré via des polynômes orthogonaux, vous connaissez les coefficients d'un ajustement de tous les polynômes d'ordre inférieur sans réajustement.k


Exemple en R ( carsdonnées, distances d'arrêt en fonction de la vitesse): entrez la description de l'image ici

Nous considérons ici la possibilité qu'un modèle quadratique puisse convenir:

R utilise la polyfonction pour configurer des prédicteurs polynomiaux orthogonaux:

> 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

Ils sont orthogonaux:

> 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

Voici un tracé des polynômes: entrez la description de l'image ici

Voici la sortie du modèle linéaire:

> 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

Voici un tracé de l'ajustement quadratique: entrez la description de l'image ici


7

Je ne pense pas que le centrage en vaille la peine, et le centrage rend l'interprétation des estimations de paramètres plus complexe. Si vous utilisez un logiciel d'algèbre matriciel moderne, la colinéarité algébrique n'est pas un problème. Votre motivation initiale de centrage pour pouvoir interpréter les effets principaux en présence d'interaction n'est pas forte. Les effets principaux lorsqu'ils sont estimés à une valeur choisie automatiquement d'un facteur d'interaction continue sont quelque peu arbitraires, et il est préférable de considérer cela comme un simple problème d'estimation en comparant les valeurs prédites. Dans le rmspackage Rcontrast.rmsPar exemple, vous pouvez obtenir n'importe quel contraste d'intérêt indépendamment des codages variables. Voici un exemple de variable catégorielle x1 avec les niveaux "a" "b" "c" et une variable continue x2, ajustée à l'aide d'une spline cubique restreinte à 4 nœuds par défaut. Différentes relations entre x2 et y sont autorisées pour différents x1. Deux des niveaux de x1 sont comparés à x2 = 10.

require(rms)
dd <- datadist(x1, x2); options(datadist='dd')
f <- ols(y ~ x1 * rcs(x2,4))
contrast(f, list(x1='b', x2=10), list(x1='c', x2=10))
# Now get all comparisons with c:
contrast(f, list(x1=c('a','b'), x2=10), list(x1='c', x2=10))
# add type ='joint' to get a 2 d.f. test, or conf.type='simultaneous'
# to get simultaneous individual confidence intervals

Avec cette approche, vous pouvez également facilement estimer les contrastes à plusieurs valeurs du ou des facteurs d'interaction, par exemple

contrast(f, list(x1='b', x2=10:20), list(x1='c', x2=10:20))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.