PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Công thức hệ số tương quan Pearson trong SQL

Công thức hệ số tương quan Pearson trong SQL

Như chúng ta đã thảo luận trên trang “Sử dụng hàm tương quan PostgreSQL”, việc sử dụng hàm tương quan có thể cho bạn thấy hai chuỗi số có liên quan như thế nào. Sức mạnh của họ là tương quan dương hoặc sức mạnh của họ là tương quan nghịch và bất kỳ lượng sức mạnh nào ở giữa, kể cả không có tương quan nào cả.

Tóm tắt lại một chút về Hệ số tương quan:

Hệ số tương quan là một phương pháp được sử dụng rộng rãi để xác định độ bền của mối quan hệ giữa hai số hoặc hai tập hợp số. Hệ số này được tính bằng một số trong khoảng từ -1 đến 1. 1 là tương quan dương mạnh nhất có thể có và -1 là tương quan nghịch mạnh nhất có thể có.

Tương quan thuận có nghĩa là khi một số tăng lên thì số thứ hai cũng sẽ tăng theo.

Tương quan âm có nghĩa là khi một số tăng thì số thứ hai giảm.

Ở đây không xác định được kết quả của số thứ hai có gây ra bởi số thứ nhất hay không, chỉ là kết quả của hai số xảy ra cùng lúc với nhau.

Nếu công thức trả về 0 thì hoàn toàn KHÔNG có mối tương quan nào giữa hai bộ số.

Pearson’s Formula trông giống như sau:

Như đã trình bày, có nhiều cách để tính Công thức Pearson cho một tập hợp số trong SQL.

Chúng tôi đã làm điều đó ở đây trên một con số được thiết lập từ nguồn dữ liệu demo, miễn phí với bản dùng thử.

Công thức đó trong SQL trông giống như sau:

((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)))

Và được sử dụng trong toàn bộ truy vấn như thế này:

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

Những gì chúng ta sẽ thấy từ truy vấn này là chính xác những gì chúng ta sẽ thấy khi sử dụng hàm corr () trong 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. Lưu trữ chuỗi nhị phân dài (dữ liệu thô)

  2. Tổng hợp kết nối cơ sở dữ liệu công nhân cần tây

  3. Cách hoạt động của to_char () trong PostgreSQL

  4. Postgres:lệnh chân không không làm sạch các bộ giá trị đã chết

  5. Cách thay đổi người dùng thành Superuser trong PostgreSQL