आर में टाइम सीरीज़ 'क्लस्टरिंग'


38

मेरे पास समय श्रृंखला डेटा का एक सेट है। प्रत्येक श्रृंखला एक ही अवधि को कवर करती है, हालांकि हर बार श्रृंखला में वास्तविक तारीखें सभी 'लाइन अप' बिल्कुल नहीं हो सकती हैं।

यह कहना है, यदि समय श्रृंखला को 2 डी मैट्रिक्स में पढ़ा जाना था, तो यह कुछ इस तरह दिखाई देगा:

date     T1   T2   T3 .... TN
1/1/01   100  59   42      N/A
2/1/01   120  29   N/A     42.5
3/1/01   110  N/A  12      36.82
4/1/01   N/A  59   40      61.82
5/1/01    05  99   42      23.68
...
31/12/01  100  59   42     N/A

etc 

मैं एक आर स्क्रिप्ट लिखना चाहता हूं जो समय श्रृंखला {T1, T2, ... TN} को families परिवारों ’में अलग कर देगी जहां एक परिवार को श्रृंखला के एक सेट के रूप में परिभाषित किया गया है जो एक दूसरे के साथ" सहानुभूति में आगे बढ़ना "है।

'क्लस्टरिंग' भाग के लिए, मुझे एक प्रकार की दूरी माप का चयन / परिभाषित करने की आवश्यकता होगी। मैं इस बारे में निश्चित नहीं हूं कि मैं इस बारे में कैसे जाऊं, क्योंकि मैं समय श्रृंखला के साथ काम कर रहा हूं, और श्रृंखला की एक जोड़ी जो एक अंतराल पर सहानुभूति में आगे बढ़ सकती है, बाद के अंतराल में ऐसा नहीं कर सकती।

मुझे यकीन है कि यहाँ पर मुझसे कहीं अधिक अनुभवी / चतुर लोग हैं, इसलिए मैं किसी भी सुझाव के लिए आभारी रहूंगा, दूरी मापने के लिए कौन सा एल्गोरिदम / अनुमान लगाने पर विचार और समय श्रृंखला को क्लस्टर करने में कैसे उपयोग करें।

मेरा अनुमान है कि ऐसा करने के लिए एक स्थापित मजबूत सांख्यिकीय पद्धति नहीं है, इसलिए मुझे यह देखने में बहुत दिलचस्पी होगी कि लोग इस समस्या को कैसे हल करें / एक सांख्यिकीविद् की तरह सोचें।


1
आप भी इस सवाल के लिए प्रतिक्रियाओं में रुचि हो सकती stats.stackexchange.com/q/2777/1036
एंडी डब्ल्यू


1
ड्यूरिचलेट प्रक्रियाओं पर आधारित एक सांख्यिकीय पद्धति है जो डेटासेट के लिए काम करती है जहां सभी नमूनों के लिए समय-बिंदु समान नहीं हैं।
डारियो

जवाबों:


24

समय श्रृंखला डेटाबेस की डेटा स्ट्रीमिंग और माइनिंग में, एक सामान्य दृष्टिकोण श्रृंखला को प्रतीकात्मक प्रतिनिधित्व में बदलना है, फिर श्रृंखला को क्लस्टर करने के लिए यूक्लिडियन दूरी जैसी समानता मीट्रिक का उपयोग करें। सबसे लोकप्रिय अभ्यावेदन SAX (Keogh & Lin) या नए iSAX (Shieh & Keogh) हैं:

ऊपर दिए गए पृष्ठों में दूरी मीट्रिक और क्लस्टरिंग के संदर्भ भी हैं। Keogh और चालक दल प्रतिलिपि प्रस्तुत करने योग्य अनुसंधान और अपने कोड को जारी करने के लिए बहुत ग्रहणशील हैं। तो आप उन्हें ईमेल कर सकते हैं और पूछ सकते हैं। मेरा मानना ​​है कि वे MATLAB / C ++ में काम करते हैं।

जावा और आर कार्यान्वयन के उत्पादन के लिए हाल ही में प्रयास किया गया था:

मुझे नहीं पता कि यह कितना दूर है - यह मोटिफ खोजने की दिशा में सक्षम है, लेकिन, यह इस बात पर निर्भर करता है कि उन्होंने कितनी दूर तक जाना है, इसमें आवश्यक बिट्स होने चाहिए जो आपको अपनी आवश्यकताओं (iSAX और डिस्टेंस मेट्रिक्स) के लिए एक साथ रखने की आवश्यकता है: चूंकि यह भाग क्लस्टरिंग और आकृति खोजने के लिए आम है)।


1
यह एक अच्छा, ट्रैक्टेबल शुरुआती बिंदु जैसा दिखता है। लिंक के लिए धन्यवाद।
मॉर्फियस

4
पवित्र बकवास, मुझे लगता है कि SAX पेज सबसे बदसूरत वेब पेज है जिसे मैंने कभी देखा है!
naught101

18

"सहानुभूति में आगे बढ़ना" कहने का एक अन्य तरीका "संयोगवश" है।

संयोग की गणना के दो मानक तरीके हैं : एंगल-ग्रेंजर विधि और जोहान्सन प्रक्रिया। ये "एनालिसिस ऑफ़ इंटीग्रेटेड एंड कॉइनग्रेनेटेड टाइम सीरीज़ विद आर" (Pfaff 2008) और संबंधित R urca पैकेज में शामिल हैं । यदि आप इन विधियों को आर में बनाना चाहते हैं, तो मैं पुस्तक की अत्यधिक अनुशंसा करता हूं।

मैं यह भी सलाह देता हूं कि आप इस सवाल को मल्टीवेरेट टाइम सीरीज़ पर देखें और विशेष रूप से, यू। शिकागो में रूए त्से के पाठ्यक्रम में, जिसमें सभी आवश्यक आर कोड शामिल हैं।


मैं कुछ साल पहले संयोग से आया था - लेकिन यह मुझे बहुत जटिल लगा (मुझे यह समझ में नहीं आया!)। मैं उम्मीद कर रहा था कि कम सैद्धांतिक (यानी अधिक व्यावहारिक) समाधान होगा ...
morpheous

3
एंगल-ग्रेंजर विधि विशेष रूप से जटिल नहीं है: आप सिर्फ दो श्रृंखलाओं के बीच एक प्रतिगमन के अवशेषों को लेते हैं और यह निर्धारित करते हैं कि इसमें एक इकाई जड़ है। यह निश्चित रूप से व्यावहारिक है: इसका उपयोग समस्याओं के व्यापक स्पेक्ट्रम के लिए नियमित रूप से किया जाता है। जैसा कि कहा गया, मैं कल्पना है कि आपके सवाल का किसी भी सवाल का जवाब कुछ सांख्यिकीय ज्ञान की आवश्यकता होगी ... (उदाहरण के लिए, आप stationarity, स्वतंत्रता, आदि जैसी चीजों को समझना चाहिए।)
शेन

क्या सह-एकीकरण के लिए सभी जोड़ी-वार श्रृंखला का परीक्षण करने की तुलना में ऐसा करने का एक बेहतर तरीका है (क्लस्टर श्रृंखला के साथ एक ही आदर्श को ध्यान में रखते हुए?) यह सुझाव भी इस तथ्य पर निर्भर नहीं होगा कि श्रृंखला स्वयं एकीकृत है? सबसे पहले?
एंडी डब्ल्यू

@ और: मुझे यकीन है कि एक बेहतर तरीका है, और मैं इसके बारे में सुनने के लिए उत्सुक हूं। यह एक बहुत ही बुनियादी तरीका है।
शेन

1
> मैं कुछ और सुझाव नहीं दे सकता, लेकिन व्यवहार में दोनों बहुत ही नाजुक ('पैरामीट्रिक मान्यताओं' जंगली श्रृंखला) के लिए नाजुक है और हाथों में कार्य के लिए बीमार है: प्रत्येक चरण में, यह सबसे अधिक विलय दो पर पदानुक्रमिक क्लस्टरिंग करने की मात्रा है। श्रृंखला प्रति एक (सह-एकीकृत माध्य)।
user603

4

क्लस्टरिंग टाइम सीरीज़ को आमतौर पर जनसंख्या के डायनामैसिस्ट द्वारा किया जाता है, विशेष रूप से वे जो कीटों के प्रकोप और पतन के रुझानों को समझने के लिए अध्ययन करते हैं। जिप्सी मॉथ, स्प्रूस ब्यॉवोर्म, माउंटेन पाइन बीटल और लार्च बर्मोथ पर काम की तलाश करें।

वास्तविक क्लस्टरिंग के लिए, आप जो भी दूरी मीट्रिक पसंद करते हैं, प्रत्येक को चुन सकते हैं कि संभवतः इसकी अपनी ताकत और वीकनेस है, जिस तरह के डेटा को क्लस्टर्ड किया जा रहा है, कॉफमैन और रूसेव्यू 1990। डेटा में समूह ढूँढना। क्लस्टर विश्लेषण के लिए एक परिचय शुरू करने के लिए एक अच्छी जगह है। याद रखें, क्लस्टरिंग विधि 'देखभाल' नहीं करती है जिसे आप टाइम सीरीज़ का उपयोग कर रहे हैं, यह केवल उसी समय पर मापे गए मानों को देखता है। यदि आपकी दो समय की श्रृंखला उनके जीवन काल के लिए पर्याप्त नहीं है, तो वे क्लस्टर (और शायद नहीं) क्लस्टर नहीं करेंगे।

जहाँ आपको समस्याएँ होंगी, आप समय श्रृंखला के बाद क्लस्टर समूहों (परिवारों) की संख्या निर्धारित कर रहे हैं। सूचनात्मक समूहों के कट-ऑफ को चुनने के विभिन्न तरीके हैं, लेकिन यहां साहित्य उतना अच्छा नहीं है।


1
y1,t

1
@ user603 क्या आप समझा सकते हैं "आपको या तो यह स्वीकार करना होगा कि प्रत्येक y1, t को स्वयं के आयाम के रूप में रखने के कारण एक श्रृंखला अत्यधिक सहसंबद्ध है (अर्थात एन * टी आयामों के परिणामस्वरूप)" कृपया?
B_Miner

2

एक ऐसे ही सवाल का मेरा जवाब यहां देखें । लंबी कहानी संक्षेप में, डेटा का तेज़ फ़ूरियर ट्रांसफ़ॉर्म करें, निरर्थक आवृत्तियों को त्यागें यदि आपका इनपुट डेटा वास्तविक मूल्यवान था, फास्ट फ़ूरियर ट्रांसफॉर्म के प्रत्येक तत्व के लिए वास्तविक और काल्पनिक भागों को अलग करें, और मॉडल करने के लिए R में Mclust पैकेज का उपयोग करें- प्रत्येक समय श्रृंखला के प्रत्येक तत्व के वास्तविक और काल्पनिक भागों पर आधारित क्लस्टरिंग। पैकेज क्लस्टर और उनकी घनत्वों की संख्या पर अनुकूलन को स्वचालित करता है।


0

आप पैकेज क्लस्टडिस्ट का भी उपयोग कर सकते हैं, जो नेताओं की विधि और पदानुक्रमिक क्लस्टरिंग विधि को किसी भी त्रुटि के साथ करता है:

http://r-forge.r-project.org/projects/clustddist/

स्क्वेरेड यूक्लिडियन डिस्ट्रिब्यूशन डिस्ट्रीब्यूशन पैटर्न के अनुकूल होता है, जिसमें एक ऊँची चोटी होती है और इसलिए मापते हैं

d4(x,y)=(xy)2y
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.