Použití korelační funkce v PostgreSQL
Jednou funkcí, která může být užitečná při určování, jak spolu dvě čísla souvisí, je korelační funkce.
V tomto tutoriálu vysvětlíme funkci corr() PostrgreSQL a také si ji ukážeme v reálném světě.
Korelační koeficient je široce používaná metoda stanovení síly vztahu mezi dvěma čísly nebo dvěma sadami čísel. Tento koeficient se vypočítá jako číslo mezi -1 a 1. 1 je nejsilnější možná pozitivní korelace a -1 je nejsilnější možná negativní korelace.
Kladná korelace znamená, že jak se jedno číslo zvyšuje, druhé číslo se také zvyšuje.
Záporná korelace znamená, že jak se jedno číslo zvyšuje, druhé číslo klesá.
Zda je nebo není výsledek druhého čísla ZPŮSOBEN tím prvním, zde není určeno, pouze to, že výsledky dvou čísel jsou ve vzájemné shodě.
Pokud vzorec vrátí 0, pak mezi těmito dvěma sadami čísel neexistuje absolutně ŽÁDNÁ korelace.
V příkladu, kde je korelační koeficient 0,7, se pro každé zvýšení o 1 čísla na ose x číslo na ose y zvýší o 0,7.
Čím větší číslo, tím silnější je korelace. Nezáleží na tom, zda mu předchází znaménko „-“.
Jedním z nejoblíbenějších korelačních koeficientů je Pearsonův korelační koeficient a více informací lze nalézt v jiném tutoriálu zde.
Poté, co jsme provedli několik testů postgresql korelační funkce, se třikrát vyrovnala výpočtu Pearsonova korelačního koeficientu.
Při používání funkce PostgreSQL je důležitá poznámka, že se jedná o agregační funkci. To znamená, že vypočítá korelaci celků dvou řad čísel. Nezobrazí korelaci dvou čísel v řadě.
Použití korelační funkce již v postgresu je docela jednoduché.
Použili jsme to jako agregovanou funkci dvou řad čísel k určení korelačního koeficientu za řadu časových aktivit webových stránek a příjmů v ukázkovém zdroji Chartio, který máme na našem webu.
Vynesením těchto dvou měření do bodového grafu se objeví vzor pozitivní korelace. Použití korelačního koeficientu Funkce PostgreSQL ukazuje výsledek 0,9, což je téměř přímá korelace.
Tento dotaz vypadá takto:
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
V tomto konkrétním případě budete muset použít funkci agregace metrik shromážděných v dílčím dotazu. To je velmi jednoduché, stačí přidat dva sloupce, ve kterých se pokoušíte určit korelaci, mezi závorky oddělené sloupcem a vaším výstupem bude korelační koeficient vypočítaný agregační funkcí, která, jak zdůrazňujeme v následujícím tutoriálu, je téměř přesně stejný jako Pearsonova formule.