Hoe de mahalanobis-afstand in r te berekenen
De Mahalanobis-afstand is de afstand tussen twee punten in een multivariate ruimte.
Het wordt vaak gebruikt om uitschieters te detecteren in statistische analyses waarbij meerdere variabelen betrokken zijn.
In deze tutorial wordt uitgelegd hoe u de Mahalanobis-afstand in R kunt berekenen.
Voorbeeld: Mahalanobis-afstand in R
Gebruik de volgende stappen om de Mahalanobis-afstand voor elke waarneming in een dataset in R te berekenen.
Stap 1: Maak de gegevensset.
Eerst gaan we een dataset maken die de examenscores van 20 studenten weergeeft, samen met het aantal uren dat ze hebben gestudeerd, het aantal oefenexamens dat ze hebben afgelegd en hun huidige cijfer voor de cursus:
#create data 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)) #view first six rows of data 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
Stap 2: Bereken de Mahalanobis-afstand voor elke waarneming.
Vervolgens zullen we de in R ingebouwde functie mahalanobis() gebruiken om de Mahalanobis-afstand voor elke waarneming te berekenen, waarbij de volgende syntaxis wordt gebruikt:
mahalanobis (x, midden, cov)
Goud:
- x: gegevensmatrix
- midden: gemiddelde vector van de verdeling
- cov: verdelingscovariantiematrix
De volgende code laat zien hoe u deze functie voor onze dataset implementeert:
#calculate Mahalanobis distance for each observation
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
Stap 3: Bereken de p-waarde voor elke Mahalanobis-afstand.