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

Utilizzo della funzione di correlazione di PostgreSQL

Utilizzo della funzione di correlazione in PostgreSQL

Una funzione che può essere utile per determinare la relazione tra due numeri è la funzione di correlazione.

In questo tutorial spiegheremo la funzione corr() PostrgreSQL e la mostreremo nell'uso nel mondo reale.

Il coefficiente di correlazione è un metodo ampiamente utilizzato per determinare la forza della relazione tra due numeri o due insiemi di numeri. Questo coefficiente è calcolato come un numero compreso tra -1 e 1. 1 è la correlazione positiva più forte possibile e -1 è la correlazione negativa più forte possibile.

Una correlazione positiva significa che all'aumentare di un numero aumenterà anche il secondo numero.

Una correlazione negativa significa che all'aumentare di un numero, il secondo numero diminuisce.

Qui non viene determinato se l'esito del secondo numero sia CAUSATO o meno dal primo, solo che gli esiti dei due numeri accadono di concerto tra loro.

Se la formula restituisce 0, allora NON c'è assolutamente alcuna correlazione tra i due insiemi di numeri.

In un esempio in cui il coefficiente di correlazione è .7, per ogni aumento di 1 del numero sull'asse x il numero sull'asse y aumenta di .7.

Maggiore è il numero, più forte è la correlazione. Che sia preceduto o meno dal segno "-" non importa.

Uno dei coefficienti di correlazione più popolari è il coefficiente di correlazione di Pearson e ulteriori informazioni possono essere trovate in un altro tutorial qui.

Dopo aver eseguito alcuni test sulla funzione di correlazione postgresql, è risultato uguale al calcolo del coefficiente di correlazione di Pearson tutte e tre le volte.

Durante l'utilizzo della funzione PostgreSQL, la nota importante è che si tratta di una funzione di aggregazione. Ciò significa che calcolerà la correlazione della totalità di due serie di numeri. Non visualizzerà la correlazione di due numeri all'interno della serie.

Usare la funzione di correlazione già in Postgres è piuttosto semplice.

Lo abbiamo utilizzato come funzione aggregata di due serie di numeri per determinare il coefficiente di correlazione su una serie di tempo delle attività del sito Web e delle entrate in una fonte demo Chartio che abbiamo sul nostro sito.

Tracciando queste due misurazioni su un grafico a dispersione, emerge un modello di correlazione positiva. Usando il coefficiente di correlazione, la funzione PostgreSQL mostra un risultato di 0,9 che è una correlazione quasi diretta.

Quella query è simile a questa:

    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 questo caso particolare sarà necessario utilizzare la funzione di aggregazione delle metriche raccolte in una sottoquery. Questo è molto semplice, basta aggiungere le due colonne di cui stai cercando di determinare la correlazione tra parentesi separate da una colonna e il tuo output sarà il coefficiente di correlazione calcolato dalla funzione di aggregazione che, come sottolineiamo nel seguente tutorial è quasi esattamente come la formula Pearson.