Sie können die folgende Formel verwenden, um eine Median-IF-Funktion in Google Tabellen auszuführen:
=MEDIAN(IF(GROUP_RANGE=VALUE, MEDIAN_RANGE))
Diese Formel findet den Mittelwert aller Zellen in einem bestimmten Bereich, die …
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 Python berechnet wird.
Verwenden Sie die folgenden Schritte, um die Mahalanobis-Entfernung für jede Beobachtung in einem Datensatz in Python 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:
import numpy as np
import pandas as pd
import scipy as stats
data = {'score': [91, 93, 72, 87, 86, 73, 68, 87, 78, 99, 95, 76, 84, 96, 76, 80, 83, 84, 73, 74],
'hours': [16, 6, 3, 1, 2, 3, 2, 5, 2, 5, 2, 3, 4, 3, 3, 3, 4, 3, 4, 4],
'prep': [3, 4, 0, 3, 4, 0, 1, 2, 1, 2, 3, 3, 3, 2, 2, 2, 3, 3, 2, 2],
'grade': [70, 88, 80, 83, 88, 84, 78, 94, 90, 93, 89, 82, 95, 94, 81, 93, 93, 90, 89, 89]
}
df = pd.DataFrame(data,columns=['score', 'hours', 'prep','grade'])
df.head()
score hours prep grade
0 91 16 3 70
1 93 6 4 88
2 72 3 0 80
3 87 1 3 83
4 86 2 4 88
Schritt 2: Berechnen Sie die Mahalanobis-Entfernung für jede Beobachtung.
Als nächstes werden wir eine kurze Funktion schreiben, um die Mahalanobis-Entfernung zu berechnen.
#create Funktion zur Berechnung der Mahalanobis-Entfernung
def mahalanobis(x=None, data=None, cov=None):
x_mu = x - np.mean(data)
if not cov:
cov = np.cov(data.values.T)
inv_covmat = np.linalg.inv(cov)
left = np.dot(x_mu, inv_covmat)
mahal = np.dot(left, x_mu.T)
return mahal.diagonal()
#Erstellen Sie eine neue Spalte im Dataframe, die den Mahalanobis-Abstand für jede Zeile enthält
df['mahalanobis'] = mahalanobis(x=df, data=df[['score', 'hours', 'prep', 'grade']])
#Die ersten fünf Zeilen des Dataframes anzeigen
df.head()
score hours prep grade mahalanobis
0 91 16 3 70 16.501963
1 93 6 4 88 2.639286
2 72 3 0 80 4.850797
3 87 1 3 83 5.201261
4 86 2 4 88 3.828734
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.
from scipy.stats import chi2
# Berechnen Sie den p-Wert für jeden Mahalanobis-Abstand
df['p'] = 1 - chi2.cdf(df['mahalanobis'], 3)
# p-Werte für die ersten fünf Zeilen im Dataframe anzeigen
df.head()
score hours prep grade mahalanobis p
0 91 16 3 70 16.501963 0.000895
1 93 6 4 88 2.639286 0.450644
2 72 3 0 80 4.850797 0.183054
3 87 1 3 83 5.201261 0.157639
4 86 2 4 88 3.828734 0.280562
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.
Sie können die folgende Formel verwenden, um eine Median-IF-Funktion in Google Tabellen auszuführen:
=MEDIAN(IF(GROUP_RANGE=VALUE, MEDIAN_RANGE))
Diese Formel findet den Mittelwert aller Zellen in einem bestimmten Bereich, die …
Die prozentuale Änderung der Werte zwischen einer Periode und einer anderen Periode wird wie folgt berechnet:
Prozentuale Änderung = (Wert 2 – Wert 1 ) / Wert 1 * 100
Angenommen, ein Unternehmen macht in …