आर में स्लाइडिंग सहसंबंध की गणना कैसे करें


रोलिंग सहसंबंध एक स्लाइडिंग विंडो पर दो समय श्रृंखलाओं के बीच सहसंबंध हैं। इस प्रकार के सहसंबंध का एक लाभ यह है कि आप समय के साथ दो समय श्रृंखलाओं के बीच संबंध की कल्पना कर सकते हैं।

यह ट्यूटोरियल बताता है कि आर में रोलिंग सहसंबंधों की गणना कैसे करें।

आर में रोलिंग सहसंबंधों की गणना कैसे करें

मान लीजिए कि हमारे पास निम्नलिखित डेटा फ्रेम है जो 15 महीने की अवधि में दो अलग-अलग उत्पादों ( x और y ) के लिए बेचे गए उत्पादों की कुल संख्या प्रदर्शित करता है:

 #create data
data <- data.frame(month=1:15,
                   x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20),
                   y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28))

#view first six rows
head(data)

  month xy
1 1 13 22
2 2 15 24
3 3 16 23
4 4 15 27
5 5 17 26
6 6 20 26

आर में रोलिंग सहसंबंध की गणना करने के लिए, हम ज़ू पैकेज से रोलएप्लाई() फ़ंक्शन का उपयोग कर सकते हैं।

यह फ़ंक्शन निम्नलिखित सिंटैक्स का उपयोग करता है:

रोलअप्लाई (डेटा, चौड़ाई, FUN, by.column=TRUE)

सोना:

  • डेटा: डेटा फ़्रेम का नाम
  • चौड़ाई: स्लाइडिंग सहसंबंध के लिए विंडो की चौड़ाई निर्दिष्ट करने वाला पूर्णांक
  • मज़ा: लागू करने का कार्य।
  • by.column: निर्दिष्ट करता है कि फ़ंक्शन को प्रत्येक कॉलम पर अलग से लागू करना है या नहीं। यह डिफ़ॉल्ट रूप से सत्य है, लेकिन रोलिंग सहसंबंध की गणना करने के लिए हमें यह निर्दिष्ट करना होगा कि यह गलत है।

उत्पाद x और उत्पाद y के बीच बिक्री के 3 महीने के रोलिंग सहसंबंध की गणना करने के लिए इस फ़ंक्शन का उपयोग कैसे करें:

 #calculate 3-month rolling correlation between sales for x and y
rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689
 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268
[13] -0.1889822

यह फ़ंक्शन पिछले 3 महीनों में दो उत्पादों की बिक्री के बीच संबंध लौटाता है। उदाहरण के लिए:

  • 1-3 महीने में बिक्री का सहसंबंध 0.6546537 था।
  • 2-4 महीनों में बिक्री सहसंबंध -0.6933752 था।
  • 3-5 महीनों में बिक्री सहसंबंध -0.2401922 था।

और इसी तरह।

हम अलग-अलग समय अवधि के लिए रोलिंग सहसंबंध की गणना करने के लिए इस सूत्र को आसानी से समायोजित कर सकते हैं। उदाहरण के लिए, निम्नलिखित कोड दिखाता है कि दो उत्पादों के बीच बिक्री के 6 महीने के रोलिंग सहसंबंध की गणना कैसे करें:

 #calculate 6-month rolling correlation between sales for x and y
rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418
 [8] 0.7173740 0.7684468 0.4541476

यह फ़ंक्शन पिछले 6 महीनों में दो उत्पाद बिक्री के बीच संबंध लौटाता है। उदाहरण के लिए:

  • 1-6 महीनों में बिक्री का सहसंबंध 0.5587415 था।
  • 2-7 महीनों में बिक्री सहसंबंध 0.4858553 था।
  • 3-8 महीनों में बिक्री सहसंबंध 0.6931033 था।

और इसी तरह।

टिप्पणियाँ

रोलएप्लाई() फ़ंक्शन का उपयोग करते समय निम्नलिखित बातों को ध्यान में रखें:

  • सहसंबंधों की गणना करने के लिए चौड़ाई (यानी ड्रॉप-डाउन विंडो) 3 के बराबर या उससे अधिक होनी चाहिए।
  • उपरोक्त सूत्रों में, हमने cor(x[,2],x[3]) का उपयोग किया क्योंकि जिन दो स्तंभों के बीच हम सहसंबंध की गणना करना चाहते थे वे स्थिति 2 और 3 में थे। यदि जिन स्तंभों में आपकी रुचि है, वे विभिन्न स्थितियों में स्थित हैं, तो इन संख्याओं को समायोजित करें।

संबंधित: एक्सेल में रोलिंग सहसंबंध की गणना कैसे करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *