sql >> Database teknologi >  >> RDS >> PostgreSQL

Pearsons korrelationskoefficientformel i SQL

Pearson-korrelationskoefficientformlen i SQL

Som vi diskuterede på vores side "Brug af PostgreSQL-korrelationsfunktionen", kan brugen af ​​korrelationen vise dig, hvordan to rækker af tal er relateret. Enten deres styrke som en positiv korrelation eller deres styrke som en negativ korrelation, og en hvilken som helst mængde styrke derimellem, inklusive ingen korrelation overhovedet.

For at opsummere en lille smule om korrelationskoefficienten:

Korrelationskoefficienten er en meget brugt metode til at bestemme styrken af ​​forholdet mellem to tal eller to sæt tal. Denne koefficient er beregnet som et tal mellem -1 og 1. 1 er den stærkest mulige positive korrelation og -1 er den stærkest mulige negative korrelation.

En positiv korrelation betyder, at når et tal stiger, vil det andet tal også stige.

En negativ korrelation betyder, at når et tal stiger, falder det andet tal.

Hvorvidt resultatet af det andet nummer er FORÅRSAGET af det første, bestemmes ikke her, bare at udfaldene af de to numre sker i samspil med hinanden.

Hvis formlen returnerer 0, er der absolut INGEN korrelation mellem de to sæt tal.

Pearsons formel ser sådan ud:

Som det blev beskrevet, er der måder at beregne Pearson-formlen på for et sæt tal i SQL.

Vi gjorde det her på et nummersæt fra vores demodatakilde, der kommer gratis med en prøveversion.

Den formel i SQL ser sådan ud:

((tot_sum - (amt_sum * act_sum / _count)) / sqrt((amt_sum_sq - pow(amt_sum, 2.0) / _count) * (act_sum_sq - pow(act_sum, 2.0) / _count))) 

Og brugt i en hel forespørgsel som denne:

VÆLG ((tot_sum - (amt_sum * act_sum / _count)) / sqrt((amt_sum_sq - pow(amt_sum, 2.0) / _count) * (act_sum_sq - pow(act_sum, 2.0) / _count))) AS "Corr Coef Using Pearson"FROM(SELECT sum("Amount") AS amt_sum, sum("Aktiviteter") AS act_sum, sum("Beløb" * "Beløb") AS amt_sum_sq, sum("Aktiviteter" * "Aktiviteter") AS act_sum_sq, sum("Amount" * "Activities") AS tot_sum, count(*) as _countFROM(SELECT DATE_TRUNC('day', p.payment_date)::DATE AS "Day", SUM(p.amount) AS " Amount", COUNT(DISTINCT a.activity_id) AS "Aktiviteter"FRA 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_idGROUP BY 1) as a) as bGROUP BY tot_sum, amt_sum, act_sum, _count, amt_sum_sq, act_sum_sq

Det, vi ville se fra denne forespørgsel, er præcis, hvad vi ville se ved hjælp af funktionen corr() i PostgreSQL:


  1. SQL Server Failover Cluster Installation -3

  2. MySQL COT() Funktion – Returner cotangensen af ​​et tal i MySQL

  3. opdatering af tabelrækker i postgres ved hjælp af underforespørgsel

  4. Slet forespørgsel For at slette rækker i MySQL