Rumus Koefisien Korelasi Pearson dalam SQL
Seperti yang telah kita bahas di halaman “Menggunakan Fungsi Korelasi PostgreSQL”, menggunakan korelasi dapat menunjukkan kepada Anda bagaimana dua rangkaian angka terkait. Entah kekuatan mereka sebagai korelasi positif atau kekuatan mereka sebagai korelasi negatif, dan sejumlah kekuatan di antaranya, termasuk tidak ada korelasi sama sekali.
Untuk rekap sedikit tentang Koefisien Korelasi:
Koefisien Korelasi adalah metode yang banyak digunakan untuk menentukan kekuatan hubungan antara dua bilangan atau dua himpunan bilangan. Koefisien ini dihitung sebagai angka antara -1 dan 1. 1 sebagai korelasi positif terkuat dan -1 sebagai korelasi negatif terkuat.
Korelasi positif berarti bahwa ketika satu angka meningkat, angka kedua juga akan meningkat.
Korelasi negatif berarti bahwa ketika satu angka meningkat, angka kedua berkurang.
Apakah hasil dari bilangan kedua DISEBABKAN oleh yang pertama tidak ditentukan di sini, hanya saja hasil dari kedua bilangan tersebut terjadi bersamaan satu sama lain.
Jika rumus mengembalikan 0 maka sama sekali TIDAK ADA korelasi antara dua set angka.
Rumus Pearson terlihat seperti ini:
Seperti yang telah dijelaskan, ada beberapa cara untuk menghitung Rumus Pearson untuk sekumpulan angka dalam SQL.
Kami melakukannya di sini pada nomor yang ditetapkan dari sumber data demo, yang datang gratis dengan uji coba.
Rumus itu dalam SQL terlihat seperti ini:
((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)))
Dan digunakan di seluruh kueri seperti ini:
SELECT
((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("Activities") AS act_sum,
sum("Amount" * "Amount") AS amt_sum_sq,
sum("Activities" * "Activities") AS act_sum_sq,
sum("Amount" * "Activities") AS tot_sum,
count(*) as _count
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
) as b
GROUP BY tot_sum, amt_sum, act_sum, _count, amt_sum_sq, act_sum_sq
Apa yang akan kita lihat dari kueri ini persis seperti yang akan kita lihat menggunakan fungsi corr() di PostgreSQL: