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.
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.
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.
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( b X) = bE( X)V a r (X+ a ) = V a r ( X)V a r (bX) = b2V a r (X)Xa , b
On dit que deux variables et sont parfaitement colinéaires s'il existe de telles valeurs et quiXOuiλ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:
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:
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.
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.
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é.
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.
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).
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é.
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?)
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.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.