Mahalanobis-Abstand in R berechnen - so geht's

Von Fabian
Kategorie: R
Lesezeit: 4 Minuten

Der Mahalanobis-Abstand ist der Abstand zwischen zwei Punkten in einem multivariaten Raum. Es wird häufig verwendet, um Ausreißer in statistischen Analysen zu finden, die mehrere Variablen umfassen.

In diesem Tutorial wird erklärt, wie die Mahalanobis-Entfernung in R berechnet wird.

Beispiel: Mahalanobis-Abstand in R

Verwenden Sie die folgenden Schritte, um die Mahalanobis-Entfernung für jede Beobachtung in einem Datensatz in R zu berechnen.

Schritt 1: Erstellen Sie den Datensatz.

Zunächst erstellen wir einen Datensatz, in dem die Prüfungsergebnisse von 20 Studenten zusammen mit der Anzahl der Stunden, die sie verbracht haben, der Anzahl der Vorbereitungsprüfungen und der aktuellen Note im Kurs angezeigt werden:

#Daten erstellen
df = data.frame(score = c(91, 93, 72, 87, 86, 73, 68, 87, 78, 99, 95, 76, 84, 96, 76, 80, 83, 84, 73, 74),
        hours = c(16, 6, 3, 1, 2, 3, 2, 5, 2, 5, 2, 3, 4, 3, 3, 3, 4, 3, 4, 4),
        prep = c(3, 4, 0, 3, 4, 0, 1, 2, 1, 2, 3, 3, 3, 2, 2, 2, 3, 3, 2, 2),
        grade = c(70, 88, 80, 83, 88, 84, 78, 94, 90, 93, 89, 82, 95, 94, 81, 93, 93, 90, 89, 89))

#Die ersten sechs Zeileneilen anzeigen
head(df)

  score hours prep grade
1    91    16    3    70
2    93     6    4    88
3    72     3    0    80
4    87     1    3    83
5    86     2    4    88
6    73     3    0    84

Schritt 2: Berechnen Sie die Mahalanobis-Entfernung für jede Beobachtung.

Als nächstes verwenden wir die integrierte Funktion mahalanobis() in R, um den Mahalanobis-Abstand für jede Beobachtung zu berechnen, wobei die folgende Syntax verwendet wird:

Mahalanobis (x, center, cov)

wo:

  • x: Datenmatrix
  • center: mittlerer Vektor der Verteilung
  • cov: Kovarianzmatrix der Verteilung

Der folgende Code zeigt, wie diese Funktion für unseren Datensatz implementiert wird:

#Berechnen Sie den Mahalanobis-Abstand für jede Beobachtung
mahalanobis(df, colMeans(df), cov(df))

 [1] 16.5019630  2.6392864  4.8507973  5.2012612  3.8287341  4.0905633
 [7]  4.2836303  2.4198736  1.6519576  5.6578253  3.9658770  2.9350178
[13]  2.8102109  4.3682945  1.5610165  1.4595069  2.0245748  0.7502536
[19]  2.7351292  2.2642268

Schritt 3: Berechnen Sie den p-Wert für jede Mahalanobis-Entfernung.

Wir können sehen, dass einige der Mahalanobis-Entfernungen viel größer sind als andere. Um festzustellen, ob einer der Abstände statistisch signifikant ist, müssen wir ihre p-Werte berechnen.

Der p-Wert für jede Entfernung wird als der p-Wert berechnet, der der Chi-Quadrat-Statistik der Mahalanobis-Entfernung mit k-1 Freiheitsgraden entspricht, wobei k = Anzahl der Variablen. In diesem Fall verwenden wir also einen Freiheitsgrad von 4-1 = 3.

#Erstellen Sie eine neue Spalte im Dataframe, um Mahalanobis-Entfernungen zu speichern
df$mahal <- mahalanobis(df, colMeans(df), cov(df))

#Erstellen Sie eine neue Spalte im Dataframe, um den p-Wert für jede Mahalanobis-Entfernung zu speichern
df$p <- pchisq(df$mahal, df=3, lower.tail=FALSE)

#Dataframe anzeigen
df

   score hours prep grade      mahal            p
1     91    16    3    70 16.5019630 0.0008945642
2     93     6    4    88  2.6392864 0.4506437265
3     72     3    0    80  4.8507973 0.1830542407
4     87     1    3    83  5.2012612 0.1576392526
5     86     2    4    88  3.8287341 0.2805615121
6     73     3    0    84  4.0905633 0.2518495222
7     68     2    1    78  4.2836303 0.2324211504
8     87     5    2    94  2.4198736 0.4899458807
9     78     2    1    90  1.6519576 0.6476670033
10    99     5    2    93  5.6578253 0.1294978092
11    95     2    3    89  3.9658770 0.2651724541
12    76     3    3    82  2.9350178 0.4017530495
13    84     4    3    95  2.8102109 0.4218217836
14    96     3    2    94  4.3682945 0.2243432904
15    76     3    2    81  1.5610165 0.6682610031
16    80     3    2    93  1.4595069 0.6916471506
17    83     4    3    93  2.0245748 0.5673218169
18    84     3    3    90  0.7502536 0.8613248635
19    73     4    2    89  2.7351292 0.4342904353
20    74     4    2    89  2.2642268 0.5194087143

In der Regel wird ein p-Wert von weniger als 0,001 als Ausreißer betrachtet. Wir können sehen, dass die erste Beobachtung ein Ausreißer im Datensatz ist, da sie einen p-Wert von weniger als 0,001 hat.

Abhängig vom Kontext des Problems können Sie diese Beobachtung aus dem Datensatz entfernen, da es sich um einen Ausreißer handelt, der die Ergebnisse der Analyse beeinflussen kann.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: