HOWTO · Python
NumPy-Korrelationsfunktion
Dieses Tutorial erklärt, wie Sie mit NumPys Korrelationsfunktion `np.corrcoef()` die Pearson-Korrelation in Python berechnen und interpretieren.
Auf dieser Seite
Verwenden Sie NumPys Funktion np.corrcoef(), um Pearson-Korrelationskoeffizienten für gepaarte numerische Daten zu berechnen. Die Einträge außerhalb der Diagonalen im Ergebnis zeigen den Koeffizienten zwischen den Arrays. Ein optionales Streudiagramm hilft dabei, ihr Muster zu untersuchen.
Korrelation in NumPy
Ein Korrelationskoeffizient fasst Richtung und Stärke des Zusammenhangs zwischen zwei Variablen zusammen. Ein positiver Koeffizient beschreibt Werte, die tendenziell gemeinsam steigen. Bei einem negativen Koeffizienten sinkt eine Variable tendenziell, wenn die andere steigt. Ein Koeffizient nahe null weist auf einen schwachen linearen Zusammenhang hin, schließt aber einen nichtlinearen Zusammenhang nicht aus. Korrelation beschreibt einen Zusammenhang und beweist nicht, dass eine Variable Veränderungen der anderen verursacht.
Pearson-, Kendall- und Spearman-Korrelation sind unterschiedliche Zusammenhangsmaße. np.corrcoef() berechnet die Pearson-Korrelation, die einen linearen Zusammenhang anhand der Kovarianz und der Standardabweichungen der Variablen beschreibt. Die Funktion berechnet keine Kendall- oder Spearman-Korrelation; verwenden Sie dafür eine geeignete Funktion aus SciPy. Für die Pearson-Korrelation in NumPy lautet der genaue Funktionsname np.corrcoef().
Mit der Funktion np.corrcoef() Korrelation in Python berechnen
Übergeben Sie np.corrcoef() zwei Arrays mit gepaarten Beobachtungen. Die Arrays sollten gleich lang sein, damit jede Position ein Beobachtungspaar darstellt. Die Funktion gibt eine 2×2-Matrix zurück: Jeder Eintrag außerhalb der Diagonalen ist der Pearson-Koeffizient zwischen den Arrays, und beide Einträge sind gleich. Wenn beide Korrelationen definiert sind, haben die Diagonaleinträge den Wert 1, da jede Variable perfekt mit sich selbst korreliert.
Die Arrays enthalten hier zehn gepaarte Werte. Führen Sie dieses Beispiel aus, um ihren Koeffizienten zu berechnen:
import numpy as np
a = np.arange(20, 30)
b = np.array([8, 12, 29, 33, 60, 48, 21, 44, 78, 96])
x = np.corrcoef(a, b)
print(x)
Ausgabe:
[[1. 0.82449488]
[0.82449488 1. ]]
Die beiden Einträge außerhalb der Diagonalen liegen ungefähr bei 0.82 und zeigen für diese Beobachtungen einen positiven linearen Zusammenhang an. Lesen Sie einen der beiden Einträge ab, um den Koeffizienten zwischen den Arrays zu erhalten; der wiederholte Wert ergibt sich aus der Symmetrie der Korrelationsmatrix. Für Variablen mit definierter, von null verschiedener Streuung beträgt der Diagonaleintrag 1. Ist eine Eingabe konstant, ist ihre Standardabweichung null und ihre Pearson-Korrelation nicht definiert. Das Ergebnis kann dann NaN statt eines nutzbaren Koeffizienten enthalten. Prüfen Sie Ihre Daten und behandeln Sie solche Ergebnisse, bevor Sie sie in weiteren Berechnungen verwenden.
Mit der Matplotlib-Bibliothek Korrelationsdiagramme erstellen
Ein Streudiagramm stellt jede gepaarte Beobachtung an den zugehörigen Koordinaten (x, y) dar. Es veranschaulicht die Daten hinter einem Koeffizienten und kann Gruppen oder gekrümmte Muster sichtbar machen, die eine einzelne lineare Kennzahl möglicherweise nicht gut beschreibt. Betrachten Sie das Diagramm zusammen mit dem berechneten Koeffizienten: Ein sichtbarer Aufwärtstrend passt zu einer positiven Korrelation, aber das Diagramm allein berechnet den Zahlenwert nicht und belegt ihn auch nicht.
Das folgende optionale Beispiel gibt die Koeffizientenmatrix aus und zeigt die gepaarten Beobachtungen an. Es verwendet Matplotlibs pyplot-Schnittstelle. Installieren Sie NumPy und Matplotlib in Ihrer Python-Umgebung, bevor Sie es ausführen. Ob und wie das Diagrammfenster angezeigt wird, hängt von der Umgebung ab.
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
x = np.arange(20, 30)
y = np.array([8, 12, 29, 33, 60, 48, 21, 44, 78, 96])
print(np.corrcoef(x, y))
# %matplotlib inline
matplotlib.style.use("ggplot")
plt.scatter(x, y)
plt.show()
In diesem Beispiel steigen die Punkte im Allgemeinen mit zunehmendem x an, passend zum positiven Koeffizienten von np.corrcoef(). Reale Datensätze können vielfältigere Muster zeigen. Untersuchen Sie daher beim Interpretieren eines Zusammenhangs sowohl die gepaarten Werte als auch den Koeffizienten.