Was ist Hutmatrix und Hebel in der klassischen multiplen Regression? Was sind ihre Rollen? Und warum benutzen Sie sie?
Bitte erläutern Sie sie oder geben Sie zufriedenstellende Buch- / Artikelreferenzen an, um sie zu verstehen.
Kommentare
- Auf dieser Website gibt es viele Beiträge, in denen die Hebelwirkung erwähnt wird. Sie können zunächst einige davon durchsuchen: stats.stackexchange.com/search?q=leverage+
Antwort
Die Hutmatrix $ \ bf H $ ist die Projektionsmatrix, die die Werte von ausdrückt die Beobachtungen in der unabhängigen Variablen $ \ bf y $ in Bezug auf die linearen Kombinationen der Spaltenvektoren der Modellmatrix $ \ bf X $ , das die Beobachtungen für jede der mehreren Variablen enthält, auf die Sie sich zurückbilden.
Natürlich $ \ bf y $ liegt normalerweise nicht im Spaltenbereich von $ \ bf X $ und es gibt einen Unterschied zwischen dieser Projektion, $ \ bf \ hat Y $ und die tatsächlichen Werte von $ \ bf Y $ . Dieser Unterschied ist der Rest oder $ \ bf \ varepsilon = YX \ beta $ :
Die geschätzten Koeffizienten, $ \ bf \ hat \ beta_i $ werden geometrisch als die lineare Kombination der Spaltenvektoren (Beobachtungen an Variablen $ \ bf x_i $ ) verstanden, die zur Erzeugung des projizierten Vektors $ \ bf \ hat Y $ . Wir haben das $ \ bf H \, Y = \ hat Y $ ; daher setzt die Mnemonik " das H den Hut auf das y. "
Die Hutmatrix wird berechnet als : $ \ bf H = X (X ^ TX) ^ {- 1} X ^ T $ .
Und die geschätzte $ \ bf \ hat \ beta_i $ -Koeffizienten werden natürlich als $ \ bf (X ^ TX) ^ {- 1} X ^ T berechnet $ .
Jeder Punkt des Datensatzes versucht, die gewöhnliche OLS-Linie (Least Squares) zu sich selbst zu ziehen. Die Punkte, die am äußersten Rand der Regressorwerte weiter entfernt sind, haben jedoch eine größere Hebelwirkung. Hier ist ein Beispiel für einen extrem asymptotischen Punkt (in Rot), der die Regressionslinie wirklich von einer logischeren Anpassung wegzieht:
Wo liegt also der Zusammenhang zwischen diesen beiden Konzepten: Der Leverage Score einer bestimmten Zeile oder Die Beobachtung im Datensatz findet sich im entsprechenden Eintrag in der Diagonale der Hutmatrix. Für die Beobachtung $ i $ wird der Hebelwert in $ \ bf H_ {ii} $ gefunden. Dieser Eintrag in der Hutmatrix hat direkten Einfluss darauf, wie der Eintrag $ y_i $ zu $ \ hat y_i $ führt (hohe Hebelwirkung der Beobachtung $ i \ text {-th} $ $ y_i $ bei der Bestimmung des eigenen Vorhersagewerts $ \ hat y_i $ ):
Da die Hutmatrix eine Projektionsmatrix ist, sind ihre -Eigenwerte $ 0 $ und $ 1 $ . Daraus folgt, dass die Kurve (Summe der diagonalen Elemente – in diesem Fall Summe der $ 1 $ „s) der Rang des Spaltenraums ist, solange es“ gibt “ so viele Nullen wie die Dimension des Nullraums. Daher sind die Werte in der Diagonale der Hutmatrix kleiner als eins (trace = sum Eigenwerte), und ein Eintrag hat eine hohe Hebelwirkung, wenn $ > 2 \ sum_ {i = 1} ^ {n} h_ {ii} / n $ wobei $ n $ das ist Anzahl der Zeilen.
Die Hebelwirkung eines Ausreißerdatenpunkts in der Modellmatrix kann auch manuell als eins minus dem Verhältnis des Residuums für den Ausreißer berechnet werden, wenn der tatsächliche Ausreißer im OLS-Modell über dem enthalten ist Residuum für denselben Punkt, an dem die angepasste Kurve berechnet wird, ohne die dem Ausreißer entsprechende Zeile einzuschließen: $$ Leverage = 1- \ frac {\ text {Residuum-OLS mit Ausreißer}} {\ text {restliches OLS ohne Ausreißer}} $$ In R gibt die Funktion hatvalues()
diese Werte für jeden Punkt zurück.
Verwenden des ersten Datenpunkts in der Datensatz {mtcars}
in R:
fit = lm(mpg ~ wt, mtcars) # OLS including all points X = model.matrix(fit) # X model matrix hat_matrix = X%*%(solve(t(X)%*%X)%*%t(X)) # Hat matrix diag(hat_matrix)[1] # First diagonal point in Hat matrix fitwithout1 = lm(mpg ~ wt, mtcars[-1,]) # OLS excluding first data point. new = data.frame(wt=mtcars[1,"wt"]) # Predicting y hat in this OLS w/o first point. y_hat_without = predict(fitwithout1, newdata=new) # ... here it is. residuals(fit)[1] # The residual when OLS includes data point. lev = 1 - (residuals(fit)[1]/(mtcars[1,"mpg"] - y_hat_without)) # Leverage all.equal(diag(hat_matrix)[1],lev) #TRUE