Verwendung der Korrelationsfunktion in PostgreSQL
Eine Funktion, die nützlich sein kann, um zu bestimmen, wie zwei Zahlen zueinander in Beziehung stehen, ist die Korrelationsfunktion.
In diesem Tutorial erklären wir die PostrgreSQL-Funktion corr() und zeigen sie in der Praxis.
Der Korrelationskoeffizient ist eine weit verbreitete Methode zur Bestimmung der Stärke der Beziehung zwischen zwei Zahlen oder zwei Zahlengruppen. Dieser Koeffizient wird als Zahl zwischen -1 und 1 berechnet, wobei 1 die stärkste mögliche positive Korrelation und -1 die stärkste mögliche negative Korrelation ist.
Eine positive Korrelation bedeutet, dass sich die zweite Zahl erhöht, wenn sich eine Zahl erhöht.
Eine negative Korrelation bedeutet, dass die zweite Zahl abnimmt, wenn eine Zahl zunimmt.
Ob das Ergebnis der zweiten Zahl durch die erste verursacht wird oder nicht, wird hier nicht bestimmt, nur dass die Ergebnisse der beiden Zahlen gemeinsam eintreten.
Wenn die Formel 0 zurückgibt, besteht absolut KEINE Korrelation zwischen den beiden Zahlengruppen.
In einem Beispiel, in dem der Korrelationskoeffizient 0,7 beträgt, erhöht sich für jede Erhöhung der Zahl auf der x-Achse um 1 die Zahl auf der y-Achse um 0,7.
Je größer die Zahl ist, desto stärker ist die Korrelation. Ob das Zeichen „-“ vorangestellt ist oder nicht, spielt keine Rolle.
Einer der beliebtesten Korrelationskoeffizienten ist der Pearson-Korrelationskoeffizient. Weitere Informationen finden Sie in einem weiteren Tutorial hier.
Nachdem wir ein paar Tests mit der postgresql-Korrelationsfunktion durchgeführt hatten, stellte sich heraus, dass sie alle drei Male der Berechnung des Pearson-Korrelationskoeffizienten entsprach.
Bei der Verwendung der PostgreSQL-Funktion ist der wichtige Hinweis, dass es sich um eine Aggregationsfunktion handelt. Das heißt, es wird die Korrelation der Ganzheiten zweier Zahlenreihen berechnet. Die Korrelation von zwei Zahlen innerhalb der Reihe wird nicht angezeigt.
Die Verwendung der Korrelationsfunktion bereits in Postgres ist ziemlich einfach.
Wir haben es als aggregierte Funktion zweier Zahlenreihen verwendet, um den Korrelationskoeffizienten über eine Reihe von Website-Aktivitäten und Einnahmen in einer Chartio-Demo-Quelle zu bestimmen, die wir auf unserer Website haben.
Wenn man diese beiden Messungen in einem Streudiagramm darstellt, entsteht ein Muster positiver Korrelation. Die Verwendung des Korrelationskoeffizienten der PostgreSQL-Funktion zeigt ein Ergebnis von 0,9, was eine fast direkte Korrelation ist.
Diese Abfrage sieht folgendermaßen aus:
SELECT
corr("Amount", "Activities") as "Corr Coef Using PGSQL Func"
FROM(
SELECT
DATE_TRUNC('day', p.payment_date)::DATE AS "Day",
SUM(p.amount) AS "Amount",
COUNT(DISTINCT a.activity_id) AS "Activities"
FROM
public.payments p
INNER JOIN public.subscriptions s ON p.subscription_id = s.subscription_id
INNER JOIN public.users u ON s.user_id = u.user_id
INNER JOIN public.activity a ON a.user_id = u.user_id
GROUP BY 1) as a
In diesem speziellen Fall müssen Sie die Aggregationsfunktion der in einer Unterabfrage gesammelten Metriken verwenden. Dies ist sehr einfach, fügen Sie einfach die beiden Spalten, deren Korrelation Sie zu bestimmen versuchen, zwischen den durch eine Spalte getrennten Klammern hinzu, und Ihre Ausgabe ist der Korrelationskoeffizient, wie er von der Aggregationsfunktion berechnet wird, was wir im folgenden Tutorial zeigen fast genau das gleiche wie die Pearson-Formel.