Usando a função de correlação no PostgreSQL
Uma função que pode ser útil para determinar como dois números se relacionam é a função de correlação.
Neste tutorial vamos explicar a função corr() PostrgreSQL bem como mostrá-la no mundo real.
O Coeficiente de Correlação é um método amplamente utilizado para determinar a força da relação entre dois números ou dois conjuntos de números. Este coeficiente é calculado como um número entre -1 e 1. 1 sendo a correlação positiva mais forte possível e -1 sendo a correlação negativa mais forte possível.
Uma correlação positiva significa que, à medida que um número aumenta, o segundo número também aumenta.
Uma correlação negativa significa que, à medida que um número aumenta, o segundo número diminui.
Se o resultado do segundo número é ou não CAUSADO pelo primeiro não está sendo determinado aqui, apenas que os resultados dos dois números acontecem em conjunto um com o outro.
Se a fórmula retornar 0, então não há absolutamente nenhuma correlação entre os dois conjuntos de números.
Em um exemplo em que o coeficiente de correlação é 0,7, para cada aumento de 1 do número no eixo x, o número no eixo y aumenta em 0,7.
Quanto maior o número, mais forte é a correlação. Se é ou não precedido pelo sinal "-" não importa.
Um dos coeficientes de correlação mais populares é o Coeficiente de Correlação de Pearson, e mais informações podem ser encontradas em outro tutorial aqui.
Depois de executarmos alguns testes na função de correlação postgresql, ela ficou igual ao cálculo do Coeficiente de Correlação de Pearson todas as três vezes.
Ao usar a função PostgreSQL, a observação importante é que ela é uma função de agregação. Isso significa que calculará a correlação das totalidades de duas séries de números. Ele não exibirá a correlação de dois números dentro da série.
Usar a função de correlação já no postgres é bastante simples.
Usamos isso como uma função agregada de duas séries de números para determinar o coeficiente de correlação ao longo de uma série de atividades do site e receita em uma fonte de demonstração Chartio que temos em nosso site.
Plotando essas duas medidas em um gráfico de dispersão, surge um padrão de correlação positiva. Usando a função de coeficiente de correlação PostgreSQL mostra um resultado de 0,9 que é uma correlação quase direta.
Essa consulta fica assim:
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
Nesse caso específico, você precisará usar a função de agregação das métricas reunidas em uma subconsulta. Isso é muito simples, basta adicionar as duas colunas que você está tentando determinar a correlação entre os parênteses separados por uma coluna e sua saída será o coeficiente de correlação calculado pela função de agregação que, como apontamos no tutorial a seguir, é quase exatamente o mesmo que a Fórmula Pearson.