Was ist ein Beispiel für perfekte Kollinearität in Bezug auf die Entwurfsmatrix ?
Ich hätte gerne ein Beispiel, in dem nicht geschätzt werden kann, weil nicht invertierbar ist.
Was ist ein Beispiel für perfekte Kollinearität in Bezug auf die Entwurfsmatrix ?
Ich hätte gerne ein Beispiel, in dem nicht geschätzt werden kann, weil nicht invertierbar ist.
Antworten:
Hier ist ein Beispiel mit 3 Variablen, , und , die durch die Gleichung zusammenhängen
wo
Die besonderen Daten sind
y x1 x2
1 4.520866 1 2
2 6.849811 2 4
3 6.539804 3 6
Es ist also offensichtlich, dass ein Vielfaches von daher haben wir eine perfekte Kollinearität.
Wir können das Modell als schreiben
wo:
Also haben wir
Nun berechnen wir die Determinante von :
In R können wir dies wie folgt zeigen:
> x1 <- c(1,2,3)
schaffen x2
, ein Vielfaches vonx1
> x2 <- x1*2
Erstellen y, eine lineare Kombination x1
, x2
und eine gewisse Zufälligkeit
> y <- x1 + x2 + rnorm(3,0,1)
beobachte das
> summary(m0 <- lm(y~x1+x2))
schätzt keinen Wert für den x2
Koeffizienten:
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.9512 1.6457 2.401 0.251
x1 1.0095 0.7618 1.325 0.412
x2 NA NA NA NA
Residual standard error: 0.02583 on 1 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 0.9999
F-statistic: 2.981e+04 on 1 and 1 DF, p-value: 0.003687
Die Modellmatrix ist:
> (X <- model.matrix(m0))
(Intercept) x1 x2
1 1 1 2
2 1 2 4
3 1 3 6
So ist
> (XXdash <- X %*% t(X))
1 2 3
1 6 11 16
2 11 21 31
3 16 31 46
die nicht invertierbar ist, wie durch gezeigt
> solve(XXdash)
Error in solve.default(XXdash) :
Lapack routine dgesv: system is exactly singular: U[3,3] = 0
Oder:
det (XXdash) [1] 0
Hier sind einige recht häufige Szenarien aufgeführt, die eine perfekte Multikollinearität erzeugen, dh Situationen, in denen die Spalten der Entwurfsmatrix linear abhängig sind. Man erinnere sich an die lineare Algebra, dass dies bedeutet, dass es eine lineare Kombination von Spalten der Entwurfsmatrix gibt (deren Koeffizienten nicht alle Null sind), die gleich Null ist. Ich habe einige praktische Beispiele beigefügt, um zu erklären, warum diese Falle so oft auftritt - ich bin fast allen begegnet!
Eine Variable ist ein Vielfaches einer anderen , unabhängig davon, ob es einen Intercept-Term gibt: Vielleicht, weil Sie dieselbe Variable zweimal mit unterschiedlichen Einheiten aufgezeichnet haben (z. B. "Länge in Zentimetern" ist genau 100-mal größer als "Länge in Metern") oder weil Sie haben eine Variable einmal als Rohzahl und einmal als Anteil oder Prozentsatz aufgezeichnet, wenn der Nenner festgelegt ist (z. B. "Fläche der kolonisierten Petrischale" und "Prozentsatz der kolonisierten Petrischale" sind exakte Vielfache voneinander, wenn die Fläche festgelegt ist von jeder Petrischale ist die gleiche). Wir haben Kollinearität, weil wenn wobei und Variablen sind (Spalten Ihrer Entwurfsmatrix) und eine Skalarkonstante ist, w x a 1 ( → w ) - a ( → x )ist eine lineare Kombination von Variablen, die gleich Null ist.
Es gibt einen Intercept-Term und eine Variable unterscheidet sich von einer anderen durch eine Konstante : Dies geschieht, wenn Sie eine Variable ( ) und sowohl das rohe als auch das zentrierte in Ihre Regression . Dies ist auch der Fall, wenn Ihre Variablen in verschiedenen Einheitensystemen gemessen werden, die sich durch eine Konstante unterscheiden, z. B. wenn "Temperatur in Kelvin" und als "Temperatur in ° C" ist, dann ist . Betrachten wir den Intercept-Term als eine Variable, die immer (dargestellt als eine Spalte von Einsen, , in der Entwurfsmatrix), dann gilt für eine Konstante x w w x w i = x i + 273,15 1 → 1 n w i = x i + k k 1 ( → w ) - 1 ( → x ) - k ( → 1 n ) w x 1bedeutet, dass eine lineare Kombination der Spalten , und der Entwurfsmatrix ist, die gleich Null ist.
Es gibt einen Intercept-Term und eine Variable ist durch eine affine Transformation einer anderen gegeben : dh Sie haben Variablen und , die durch wobei und Konstanten sind. Dies geschieht beispielsweise, wenn Sie eine Variable als und sowohl rohe als auch standardisierte Variablen in Ihre Regression . Es passiert auch, wenn Sie als "Temperatur in ° F" und als "Temperatur in ° C" , da diese Einheitensysteme keine gemeinsame Null haben, sondern durchx w i = a x i + b a b z i = x i - ˉ x xzwxwi=1,8xi+32b$einen$wiixiwi=einxi+b1( → w )-a( → x )-b( → 1 n)= → 0 a=1b=0. Oder nehmen wir in einem Geschäftskontext an, dass für jede Bestellung feste Kosten (z. B. für die Lieferung) sowie Kosten pro verkaufter Einheit anfallen. dann, wenn die Kosten der Bestellung und die Anzahl der bestellten Einheiten sind, haben wir . Die lineare Kombination von Interesse ist . Beachten Sie, dass, wenn , (3) (2) als Sonderfall enthält; wenn , enthält (3) (1) als Sonderfall.
Es gibt einen Intercept-Term und die Summe mehrerer Variablen ist fest (z. B. in der berühmten "Dummy-Variablenfalle") : Wenn Sie beispielsweise "Prozentsatz zufriedener Kunden", "Prozentsatz unzufriedener Kunden" und "Prozentsatz nicht zufriedener Kunden" haben noch nicht unzufrieden ", dann summieren sich diese drei Variablen immer (mit Ausnahme des Rundungsfehlers) auf 100. Eine dieser Variablen - oder alternativ der Intercept-Term - muss aus der Regression entfernt werden, um Kollinearität zu verhindern. Die "Dummy-Variablenfalle" tritt auf, wenn Sie Indikatorvariablen (häufiger, aber weniger nützlich als "Dummies" bezeichnet) für jede mögliche Ebene einer kategorialen Variablen verwenden. Nehmen wir zum Beispiel an, Vasen werden in roten, grünen oder blauen Farbschemata hergestellt. Wenn Sie die kategoriale Variable aufgezeichnet haben "red
green
und blue
wären binäre Variablen, gespeichert wie 1
für "ja" und 0
für "nein"), dann wäre für jede Vase nur eine der Variablen eine Eins, und daher red + green + blue = 1
. Da es für den Intercept-Term einen Vektor von Einsen gibt, ist dies die Linearkombination 1(red) + 1(green) + 1(blue) - 1(1) = 0
. Die übliche Abhilfe besteht darin, entweder den Abschnitt oder einen der Indikatoren (z. B. Auslassen red
) fallen zu lassen, der zu einer Grundlinie oder einem Referenzniveau wird. In diesem Fall würde der Regressionskoeffizient für green
die Änderung der mittleren Antwort angeben, die mit dem Umschalten von einer roten auf eine grüne Vase verbunden ist, wobei andere erklärende Variablen konstant bleiben.
Es gibt mindestens zwei Untergruppen von Variablen mit jeweils einer festen Summe , unabhängig davon, ob ein Intercept-Term vorliegt: Angenommen, die Vasen in (4) wurden in drei Größen hergestellt, und die kategoriale Variable für die Größe wurde als drei zusätzliche Indikatorvariablen gespeichert . Wir hätten large + medium + small = 1
. Dann haben wir die lineare Kombination 1(large) + 1(medium) + 1(small) - 1(red) - 1(green) - 1(blue) = 0
, auch wenn es keinen Intercept-Term gibt. Die beiden Teilmengen müssen nicht dieselbe Summe haben, z. B. wenn wir erklärende Variablen so dass jedes und dann .u i + v i = k 1 x i + y i = k 2 k 2 ( → U ) + k 2 ( → v ) - k 1 ( → w ) - k 1 ( → x ) = → 0
Eine Variable ist als Linearkombination mehrerer anderer Variablen definiert : Wenn Sie beispielsweise die Länge , die Breite und den Umfang jedes Rechtecks , ist sodass wir die Linearkombination . Ein Beispiel mit einem Abfangbegriff: Angenommen, ein Versandhandel hat zwei Produktlinien, und wir erfassen, dass die Bestellung aus des ersten Produkts zu Stückkosten und des zweiten Produkts zu Stückkosten mit besteht Versandkostenpauschale . Wenn wir auch die Auftragskosten einbeziehenw p p i = 2 l i + 2 w i 1 ( → p ) - 2 ( → l ) - 2 ( → w ) = → 0 i u i $ a v i $ b $ c $ x x i = a u i + b v i + c 1 ( → als erklärende Variable, dann ist und so . Dies ist eine offensichtliche Verallgemeinerung von (3). Es gibt uns auch eine andere Denkweise über (4): Wenn wir alle kennen, die aus einer Teilmenge von Variablen bestehen, deren Summe festgelegt ist, dann ist die verbleibende ihre Ergänzung und kann als lineare Kombination von ihnen und ihrer Summe ausgedrückt werden . Wenn wir wissen, dass 50% der Kunden zufrieden und 20% unzufrieden waren, dürfen 100% - 50% - 20% = 30% weder zufrieden noch unzufrieden sein. Wenn wir wissen, dass die Vase nicht rot ( ) und grün ( ) ist, wissen wir, dass sie nicht blau ( ) ist.red=0
green=1
blue = 1(1) - 1(red) - 1(green) = 1 - 0 - 1 = 0
Eine Variable ist konstant und Null , unabhängig davon, ob es einen Intercept-Term gibt: In einer Beobachtungsstudie ist eine Variable konstant, wenn Ihre Stichprobe keine ausreichende (beliebige!) Variation aufweist. Es kann Abweichungen in der Grundgesamtheit geben, die in Ihrer Stichprobe nicht erfasst werden, z. B. wenn ein sehr häufiger Modalwert vorliegt: Möglicherweise ist Ihre Stichprobengröße zu klein und es ist daher unwahrscheinlich, dass Werte enthalten sind, die vom Modus abweichen, oder Ihre Messungen wurden durchgeführt ungenügend genau, um kleine Abweichungen vom Modus zu erkennen. Alternativ kann es theoretische Gründe für die mangelnde Variation geben, insbesondere wenn Sie eine Teilpopulation untersuchen. Bei einer Studie über Neubauten in Los Angeles wäre es nicht verwunderlich, dass jeder Datenpunkt über AgeOfProperty = 0
und verfügtState = California
! In einer experimentellen Studie haben Sie möglicherweise eine unabhängige Variable gemessen, die sich unter experimenteller Kontrolle befindet. Sollte eine Ihrer erklärenden Variablen sowohl konstant als auch null sein, haben wir sofort, dass die Linearkombination (mit dem Koeffizienten null für alle anderen Variablen) .1 ( → x ) → 0
Es gibt einen Intercept-Term und mindestens eine Variable ist konstant : Wenn konstant ist, so dass jedes , dann ist die Linearkombination .x i = k ≤ 0 1 ( → x ) - k ( → 1 n ) = → 0
Mindestens zwei Variablen sind konstant , unabhängig davon, ob es einen Intercept-Term gibt: Wenn jedes und , dann ist die Linearkombination .
Die Anzahl der Spalten der Entwurfsmatrix übersteigt die Anzahl der Zeilen : Selbst wenn keine konzeptionelle Beziehung zwischen Ihren Variablen besteht, ist es mathematisch erforderlich, dass die Spalten Ihrer Entwurfsmatrix linear abhängig sind, wenn . Es ist einfach nicht möglich, linear unabhängige Vektoren in einem Raum mit einer Anzahl von Dimensionen kleiner als : Zum Beispiel, während Sie zwei unabhängige Vektoren auf ein Blatt Papier zeichnen können (eine zweidimensionale Ebene,) Jeder weitere Vektor, der auf der Seite gezeichnet wird, muss innerhalb ihres Bereichs liegen und daher eine lineare Kombination von ihnen sein. Beachten Sie, dass ein Intercept-Term eine Spalte mit Einsen zur Entwurfsmatrix beiträgt und somit als eine Ihrer Spalten zählt. (Dieses Szenario wird oft als "großes , kleines " -Problem bezeichnet. Siehe auch diese verwandte CV-Frage .)
Datenbeispiele mit R-Code
Jedes Beispiel gibt eine Entwurfsmatrix , die Matrix (dies ist immer quadratisch und symmetrisch) und . Beachten Sie, dass wir nicht schätzen können , wenn singulär ist (Null-Determinante, daher nicht invertierbar) . Die Bedingung, dass nicht singulär ist, entspricht der Bedingung, dass den vollen Rang hat, so dass seine Spalten linear unabhängig sind: siehe diese Math SE-Frage oder diese und ihre Umkehrung .
(1) Eine Spalte ist ein Vielfaches einer anderen
# x2 = 2 * x1
# Note no intercept term (column of 1s) is needed
X <- matrix(c(2, 4, 1, 2, 3, 6, 2, 4), ncol = 2, byrow=TRUE)
X
# [,1] [,2]
#[1,] 2 4
#[2,] 1 2
#[3,] 3 6
#[4,] 2 4
t(X) %*% X
# [,1] [,2]
#[1,] 18 36
#[2,] 36 72
round(det(t(X) %*% X), digits = 9)
#0
(2) Intercept-Term und eine Variable unterscheiden sich durch Konstante von der anderen
# x1 represents intercept term
# x3 = x2 + 2
X <- matrix(c(1, 2, 4, 1, 1, 3, 1, 3, 5, 1, 0, 2), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 2 4
#[2,] 1 1 3
#[3,] 1 3 5
#[4,] 1 0 2
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 4 6 14
#[2,] 6 14 26
#[3,] 14 26 54
round(det(t(X) %*% X), digits = 9)
#0
# NB if we drop the intercept, cols now linearly independent
# x2 = x1 + 2 with no intercept column
X <- matrix(c(2, 4, 1, 3, 3, 5, 0, 2), ncol = 2, byrow=TRUE)
X
# [,1] [,2]
#[1,] 2 4
#[2,] 1 3
#[3,] 3 5
#[4,] 0 2
t(X) %*% X
# [,1] [,2]
#[1,] 14 26
#[2,] 26 54
# Can you see how this matrix is related to the previous one, and why?
round(det(t(X) %*% X), digits = 9)
#80
# Non-zero determinant so X'X is invertible
(3) Intercept-Term und eine Variable ist die affine Transformation einer anderen
# x1 represents intercept term
# x3 = 2*x2 - 3
X <- matrix(c(1, 2, 1, 1, 1, -1, 1, 3, 3, 1, 0, -3), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 2 1
#[2,] 1 1 -1
#[3,] 1 3 3
#[4,] 1 0 -3
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 4 6 0
#[2,] 6 14 10
#[3,] 0 10 20
round(det(t(X) %*% X), digits = 9)
#0
# NB if we drop the intercept, cols now linearly independent
# x2 = 2*x1 - 3 with no intercept column
X <- matrix(c(2, 1, 1, -1, 3, 3, 0, -3), ncol = 2, byrow=TRUE)
X
# [,1] [,2]
#[1,] 2 1
#[2,] 1 -1
#[3,] 3 3
#[4,] 0 -3
t(X) %*% X
# [,1] [,2]
#[1,] 14 10
#[2,] 10 20
# Can you see how this matrix is related to the previous one, and why?
round(det(t(X) %*% X), digits = 9)
#180
# Non-zero determinant so X'X is invertible
(4) Der Intercept-Term und die Summe mehrerer Variablen sind festgelegt
# x1 represents intercept term
# x2 + x3 = 10
X <- matrix(c(1, 2, 8, 1, 1, 9, 1, 3, 7, 1, 0, 10), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 2 8
#[2,] 1 1 9
#[3,] 1 3 7
#[4,] 1 0 10
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 4 6 34
#[2,] 6 14 46
#[3,] 34 46 294
round(det(t(X) %*% X), digits = 9)
#0
# NB if we drop the intercept, then columns now linearly independent
# x1 + x2 = 10 with no intercept column
X <- matrix(c(2, 8, 1, 9, 3, 7, 0, 10), ncol = 2, byrow=TRUE)
X
# [,1] [,2]
#[1,] 2 8
#[2,] 1 9
#[3,] 3 7
#[4,] 0 10
t(X) %*% X
# [,1] [,2]
#[1,] 14 46
#[2,] 46 294
# Can you see how this matrix is related to the previous one, and why?
round(det(t(X) %*% X), digits = 9)
#2000
# Non-zero determinant so X'X is invertible
(4a) Abfangterm mit variabler Dummy-Falle
# x1 represents intercept term
# x2 + x3 + x4 = 1
X <- matrix(c(1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0), ncol = 4, byrow=TRUE)
X
# [,1] [,2] [,3] [,4]
#[1,] 1 0 0 1
#[2,] 1 1 0 0
#[3,] 1 0 1 0
#[4,] 1 1 0 0
#[5,] 1 0 1 0
t(X) %*% X
# [,1] [,2] [,3] [,4]
#[1,] 5 2 2 1
#[2,] 2 2 0 0
#[3,] 2 0 2 0
#[4,] 1 0 0 1
# This matrix has a very natural interpretation - can you work it out?
round(det(t(X) %*% X), digits = 9)
#0
# NB if we drop the intercept, then columns now linearly independent
# x1 + x2 + x3 = 1 with no intercept column
X <- matrix(c(0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 0 0 1
#[2,] 1 0 0
#[3,] 0 1 0
#[4,] 1 0 0
#[5,] 0 1 0
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 2 0 0
#[2,] 0 2 0
#[3,] 0 0 1
# Can you see how this matrix is related to the previous one?
round(det(t(X) %*% X), digits = 9)
#4
# Non-zero determinant so X'X is invertible
(5) Zwei Teilmengen von Variablen mit fester Summe
# No intercept term needed
# x1 + x2 = 1
# x3 + x4 = 1
X <- matrix(c(0,1,0,1,1,0,0,1,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0), ncol = 4, byrow=TRUE)
X
# [,1] [,2] [,3] [,4]
#[1,] 0 1 0 1
#[2,] 1 0 0 1
#[3,] 0 1 1 0
#[4,] 1 0 0 1
#[5,] 1 0 1 0
#[6,] 0 1 1 0
t(X) %*% X
# [,1] [,2] [,3] [,4]
#[1,] 3 0 1 2
#[2,] 0 3 2 1
#[3,] 1 2 3 0
#[4,] 2 1 0 3
# This matrix has a very natural interpretation - can you work it out?
round(det(t(X) %*% X), digits = 9)
#0
(6) Eine Variable ist eine lineare Kombination von anderen
# No intercept term
# x3 = x1 + 2*x2
X <- matrix(c(1,1,3,0,2,4,2,1,4,3,1,5,1,2,5), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 1 3
#[2,] 0 2 4
#[3,] 2 1 4
#[4,] 3 1 5
#[5,] 1 2 5
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 15 8 31
#[2,] 8 11 30
#[3,] 31 30 91
round(det(t(X) %*% X), digits = 9)
#0
(7) Eine Variable ist konstant und Null
# No intercept term
# x3 = 0
X <- matrix(c(1,1,0,0,2,0,2,1,0,3,1,0,1,2,0), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 1 0
#[2,] 0 2 0
#[3,] 2 1 0
#[4,] 3 1 0
#[5,] 1 2 0
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 15 8 0
#[2,] 8 11 0
#[3,] 0 0 0
round(det(t(X) %*% X), digits = 9)
#0
(8) Abfangterm und eine konstante Variable
# x1 is intercept term, x3 = 5
X <- matrix(c(1,1,5,1,2,5,1,1,5,1,1,5,1,2,5), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 1 5
#[2,] 1 2 5
#[3,] 1 1 5
#[4,] 1 1 5
#[5,] 1 2 5
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 5 7 25
#[2,] 7 11 35
#[3,] 25 35 125
round(det(t(X) %*% X), digits = 9)
#0
(9) Zwei konstante Variablen
# No intercept term, x2 = 2, x3 = 5
X <- matrix(c(1,2,5,2,2,5,1,2,5,1,2,5,2,2,5), ncol = 3, byrow=TRUE)
X
# [,1] [,2] [,3]
#[1,] 1 2 5
#[2,] 2 2 5
#[3,] 1 2 5
#[4,] 1 2 5
#[5,] 2 2 5
t(X) %*% X
# [,1] [,2] [,3]
#[1,] 11 14 35
#[2,] 14 20 50
#[3,] 35 50 125
round(det(t(X) %*% X), digits = 9)
#0
(10)
# Design matrix has 4 columns but only 3 rows
X <- matrix(c(1,1,1,1,1,2,4,8,1,3,9,27), ncol = 4, byrow=TRUE)
X
# [,1] [,2] [,3] [,4]
#[1,] 1 1 1 1
#[2,] 1 2 4 8
#[3,] 1 3 9 27
t(X) %*% X
# [,1] [,2] [,3] [,4]
#[1,] 3 6 14 36
#[2,] 6 14 36 98
#[3,] 14 36 98 276
#[4,] 36 98 276 794
round(det(t(X) %*% X), digits = 9)
#0
Es gibt eine Vielzahl von Möglichkeiten, sodass eine Datenspalte eine lineare Funktion Ihrer anderen Daten ist. Einige von ihnen sind offensichtlich (z. B. Meter im Vergleich zu Zentimetern), während andere subtiler sein können (z. B. Alter und Schuljahre für jüngere Kinder).
Anmerkungen zur Schreibweise: bezeichnen die erste Spalte von , die zweite Spalte usw. ... und bezeichnet einen Vektor von Einsen, der in der Entwurfsmatrix X enthalten ist wenn Sie eine Konstante in Ihre Regression einbeziehen.