sql >> Base de Datos >  >> RDS >> PostgreSQL

Uso de la función de correlación de PostgreSQL

Usando la función de correlación en PostgreSQL

Una función que puede ser útil para determinar cómo se relacionan dos números entre sí es la función de correlación.

En este tutorial, explicaremos la función corr() de PostrgreSQL y la mostraremos en el mundo real.

El coeficiente de correlación es un método ampliamente utilizado para determinar la fuerza de la relación entre dos números o dos conjuntos de números. Este coeficiente se calcula como un número entre -1 y 1. 1 es la correlación positiva más fuerte posible y -1 es la correlación negativa más fuerte posible.

Una correlación positiva significa que a medida que un número aumenta, el segundo número también aumentará.

Una correlación negativa significa que a medida que un número aumenta, el segundo número disminuye.

Aquí no se determina si el resultado del segundo número es CAUSADO por el primero, solo que los resultados de los dos números suceden en conjunto.

Si la fórmula devuelve 0, entonces NO hay absolutamente ninguna correlación entre los dos conjuntos de números.

En un ejemplo donde el coeficiente de correlación es 0,7, por cada aumento de 1 del número en el eje x, el número en el eje y aumenta en 0,7.

Cuanto mayor es el número, más fuerte es la correlación. No importa si está precedido o no por el signo "-".

Uno de los coeficientes de correlación más populares es el Coeficiente de correlación de Pearson, y se puede encontrar más información en otro tutorial aquí.

Después de realizar algunas pruebas en la función de correlación postgresql, resultó igual al cálculo del coeficiente de correlación de Pearson las tres veces.

Al usar la función PostgreSQL, la nota importante es que es una función de agregación. Eso significa que calculará la correlación de las totalidades de dos series de números. No mostrará la correlación de dos números dentro de la serie.

Usar la función de correlación que ya está en Postgres es bastante sencillo.

Lo usamos como una función agregada de dos series de números para determinar el coeficiente de correlación durante una serie de tiempo de actividades e ingresos del sitio web en una fuente de demostración de Chartio que tenemos en nuestro sitio.

Al graficar estas dos medidas en un diagrama de dispersión, surge un patrón de correlación positiva. El uso del coeficiente de correlación de la función PostgreSQL muestra un resultado de 0,9, que es una correlación casi directa.

Esa consulta se ve así:

    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

En este caso particular, deberá utilizar la función de agregación de las métricas recopiladas en una subconsulta. Esto es muy sencillo, solo agregue las dos columnas de las que está tratando de determinar la correlación entre los paréntesis separados por una columna y su resultado será el coeficiente de correlación calculado por la función de agregación que, como señalamos en el siguiente tutorial, es casi exactamente lo mismo que la fórmula de Pearson.