Come calcolare la distanza di mahalanobis in r
La distanza di Mahalanobis è la distanza tra due punti in uno spazio multivariato.
Viene spesso utilizzato per rilevare valori anomali nelle analisi statistiche che coinvolgono più variabili.
Questo tutorial spiega come calcolare la distanza di Mahalanobis in R.
Esempio: distanza Mahalanobis in R
Utilizzare i passaggi seguenti per calcolare la distanza di Mahalanobis per ciascuna osservazione in un set di dati in R.
Passaggio 1: crea il set di dati.
Innanzitutto, creeremo un set di dati che mostra i punteggi degli esami di 20 studenti, insieme al numero di ore trascorse a studiare, il numero di esami pratici che hanno sostenuto e il loro voto attuale nel corso:
#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
Passaggio 2: calcolare la distanza di Mahalanobis per ciascuna osservazione.
Successivamente, utilizzeremo la funzione mahalanobis() incorporata in R per calcolare la distanza Mahalanobis per ciascuna osservazione, che utilizza la seguente sintassi:
mahalanobis (x, centro, cov)
Oro:
- x: matrice dei dati
- centro: vettore medio della distribuzione
- cov: matrice di covarianza della distribuzione
Il codice seguente mostra come implementare questa funzione per il nostro set di dati:
#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
Passaggio 3: calcolare il valore p per ciascuna distanza Mahalanobis.