Utilisation de la fonction de corrélation dans PostgreSQL
Une fonction qui peut être utile pour déterminer la relation entre deux nombres est la fonction de corrélation.
Dans ce didacticiel, nous expliquerons la fonction postrgreSQL corr() et la montrerons dans le monde réel.
Le coefficient de corrélation est une méthode largement utilisée pour déterminer la force de la relation entre deux nombres ou deux ensembles de nombres. Ce coefficient est calculé comme un nombre compris entre -1 et 1. 1 étant la corrélation positive la plus forte possible et -1 étant la corrélation négative la plus forte possible.
Une corrélation positive signifie qu'à mesure qu'un nombre augmente, le deuxième nombre augmentera également.
Une corrélation négative signifie qu'à mesure qu'un nombre augmente, le deuxième nombre diminue.
Que le résultat du deuxième nombre soit CAUSE ou non par le premier n'est pas déterminé ici, juste que les résultats des deux nombres se produisent de concert.
Si la formule renvoie 0, il n'y a absolument AUCUNE corrélation entre les deux ensembles de nombres.
Dans un exemple où le coefficient de corrélation est de 0,7, pour chaque augmentation de 1 du nombre sur l'axe des x, le nombre sur l'axe des y augmente de 0,7.
Plus le nombre est grand, plus la corrélation est forte. Qu'il soit précédé ou non du signe "-" n'a pas d'importance.
L'un des coefficients de corrélation les plus populaires est le coefficient de corrélation de Pearson, et plus d'informations peuvent être trouvées dans un autre tutoriel ici.
Après avoir effectué quelques tests sur la fonction de corrélation postgresql, elle s'est révélée égale au calcul du coefficient de corrélation de Pearson les trois fois.
Lors de l'utilisation de la fonction PostgreSQL, la remarque importante est qu'il s'agit d'une fonction d'agrégation. Cela signifie qu'il calculera la corrélation des entiers de deux séries de nombres. Il n'affichera pas la corrélation de deux nombres dans la série.
L'utilisation de la fonction de corrélation déjà dans postgres est assez simple.
Nous l'avons utilisé comme une fonction agrégée de deux séries de nombres pour déterminer le coefficient de corrélation sur une série de temps d'activités de site Web et de revenus dans une source de démonstration Chartio que nous avons sur notre site.
En traçant ces deux mesures sur un nuage de points, un modèle de corrélation positive émerge. L'utilisation du coefficient de corrélation de la fonction PostgreSQL montre un résultat de 0,9, ce qui est une corrélation presque directe.
Cette requête ressemble à ceci :
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
Dans ce cas particulier, vous devrez utiliser la fonction d'agrégation des métriques rassemblées dans une sous-requête. C'est très simple, ajoutez simplement les deux colonnes dont vous essayez de déterminer la corrélation entre les parenthèses séparées par une colonne et votre sortie sera le coefficient de corrélation tel que calculé par la fonction d'agrégation qui, comme nous le soulignons dans le tutoriel suivant est presque exactement la même que la formule de Pearson.