DFFITS in R berechnen - so geht's

Von Fabian
Kategorie: R
Tags: Regression
Lesezeit: 4 Minuten

In der Statistik möchten wir oft wissen, wie einflussreich verschiedene Beobachtungen in Regressionsmodellen sind.

Eine Möglichkeit, den Einfluss von Beobachtungen zu berechnen, besteht in der Verwendung einer Metrik namens DFFITS, die für „Unterschied in den Anpassungen“ steht.

Diese Metrik gibt an, um wie viel sich die Vorhersagen eines Regressionsmodells ändern, wenn wir eine einzelne Beobachtung auslassen.

Dieses Tutorial zeigt ein schrittweises Beispiel für die Berechnung und Visualisierung von DFFITS für jede Beobachtung in einem Modell in R

Schritt 1: Erstellen Sie ein Regressionsmodell

Zunächst erstellen wir ein multiples lineares Regressionsmodell unter Verwendung des integrierten mtcars-Datasets in R:

#Laden Sie den Datensatz
data(mtcars)

# ein Regressionsmodell anpassen
model <- lm(mpg~disp+hp, data=mtcars)

#Modellzusammenfassung anzeigen
summary(model)

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.735904   1.331566  23.083  < 2e-16 ***
disp        -0.030346   0.007405  -4.098 0.000306 ***
hp          -0.024840   0.013385  -1.856 0.073679 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.127 on 29 degrees of freedom
Multiple R-squared:  0.7482,    Adjusted R-squared:  0.7309 
F-statistic: 43.09 on 2 and 29 DF,  p-value: 2.062e-09

Schritt 2: Berechnen Sie die DFFITS für jede Beobachtung

Als Nächstes verwenden wir die integrierte Funktion dffits(), um den DFFITS-Wert für jede Beobachtung im Modell zu berechnen:

#Berechnen Sie die DFFITS für jede Beobachtung im Modell
dffits <- as.data.frame(dffits(model))

#DFFITS für jede Beobachtung anzeigen
dffits

                    dffits(model)
Mazda RX4             -0.14633456
Mazda RX4 Wag         -0.14633456
Datsun 710            -0.19956440
Hornet 4 Drive         0.11540062
Hornet Sportabout      0.32140303
Valiant               -0.26586716
Duster 360             0.06282342
Merc 240D             -0.03521572
Merc 230              -0.09780612
Merc 280              -0.22680622
Merc 280C             -0.32763355
Merc 450SE            -0.09682952
Merc 450SL            -0.03841129
Merc 450SLC           -0.17618948
Cadillac Fleetwood    -0.15860270
Lincoln Continental   -0.15567627
Chrysler Imperial      0.39098449
Fiat 128               0.60265798
Honda Civic            0.35544919
Toyota Corolla         0.78230167
Toyota Corona         -0.25804885
Dodge Challenger      -0.16674639
AMC Javelin           -0.20965432
Camaro Z28            -0.08062828
Pontiac Firebird       0.67858692
Fiat X1-9              0.05951528
Porsche 914-2          0.09453310
Lotus Europa           0.55650363
Ford Pantera L         0.31169050
Ferrari Dino          -0.29539098
Maserati Bora          0.76464932
Volvo 142E            -0.24266054

In der Regel werden Beobachtungen mit DFFITS-Werten über einem Schwellenwert von 2√ p / n genauer betrachtet, wobei:

  • p: Anzahl der im Modell verwendeten Prädiktorvariablen
  • n: Anzahl der im Modell verwendeten Beobachtungen

In diesem Beispiel wäre der Schwellenwert 0,5:

#Anzahl der Prädiktoren im Modell finden
p <- length(model$coefficients)-1

# Anzahl der Beobachtungen finden
n <- nrow(mtcars)

# DFFITS-Schwellenwert berechnen
thresh <- 2*sqrt(p/n)

thresh

[1] 0.5

Wir können die Beobachtungen anhand ihrer DFFITS-Werte sortieren, um festzustellen, ob einer von ihnen den Schwellenwert überschreitet:

#sortieren der Beobachtungen von DFFITS, absteigend
dffits[order(-dffits['dffits(model)']), ]

 [1]  0.78230167  0.76464932  0.67858692  0.60265798  0.55650363  0.39098449
 [7]  0.35544919  0.32140303  0.31169050  0.11540062  0.09453310  0.06282342
[13]  0.05951528 -0.03521572 -0.03841129 -0.08062828 -0.09682952 -0.09780612
[19] -0.14633456 -0.14633456 -0.15567627 -0.15860270 -0.16674639 -0.17618948
[25] -0.19956440 -0.20965432 -0.22680622 -0.24266054 -0.25804885 -0.26586716
[31] -0.29539098 -0.32763355

Wir können sehen, dass die ersten fünf Beobachtungen einen DFFITS-Wert von mehr als 0,5 haben, was bedeutet, dass wir diese Beobachtungen möglicherweise genauer untersuchen möchten, um festzustellen, ob sie einen großen Einfluss auf das Modell haben.

Schritt 3: Visualisieren Sie die DFFITS für jede Beobachtung

Zuletzt können wir ein schnelles Diagramm erstellen, um die DFFITS für jede Beobachtung zu visualisieren:

#DFFITS-Werte für jede Beobachtung plotten
plot(dffits(model), type = 'h')

#horizontale Linien bei absoluten Werten für den Schwellenwert hinzufügen
abline(h = thresh, lty = 2)
abline(h = -thresh, lty = 2)

DFFITS in R

Die x-Achse zeigt den Index jeder Beobachtung im Datensatz an und der y-Wert zeigt den entsprechenden DFFITS-Wert für jede Beobachtung an.

Zusätzliche Ressourcen

So führen Sie eine einfache lineare Regression in R durch
So führen Sie eine mehrfache lineare Regression in R durch
So erstellen Sie ein Residuendiagramm in R

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: