La normalisation des variables indépendantes réduit-elle la colinéarité?

12

Je suis tombé sur un très bon texte sur Bayes / MCMC. Le service informatique suggère qu'une standardisation de vos variables indépendantes rendra un algorithme MCMC (Metropolis) plus efficace, mais aussi qu'elle peut réduire la (multi) colinéarité. Cela peut-il être vrai? Est-ce quelque chose que je devrais faire en standard . (Désolé).

Kruschke 2011, Faire l'analyse des données bayésiennes. (AP)

modifier: par exemple

     > data(longley)
     > cor.test(longley$Unemployed, longley$Armed.Forces)

Pearson's product-moment correlation

     data:  longley$Unemployed and longley$Armed.Forces 
     t = -0.6745, df = 14, p-value = 0.5109
     alternative hypothesis: true correlation is not equal to 0 
     95 percent confidence interval:
     -0.6187113  0.3489766 
     sample estimates:
      cor 
     -0.1774206 

     > standardise <- function(x) {(x-mean(x))/sd(x)}
     > cor.test(standardise(longley$Unemployed), standardise(longley$Armed.Forces))

Pearson's product-moment correlation

     data:  standardise(longley$Unemployed) and standardise(longley$Armed.Forces) 
     t = -0.6745, df = 14, p-value = 0.5109
      alternative hypothesis: true correlation is not equal to 0 
     95 percent confidence interval:
      -0.6187113  0.3489766 
      sample estimates:
       cor 
     -0.1774206 

Cela n'a pas réduit la corrélation ni donc la dépendance linéaire, quoique limitée, des vecteurs.

Que se passe-t-il?

R

Rosser
la source

Réponses:

19

Cela ne change pas du tout la colinéarité entre les effets principaux. La mise à l'échelle non plus. Toute transformation linéaire ne fera pas cela. Ce qu'il change, c'est la corrélation entre les effets principaux et leurs interactions. Même si A et B sont indépendants avec une corrélation de 0, la corrélation entre A et A: B dépendra des facteurs d'échelle.

Essayez ce qui suit dans une console R. Notez que rnormgénère simplement des échantillons aléatoires à partir d'une distribution normale avec les valeurs de population que vous définissez, dans ce cas 50 échantillons. La scalefonction standardise l'échantillon à une moyenne de 0 et SD de 1.

set.seed(1) # the samples will be controlled by setting the seed - you can try others
a <- rnorm(50, mean = 0, sd = 1)
b <- rnorm(50, mean = 0, sd = 1)
mean(a); mean(b)
# [1] 0.1004483 # not the population mean, just a sample
# [1] 0.1173265
cor(a ,b)
# [1] -0.03908718

La corrélation incidente est proche de 0 pour ces échantillons indépendants. Normalisez maintenant à la moyenne de 0 et à l'écart-type de 1.

a <- scale( a )
b <- scale( b )
cor(a, b)
# [1,] -0.03908718

Encore une fois, c'est exactement la même valeur même si la moyenne est 0 et SD = 1 pour les deux aet b.

cor(a, a*b)
# [1,] -0.01038144

Ceci est également très proche de 0. (a * b peut être considéré comme le terme d'interaction)

Cependant, le SD et la moyenne des prédicteurs diffèrent généralement un peu, alors changeons b. Au lieu de prendre un nouvel échantillon, je redimensionnerai l'original bpour avoir une moyenne de 5 et une SD de 2.

b <- b * 2 + 5
cor(a, b)
 # [1] -0.03908718

Encore une fois, cette corrélation familière que nous avons vue tout au long. La mise à l'échelle n'a aucun impact sur la corrélation entre aet b. Mais!!

cor(a, a*b)
# [1,] 0.9290406

Maintenant, cela aura une corrélation substantielle que vous pouvez faire disparaître en centrant et / ou en standardisant. Je vais généralement avec juste le centrage.

John
la source
1
+1 pour une réponse complète et compréhensible (avec code!)
Peter Flom - Réinstallez Monica
1
Il est également utile si vous souhaitez inclure, disons, un terme quadratique.
Aniko
absolument Aniko
John
1
Meilleure réponse - merci pour cela. J'ai peut-être fait du livre une injustice en le mal interprétant aussi, mais peut-être que cela valait la peine d'exposer mon ignorance.
Ross
7

Comme d'autres l'ont déjà mentionné, la normalisation n'a vraiment rien à voir avec la colinéarité.

Colinéarité parfaite

Commençons par ce qu'est la normalisation (alias normalisation), ce que nous entendons par soustraction de la moyenne et division par l'écart-type afin que la moyenne résultante soit égale à zéro et l'écart-type à l'unité. Donc, si la variable aléatoire a une moyenne et un écart type , alorsμ X σ XXμXσX

ZX=XμXσX

a la moyenne et l'écart type étant donné les propriétés de la valeur et de la variance attendues que , et , , où est rv et sont des constantes.μZ=0σZ=1E(X+a)=E(X)+aV a rE(bX)=bE(X)Var(X+a)=Var(X)Var(bX)=b2Var(X)Xa,b

On dit que deux variables et sont parfaitement colinéaires s'il existe de telles valeurs et quiXYλ0λ1

Y=λ0+λ1X

ce qui suit, si a une moyenne et un écart-type , alors a une moyenne et un écart-type . Maintenant, lorsque nous normalisons les deux variables (supprimons leurs moyennes et divisons par les écarts-types), nous obtenons ...μ X σ X Y μ Y = λ 0 + λ 1 μ X σ Y = λ 1 σ XXμXσXYμY=λ0+λ1μXσY=λ1σXZX=ZX

Corrélation

Bien sûr, la colinéarité parfaite n'est pas quelque chose que nous verrions souvent, mais des variables fortement corrélées peuvent également être un problème (et ce sont des espèces liées à la colinéarité). La normalisation affecte-t-elle donc la corrélation? Veuillez comparer les graphiques suivants montrant deux variables corrélées sur deux graphiques avant et après la mise à l'échelle: entrez la description de l'image ici

Pouvez-vous voir la différence? Comme vous pouvez le voir, j'ai volontairement supprimé les étiquettes des axes, donc pour vous convaincre que je ne triche pas, consultez les tracés avec des étiquettes ajoutées:

entrez la description de l'image ici

Mathématiquement parlant, si la corrélation est

Corr(X,Y)=Cov(X,Y)Var(X)Var(Y)

puis avec des variables colinéaires, nous avons

Corr(X,Y)=E[(XμX)(YμY)]σXσY=E[(XμX)(λ0+λ1Xλ0λ1μX)]σXλ1σX=E[(XμX)(λ1Xλ1μX)]σXλ1σX=E[(XμX)λ1(XμX)]σXλ1σX=λ1E[(XμX)(XμX)]σXλ1σX=E[(XμX)(XμX)]σXσX

maintenant depuis ,Cov(X,X)=Var(X)

=Cov(X,X)σX2=Var(X)Var(X)=1

Avec des variables standardisées

Corr(ZX,ZY)=E[(ZX0)(ZY0)]1×1=Cov(ZX,ZY)=Var(ZX)=1

puisque ...ZX=ZY

Enfin, notez que ce dont parle Kruschke , c'est que la standardisation des variables facilite la vie de l'échantillonneur Gibbs et conduit à réduire la corrélation entre l'interception et la pente dans le modèle de régression qu'il présente. Il ne dit pas que la standardisation des variables réduit la colinéarité entre les variables.

Tim
la source
0

La normalisation n'affecte pas la corrélation entre les variables. Ils restent exactement les mêmes. La corrélation capture la synchronisation de la direction des variables. Il n'y a rien dans la normalisation qui change la direction des variables.

Si vous souhaitez éliminer la multicolinéarité entre vos variables, je vous suggère d'utiliser l'analyse en composantes principales (ACP). Comme vous le savez, PCA est très efficace pour éliminer le problème de multicolinéarité. En revanche PCA rend les variables combinées (composantes principales P1, P2, etc ...) plutôt opaques. Un modèle PCA est toujours beaucoup plus difficile à expliquer qu'un modèle multivarié plus traditionnel.

Sympa
la source
Une alternative moderne, souvent meilleure, est la régularisation.
kjetil b halvorsen
J'ai testé la sélection des variables entre les algorithmes standard pas à pas et LASSO. Et, LASSO vient dans une seconde très lointaine. LASSO pénalise les influences variables, il peut sélectionner des variables faibles plutôt que des variables plus fortes. Cela peut même entraîner un changement des signes des variables. Et, il décompose l'ensemble du cadre de la signification statistique, des intervalles de confiance et des intervalles de prédiction. LASSO peut parfois fonctionner. Mais, regardez très attentivement le graphique MSE vs Lambda et les graphiques Coefficients vs. Lambda. C'est là que vous pouvez observer visuellement si votre modèle LASSO a fonctionné.
Sympa
0

Il ne réduit pas la colinéarité, il peut réduire le VIF. Généralement, nous utilisons VIF comme indicateur des problèmes de colinéarité.

Source: http://blog.minitab.com/blog/adventures-in-statistics-2/what-are-the-effects-of-multicollinearity-and-when-can-i-ignore-them

Bill Chen
la source
2
Bienvenue sur le site. À l'heure actuelle, il s'agit davantage d'un commentaire que d'une réponse. Vous pouvez le développer, peut-être en donnant un résumé des informations sur le lien, ou nous pouvons le convertir en commentaire pour vous. De plus, ma lecture de l'article lié n'est pas tout à fait que la normalisation réduit le VIF sans réduire la colinéarité. Leur exemple est très spécifique et plus nuancé que cela.
gung - Rétablir Monica
-3

La normalisation est un moyen courant de réduire la colinéarité. (Vous devriez pouvoir vérifier très rapidement que cela fonctionne en l'essayant sur quelques paires de variables.) Le fait que vous le fassiez régulièrement dépend de l'ampleur de la colinéarité du problème dans vos analyses.

Edit: je vois que j'étais en erreur. Cependant, la normalisation réduit la colinéarité avec les termes du produit (termes d'interaction).

rolando2
la source
Hmm, pourriez-vous expliquer? La standardisation ne fait que modifier la moyenne et la variance d'une variable aléatoire (respectivement à 0 et 1). Cela ne devrait pas changer la corrélation entre deux variables. Je vois comment la normalisation peut améliorer l'efficacité du calcul, mais pas comment elle réduit la multicolinéarité.
Charlie
Non, je suis perdu ... comment cela peut-il éventuellement changer la dépendance linéaire des éléments de colonne dans la matrice des prédicteurs. (N'est-ce pas de cela qu'il s'agit?)
Rosser
Bien qu'il ne soit pas exact que la normalisation modifie la colinéarité au sens purement mathématique, elle peut améliorer la stabilité numérique des algorithmes pour résoudre des systèmes linéaires. Cela pourrait être à l'origine de la confusion dans cette réponse.
whuber
La normalisation ne réduit tout simplement pas la multicolinéarité. Il ne modifie généralement pas du tout la corrélation entre les variables.
Sympa