PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Rumus Koefisien Korelasi Pearson dalam SQL

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:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah semua catatan di postgres ke Titlecase, huruf besar pertama

  2. Terjadi kesalahan saat membuat basis data spasial. GALAT:tidak dapat memuat perpustakaan /usr/pgsql-9.1/lib/rtpostgis-2.0.so

  3. Postgresql:Membuat skrip eksekusi psql dengan kata sandi

  4. Desain database temporal, dengan twist (live vs draft rows)

  5. Gambaran Umum Replikasi Logis di PostgreSQL