Lorsque vous effectuez une régression multiple, quand devriez-vous centrer vos variables prédictives et quand devriez-vous les normaliser?


281

Dans certaines publications, j'ai lu qu'une régression avec plusieurs variables explicatives, si différentes unités, devait être normalisée. (La normalisation consiste à soustraire la moyenne et à la diviser par l'écart type.) Dans quels autres cas dois-je normaliser mes données? Existe-t-il des cas dans lesquels je devrais seulement centrer mes données (c'est-à-dire sans diviser par l'écart type)?


11
Un article connexe sur le blog d'Andrew Gelman.

31
En plus des grandes réponses déjà données, permettez-moi de mentionner que l'utilisation de méthodes de pénalisation telles que la régression de crête ou le lasso ne donne plus aucun résultat invariant pour la normalisation. Cependant, il est souvent recommandé de standardiser. Dans ce cas, pas pour des raisons directement liées aux interprétations, mais parce que la pénalisation traitera alors différentes variables explicatives sur un pied d'égalité.
NRH

6
Bienvenue sur le site @mathieu_r! Vous avez posté deux questions très populaires. Pensez à bien voter / accepter certaines des excellentes réponses que vous avez reçues aux deux questions;)
Macro


1
Quand je lis ce Q & A , il m'a rappelé un site usenet je suis tombé il y a de nombreuses années faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html Cela donne en termes simples quelques - unes des questions et considérations quand on veut normaliser / normaliser / redimensionner les données. Je ne l'ai pas vu mentionné nulle part dans les réponses ici. Cela traite le sujet d'un point de vue plus d'apprentissage machine, mais cela pourrait aider quelqu'un qui vient ici.
Paul

Réponses:


213

En régression, il est souvent recommandé de centrer les variables de manière à ce que les prédicteurs aient une moyenne de 0 . Cela signifie que leYi terme d'interception est interprété comme la valeur attendue de Y i lorsque les valeurs de prédicteur sont définies sur leur moyenne . Sinon, l'interception est interprétée comme la valeur attendue de Yi lorsque les prédicteurs sont définis sur 0, ce qui peut ne pas être une situation réaliste ou interprétable (par exemple, que se passe-t-il si les prédicteurs étaient la taille et le poids?). Une autre raison pratique pour mise à l' échelle de la régression est quand une variable a une très grande échelle, par exemple si vous utilisiez la taille de la population d'un pays comme un facteur prédictif. Dans ce cas, les coefficients de régression peuvent être sur unetrès petit ordre de grandeur (par exemple 106 ), ce qui peut être un peu gênant lorsque vous lisez les résultats d'un ordinateur, vous pouvez donc convertir la variable en, par exemple, la taille de la population en millions. La convention selon laquelle vous normalisez les prévisions existe principalement pour que les unités des coefficients de régression soient les mêmes.

Comme @gung fait allusion à et @ MånsT le montre explicitement (+1 aux deux, btw), le centrage / la mise à l'échelle n'affecte pas votre inférence statistique dans les modèles de régression - les estimations sont ajustées de manière appropriée et les valeurs p seront les mêmes.

D'autres situations où le centrage et / ou la mise à l'échelle peuvent être utiles:

  • lorsque vous essayez de faire la somme ou la moyenne de variables qui se trouvent sur différentes échelles , peut-être de créer un score composite quelconque. Sans mise à l'échelle, il se peut qu'une variable ait un impact plus important sur la somme du fait de son échelle, ce qui peut être indésirable.

  • Pour simplifier les calculs et la notation. Par exemple, l'échantillon matrice de covariance d'une matrice de valeurs centrées par leurs moyens d'échantillonnage est simplement XX . De même, si une variable aléatoire unidimensionnel X a été signifier centré, puis var(X)=E(X2) et la variance peut être estimée à partir d' un échantillon en examinant l'échantillon moyenne des carrés des valeurs observées.

  • En relation avec ce qui précède, PCA ne peut être interprétée comme une décomposition en valeurs singulières d'une matrice de données lorsque les colonnes ont d'abord été centrées par leur moyen.

Notez que la mise à l'échelle n'est pas nécessaire dans les deux derniers points que j'ai mentionnés et que le centrage ne l' est peut-être pas dans le premier point que j'ai mentionné, de sorte que les deux n'ont pas besoin d'aller main dans la main.


2
+1, ce sont des points positifs auxquels je n'avais pas pensé. Pour plus de clarté, laissez-moi énumérer quelques exemples concrets dans lesquels un chercheur pourrait vouloir combiner des variables explicatives avant de procéder à une régression, et doit donc normaliser. Un cas pourrait concerner la recherche sur les troubles du comportement des enfants; les chercheurs peuvent obtenir des évaluations de la part des parents et des enseignants, puis vouloir les combiner en une seule mesure d'inadaptation. Un autre cas pourrait être une étude sur le niveau d'activité dans une maison de retraite avec auto-évaluations par les résidents et le nombre de signatures sur les feuilles d'inscription pour les activités.
gung

2
Mais ne devrions-nous pas en théorie utiliser la moyenne de la population et l'écart type pour le centrage / la mise à l'échelle? En pratique, est-ce aussi simple que d’utiliser la moyenne de l’échantillon / écart type ou ya t-il autre chose?
AlefSin

3
Par souci d'exhaustivité, permettez - moi d' ajouter à cette belle réponse que du centré et normalisé X est la matrice de corrélation. XXX
cbeleites

1
@AlefSin: vous voudrez peut-être utiliser autre chose que la moyenne / sd de la population, voir ma réponse. Mais votre argument selon lequel nous devrions penser à ce qu'il faut utiliser pour centrer / mettre à l'échelle est très bon.
cbeleites

@AlefSin, tous mes commentaires ont été formulés en supposant que vous utilisiez la moyenne / SD de l'échantillon. Si vous centrez l'échantillon sur la moyenne, cela signifie que l'interprétation de l'interception est toujours la même, sauf que c'est la valeur attendue de lorsque les prédicteurs sont définis sur leur moyenne d'échantillon . Les informations contenues dans mes trois points centraux s'appliquent toujours lorsque vous centrez / mettez à l'échelle par quantités d'échantillon. Il est également intéressant de noter que si vous centrez sur la moyenne de l'échantillon, le résultat est une variable avec la moyenne 0 mais la normalisation sur l'écart-type de l'échantillon ne produit pas, en général, un résultat avec l'écart-type 1 (par exemple, la statistique t). Yi
Macro

143

Vous avez rencontré une croyance commune. Cependant, en général, vous n'avez pas besoin de centrer ou de normaliser vos données pour une régression multiple. Différentes variables explicatives sont presque toujours à différentes échelles (c.-à-d. Mesurées dans différentes unités). Ce n'est pas un problème; les bêtas sont estimés de manière à convertir les unités de chaque variable explicative en unités de la variable de réponse de manière appropriée. Les gens disent parfois que si vous avez d'abord normalisé vos variables, vous pouvez alors interpréter les bêtas comme des mesures d'importance. Par exemple, si et β 2 = 0,3β1=.6β2=.3, alors la première variable explicative est deux fois plus importante que la seconde. Bien que cette idée soit attrayante, elle n’est malheureusement pas valable. Il existe plusieurs problèmes, mais le plus simple à suivre est que vous ne pouvez pas contrôler les éventuelles restrictions de plage dans les variables. Inférer de "l'importance" de différentes variables explicatives les unes par rapport aux autres est une question philosophique très délicate. Rien de tout cela ne suggère que la normalisation est mauvaise ou fausse , mais qu'elle n'est généralement pas nécessaire .

XX2XX


(Mise à jour ajoutée beaucoup plus tard :) Un cas analogue que j'ai oublié de mentionner est la création de termes d' interaction . Si un terme d'interaction / produit est créé à partir de deux variables qui ne sont pas centrées sur 0, une certaine colinéarité sera induite (la quantité exacte dépendant de divers facteurs). Le centrage aborde d' abord ce problème potentiel. Pour une explication plus complète, voir cette excellente réponse de @Affine: Le diagnostic par colinéarité ne pose problème que lorsque le terme d'interaction est inclus .


12
Si quelqu'un est intéressé, je parle également de l'idée erronée d'utiliser des bêta standard pour déduire une «importance» relative ici: régression multiple-linéaire pour la vérification d'hypothèses
gung

Merci pour votre réponse. Je pense l'avoir compris entre temps: on pourrait penser au terme carré lorsque X interagissait avec lui-même, pour ainsi dire, et votre argument sur la variable en interaction serait plus général.
Abhimanyu Arora

6
XX

À propos de beta1 = 0.6 et beta2 = 0.3, je ne suis pas certain que dire de beta1 soit aussi important que de beta2, mais je pensais que, puisqu'elles sont standardisées, elles sont sur la même échelle, c'est-à-dire que les unités sont des écarts-types. de la moyenne. Cela dit, la réponse de Y sera deux fois plus élevée dans le cas de beta1 (maintien x2 constant) que pour beta2 (maintien x1 constant). Droite? Ou ai-je mal compris quelque chose sur le chemin?
chao

@chao, vous ne vous êtes pas vraiment débarrassé des unités intrinsèques aux 2 variables; vous venez de les cacher. Maintenant, les unités de X1 sont par 13,9 cm et les unités de X2 sont par 2,3 degrés Celsius.
gung

80

Outre les remarques formulées dans les autres réponses, je voudrais souligner que l’échelle et la localisation des variables explicatives n’affectent en aucune manière la validité du modèle de régression.

y=β0+β1x1+β2x2++ϵ

β1,β2,x1,x2,β0

x1aβ^11/a

β^1(x1)=i=1n(x1,ix¯1)(yiy¯)i=1n(x1,ix¯1)2.

Ainsi

β^1(ax1)=i=1n(ax1,iax¯1)(yiy¯)i=1n(ax1,iax¯1)2=ai=1n(x1,ix¯1)(yiy¯)a2i=1n(x1,ix¯1)2=β^1(x1)a.

β^2

Ainsi, la mise à l'échelle correspond simplement à la mise à l'échelle des pentes correspondantes.

ai=1/sisix1xi


1
Est-ce une bonne idée de normaliser les variables très asymétriques ou vaut-il mieux simplement normaliser des variables symétriquement réparties? Devrions-nous normaliser uniquement les variables d'entrée ou également les résultats?
Skan

31

Si vous utilisez une descente de gradient adaptée à votre modèle, la standardisation des covariables peut accélérer la convergence (car, lorsque vous avez des covariables non échelonnées, les paramètres correspondants risquent de dominer de manière inappropriée le gradient). Pour illustrer cela, du code R:

> objective <- function(par){ par[1]^2+par[2]^2}  #quadratic function in two variables with a minimum at (0,0)
> optim(c(10,10), objective, method="BFGS")$counts  #returns the number of times the function and its gradient had to be evaluated until convergence
    function gradient 
          12        3 
> objective2 <- function(par){ par[1]^2+0.1*par[2]^2}  #a transformation of the above function, corresponding to unscaled covariates
> optim(c(10,10), objective2, method="BFGS")$counts
function gradient 
      19       10 
> optim(c(10,1), objective2, method="BFGS")$counts  #scaling of initial parameters doesn't get you back to original performance
function gradient 
      12        8

De plus, pour certaines applications de SVM, la mise à l'échelle peut améliorer les performances prédictives: Mise à l'échelle des fonctionnalités dans la description des données vectorielles de support .


25

Je préfère les "raisons solides" pour le centrage et la normalisation (elles existent très souvent). En général, ils ont plus à voir avec l'ensemble de données et le problème qu'avec la méthode d'analyse des données.

Très souvent, je préfère centrer (c.-à-d. Déplacer l'origine des données) sur d'autres points physiquement / chimiquement / biologiquement / ... plus significatifs que la moyenne (voir aussi la réponse de Macro), par exemple

  • la moyenne d'un groupe de contrôle

  • signal vierge

La stabilité numérique est une raison liée à un algorithme pour centrer et / ou mettre à l'échelle des données.

Consultez également la question similaire sur la normalisation . Qui couvre également "centre seulement".


24

Pour illustrer le problème de stabilité numérique mentionné par @cbeleites, voici un exemple de Simon Wood sur la façon de "casser" lm(). Nous allons d’abord générer des données simples et ajuster une courbe quadratique simple.

set.seed(1); n <- 100
xx <- sort(runif(n))
y <- .2*(xx-.5)+(xx-.5)^2 + rnorm(n)*.1
x <- xx+100
b <- lm(y ~ x+I(x^2))

plot(x,y)
lines(x, predict(b), col='red')

entrez la description de l'image ici

Mais si nous ajoutons 900 à X, le résultat devrait être à peu près le même, sauf que vous êtes décalé à droite, non? Malheureusement non...

X <- x + 900
B <- lm(y ~ X+I(X^2))
plot(X,y)
lines(X, predict(B), col='blue')

entrez la description de l'image ici

Modifier pour ajouter au commentaire de @Scortchi - si nous examinons l'objet renvoyé par lm (), nous voyons que le terme quadratique n'a pas été estimé et qu'il est indiqué par NA.

> B
Call:
lm(formula = y ~ X + I(X^2))

Coefficients:
(Intercept)            X       I(X^2)  
  -139.3927       0.1394           NA  

Et en effet, comme suggéré par @Scortchi, si nous examinons la matrice du modèle et essayons de la résoudre directement, elle "se rompt".

> X <- model.matrix(b) ## get same model matrix used above
> beta.hat <- solve(t(X)%*%X,t(X)%*%y) ## direct solution of ‘normal equations’
Error in solve.default(t(X) %*% X, t(X) %*% y) : 
  system is computationally singular: reciprocal condition number = 3.9864e-19

Cependant, lm()ne me donne aucun message d'avertissement ou d'erreur autre que le NAs sur la I(X^2)ligne de summary(B)R-3.1.1. D'autres algorithmes peuvent bien sûr être "cassés" de différentes manières avec différents exemples.


10
(+1) La note lmne parvient pas à estimer un coefficient pour le terme quadratique, et donne un avertissement concernant une matrice de conception singulière - peut-être plus directement illustrant le problème que ces tracés.
Scortchi

3

Je doute sérieusement que le fait de centrer ou de normaliser les données d'origine puisse réellement atténuer le problème de multicolinéarité lorsque des termes carrés ou d'autres termes d'interaction sont inclus dans la régression, comme certains d'entre vous, particulièrement les génies, l'ont recommandé ci-dessus.

Pour illustrer mon propos, considérons un exemple simple.

Supposons que la vraie spécification prenne la forme suivante telle que

yi=b0+b1xi+b2xi2+ui

Ainsi, l’équation OLS correspondante est donnée par

yi=yi^+ui^=b0^+b1^xi+b2^xi2+ui^

yi^yiuib0^b2^b0b2zi=xi2

xx2yiyi

Il est assez facile de montrer que la moyenne de est donnée comme suit: ˉ y = ^ byi

y¯=b0^+b1^x¯+b2^z¯
y¯x¯z¯yixizi

y¯yi

yiy¯=b1^(xix¯)+b2^(ziz¯)+ui^

yiy¯xix¯ziz¯b1^b2^

xx2xx2corr(x,z)=corr(xx¯,zz¯)

En résumé, si ma compréhension du centrage est correcte, alors je ne pense pas que le centrage des données aiderait à atténuer le problème de MC causé par l'inclusion de termes carrés ou d'autres termes d'ordre supérieur dans la régression.

Je serais heureux d'entendre vos opinions!


2
Merci pour votre contribution, @ rudi0086021. Vous avez peut-être raison, mais je vois quelques problèmes ici. Premièrement, le centrage consiste à soustraire la moyenne de x et non à soustraire la moyenne de y ; Deuxièmement, vous devez d'abord centrer, le centrage après mots n'a aucun effet lorsque vous le notez. Considérez: x = c(1,2,3); x2 = x^2; cor(x, x2); # [1] 0.9897433; xc = c(-1,0,1); xc2 = xc^2; cor(xc, xc2) # [1] 0.
gung

Merci pour votre réponse, @gung. Voici mes pensées. Tout d’abord, personnellement, je n’ai trouvé aucune raison convaincante de traiter les variables dépendantes et indépendantes différemment, c’est-à-dire les variables indépendantes, sans le faire pour les variables dépendantes.
rudi0086021

2
Deuxièmement, comme vous l'avez dit, nous devrions peut-être centrer les données avant de créer des termes carrés. Une telle pratique atténuera le problème de MC. Cependant, cela pourrait conduire à des estimations biaisées, ou plus concrètement, au biais variable omis (OVB). Pour illustrer, voir l'exemple suivant: supposons que la vraie spécification soit: y = b0 + b1 * x + b2 * x ^ 2 + u. Centrer préalablement les données donnera: y = b0 + b1 * (x-xhar) + b2 * (x-xbar) ^ 2 + v, où le nouveau terme d'erreur v = u + b1 * xbar-b2 * xbar ^ 2 + 2b2 * xbar * x. Il est clair que cov (x-xbar, v)! = 0. Ainsi, le centrage préalable des données conduirait malheureusement à des estimations biaisées.
rudi0086021

@ rudi0086021 Il semble que dans votre dernier commentaire, vous supposiez que vous obtiendriez les mêmes coefficients lors de l'ajustement des données centrées que lors de l'ajustement des données non centrées. Mais centrer avant de prendre la place n'est pas un simple décalage d'une constante, il ne faut donc pas s'attendre à obtenir les mêmes coefficients. Le meilleur ajustement après centrage est donné par B0 + B1 * (x-xbar) + B2 * (x-xbar) ^ 2 où B0 = b0 + b1 * xbar + b2 * xbar ^ 2, B1 = b1 + 2 * b2 * xbar et B2 = b2. Ainsi, v = u. Désolé de répondre à ce commentaire si tardivement, mais il pourrait toujours y en avoir d'autres comme moi qui le voient pour la première fois aujourd'hui.
Tim Goodman
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.