एसक्यूएल में पियरसन सहसंबंध गुणांक सूत्र
जैसा कि हमने अपने "पोस्टग्रेएसक्यूएल सहसंबंध फ़ंक्शन का उपयोग करना" पृष्ठ पर चर्चा की, सहसंबंध का उपयोग करके आप दिखा सकते हैं कि संख्याओं की दो श्रृंखला कैसे संबंधित हैं। या तो सकारात्मक सहसंबंध के रूप में उनकी ताकत या नकारात्मक सहसंबंध के रूप में उनकी ताकत, और बीच में किसी भी तरह की ताकत, जिसमें कोई संबंध नहीं है।
सहसंबंध गुणांक के बारे में थोड़ा संक्षेप में बताने के लिए:
सहसंबंध गुणांक दो संख्याओं या संख्याओं के दो सेटों के बीच संबंध की ताकत का निर्धारण करने के लिए व्यापक रूप से उपयोग की जाने वाली विधि है। इस गुणांक की गणना -1 और 1 के बीच की संख्या के रूप में की जाती है। 1 सबसे मजबूत संभावित सकारात्मक सहसंबंध है और -1 सबसे मजबूत संभावित नकारात्मक सहसंबंध है।
एक सकारात्मक सहसंबंध का मतलब है कि जैसे-जैसे एक संख्या बढ़ेगी दूसरी संख्या भी बढ़ेगी।
ऋणात्मक सहसंबंध का अर्थ है कि जैसे-जैसे एक संख्या बढ़ती है दूसरी संख्या घटती जाती है।
दूसरे नंबर का परिणाम पहले के कारण होता है या नहीं, यह यहां निर्धारित नहीं किया जा रहा है, बस दो नंबरों के परिणाम एक दूसरे के साथ मिलकर होते हैं।
अगर सूत्र 0 देता है तो संख्याओं के दो सेटों के बीच बिल्कुल कोई संबंध नहीं है।
पियर्सन का फॉर्मूला इस तरह दिखता है:
जैसा कि बताया गया था, एसक्यूएल में संख्याओं के एक सेट के लिए पियरसन फॉर्मूला की गणना करने के तरीके हैं।
हमने इसे यहां आउट डेमो डेटा स्रोत से सेट किए गए नंबर पर किया है, जो एक परीक्षण के साथ मुफ़्त आता है।
SQL में वह सूत्र इस तरह दिखता है:
((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)))
और इस तरह की पूरी क्वेरी में उपयोग किया जाता है:
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
इस क्वेरी से हम वही देखेंगे जो हम PostgreSQL में corr() फ़ंक्शन का उपयोग करते हुए देखेंगे: