Reduziert die Standardisierung unabhängiger Variablen die Kollinearität?

11

Ich habe einen sehr guten Text über Bayes / MCMC gefunden. Die IT schlägt vor, dass eine Standardisierung Ihrer unabhängigen Variablen einen MCMC-Algorithmus (Metropolis) effizienter macht, aber auch die (Mehrfach-) Kollinearität verringert. Kann das wahr sein? Ist das etwas, was ich als Standard tun sollte? (Entschuldigung).

Kruschke 2011, Bayesianische Datenanalyse. (AP)

bearbeiten: zum Beispiel

     > 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 

Dies hat die Korrelation oder daher die wenn auch begrenzte lineare Abhängigkeit von Vektoren nicht verringert.

Was ist los?

R.

Rosser
quelle

Antworten:

17

Die Kollinearität zwischen den Haupteffekten ändert sich überhaupt nicht. Skalierung auch nicht. Eine lineare Transformation wird das nicht tun. Was sich ändert, ist die Korrelation zwischen den Haupteffekten und ihren Wechselwirkungen. Selbst wenn A und B mit einer Korrelation von 0 unabhängig sind, hängt die Korrelation zwischen A und A: B von Skalierungsfaktoren ab.

Versuchen Sie Folgendes in einer R-Konsole. Beachten Sie, dass rnormnur Zufallsstichproben aus einer Normalverteilung mit von Ihnen festgelegten Populationswerten generiert werden, in diesem Fall 50 Stichproben. Die scaleFunktion standardisiert die Probe auf einen Mittelwert von 0 und eine SD von 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

Die zufällige Korrelation liegt für diese unabhängigen Stichproben nahe 0. Normalisieren Sie nun auf 0 und SD auf 1.

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

Dies ist wiederum genau der gleiche Wert, obwohl der Mittelwert 0 und SD = 1 für beide aund ist b.

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

Dies ist auch sehr nahe bei 0. (a * b kann als Interaktionsterm betrachtet werden)

Normalerweise unterscheiden sich SD und Mittelwert der Prädiktoren jedoch erheblich. Lassen Sie uns also etwas ändern b. Anstatt eine neue Probe zu nehmen, skaliere ich das Original neu b, um einen Mittelwert von 5 und eine SD von 2 zu erhalten.

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

Wieder diese vertraute Korrelation, die wir die ganze Zeit gesehen haben. Die Skalierung hat keinen Einfluss auf die Korrelation zwischen aund b. Aber!!

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

Dies hat eine erhebliche Korrelation, die Sie durch Zentrieren und / oder Standardisieren beseitigen können. Ich gehe im Allgemeinen nur mit der Zentrierung.

John
quelle
1
+1 für umfassende und verständliche Antwort (mit Code!)
Peter Flom - Reinstate Monica
1
Dies ist auch nützlich, wenn Sie beispielsweise einen quadratischen Begriff einfügen möchten.
Aniko
absolut Aniko
John
1
Beste Antwort - danke dafür. Ich habe dem Buch vielleicht Unrecht getan, es auch falsch zu interpretieren, aber vielleicht hat es sich gelohnt, meine Unwissenheit aufzudecken.
Rosser
7

Wie andere bereits erwähnt haben, hat Standardisierung wirklich nichts mit Kollinearität zu tun.

Perfekte Kollinearität

Beginnen wir mit dem, was Standardisierung (auch bekannt als Normalisierung) ist. Was wir damit meinen, ist das Subtrahieren des Mittelwerts und das Teilen durch die Standardabweichung, so dass der resultierende Mittelwert gleich Null und die Standardabweichung gleich Eins ist. Wenn also die Zufallsvariable den Mittelwert μ X und die Standardabweichung σ X hat , dannXμXσX

ZX=XμXσX

μZ=0σZ=1E(X.+ein)=E.((X.)+einE.((bX.)=bE.((X.)V.einr((X.+ein)=V.einr((X.)V.einr((bX.)=b2V.einr((X.)X.ein,b

X.Y.λ0λ1

Y.=λ0+λ1X.

X.μX.σX.Y.μY.=λ0+λ1μX.σY.=λ1σX.Z.X.=Z.X.

Korrelation

Natürlich ist perfekte Kollinearität nicht etwas, was wir so oft sehen würden, aber stark korrelierte Variablen können ebenfalls ein Problem sein (und sie sind verwandte Arten mit Kollinearität). Beeinflusst die Standardisierung die Korrelation? Bitte vergleichen Sie die folgenden Diagramme mit zwei korrelierten Variablen auf zwei Diagrammen vor und nach der Skalierung: Geben Sie hier die Bildbeschreibung ein

Erkennst du den Unterschied? Wie Sie sehen können, habe ich die Achsenbeschriftungen absichtlich entfernt. Um Sie davon zu überzeugen, dass ich nicht betrüge, sehen Sie sich die Diagramme mit hinzugefügten Beschriftungen an:

Geben Sie hier die Bildbeschreibung ein

Mathematisch gesehen, wenn Korrelation ist

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

dann haben wir mit kollinearen Variablen

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

now since Cov(X,X)=Var(X),

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

While with standardized variables

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

since ZX=ZY...

Finally, notice that what Kruschke is talking about, is that standardizing of the variables makes life easier for the Gibbs sampler and leads to reducing of correlation between intercept and slope in the regression model he presents. He doesn't say that standardizing variables reduces collinearity between the variables.

Tim
quelle
0

Standardization does not affect the correlation between variables. They remain exactly the same. The correlation captures the synchronization of the direction of the variables. There is nothing in standardization that does change the direction of the variables.

If you want to eliminate multicollinearity between your variables, I suggest using Principal Component Analysis (PCA). As you know PCA is very effective in eliminating the multicollinearity problem. On the other hand PCA renders the combined variables (principal components P1, P2, etc...) rather opaque. A PCA model is always a lot more challenging to explain than a more traditional multivariate one.

Sympa
quelle
Eine moderne, oft bessere Alternative ist die Regularisierung.
kjetil b halvorsen
Ich habe die Variablenauswahl zwischen standardmäßigen schrittweisen Algorithmen und LASSO getestet. Und LASSO kommt in einer sehr fernen Sekunde. LASSO bestraft variable Einflüsse, es kann schwache Variablen gegenüber stärkeren Variablen auswählen. Es kann sogar dazu führen, dass sich die Vorzeichen von Variablen ändern. Außerdem wird der gesamte Rahmen der statistischen Signifikanz, der Konfidenzintervalle und der Vorhersageintervalle aufgeschlüsselt. LASSO kann manchmal arbeiten. Schauen Sie sich jedoch die Diagramme MSEs vs. Lambda und die Diagramme Coefficients vs. Lambda genau an. Hier können Sie visuell beobachten, ob Ihr LASSO-Modell funktioniert hat.
Sympa
0

Es reduziert nicht die Kollinearität, es kann das VIF reduzieren. In der Regel verwenden wir VIF als Indikator für Bedenken hinsichtlich der Kollinearität.

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

Bill Chen
quelle
2
Willkommen auf der Website. Derzeit ist dies eher ein Kommentar als eine Antwort. Sie können es erweitern, indem Sie möglicherweise eine Zusammenfassung der Informationen unter dem Link angeben, oder wir können es in einen Kommentar für Sie umwandeln. Außerdem ist meine Lektüre des verlinkten Beitrags nicht ganz so, dass durch Standardisierung das VIF reduziert wird, ohne die Kollinearität zu verringern. Ihr Beispiel ist sehr spezifisch und nuancierter.
Gung - Reinstate Monica
-3

Standardisierung ist ein gängiger Weg, um die Kollinearität zu reduzieren. (Sie sollten in der Lage sein, sehr schnell zu überprüfen, ob es funktioniert, indem Sie es an einigen Variablenpaaren ausprobieren.) Ob Sie dies routinemäßig tun, hängt davon ab, wie stark die Kollinearität in Ihren Analysen ist.

Bearbeiten: Ich sehe, ich war im Irrtum. Standardisierung reduziert jedoch die Kollinearität mit Produktbegriffen (Interaktionsterme).

rolando2
quelle
Hmm, kannst du das erklären? Durch die Standardisierung werden nur der Mittelwert und die Varianz einer Zufallsvariablen geändert (auf 0 bzw. 1). Dies sollte die Korrelation zwischen zwei Variablen nicht ändern. Ich sehe, wie Standardisierung die Recheneffizienz verbessern kann, aber nicht, wie sie die Multicolinearität verringert.
Charlie
Nein, ich bin verloren ... wie kann das möglicherweise die lineare Abhängigkeit der Spaltenelemente in der Matrix der Prädiktoren ändern? (Ist es nicht das, worum es bei Kollinearität geht?)
Rosser
Obwohl es nicht korrekt ist, dass die Standardisierung die Kollinearität im rein mathematischen Sinne ändert, kann sie die numerische Stabilität von Algorithmen zur Lösung linearer Systeme verbessern. Dies könnte die Quelle der Verwirrung in dieser Antwort sein.
whuber
Standardisierung reduziert die Multikollinearität einfach nicht. Die Korrelation zwischen Variablen wird normalerweise überhaupt nicht geändert.
Sympa