अचानक परिवर्तन को कैसे चिह्नित करें?


13

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

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें


3
शब्द "टर्निंग पॉइंट" का एक विशेष अर्थ है कि मुझे नहीं लगता है कि स्तर में अचानक बदलाव पर लागू होता है (चाहे ऊपर या नीचे)। आप 'बदलाव बिंदु' वाक्यांश का भी उपयोग करते हैं, और मुझे लगता है कि यह शायद एक बेहतर विकल्प है। कृपया यह मत सोचो कि यह 'बहुत बुनियादी' है; यहां तक ​​कि बुनियादी सवालों के लिए माफी की कोई आवश्यकता नहीं है, और यह सवाल दूर से बुनियादी नहीं है।
Glen_b -Reinstate Monica

धन्यवाद। मैंने सवाल में 'टर्निंग पॉइंट' को 'चेंज पॉइंट' में बदल दिया है।
user2230101

जवाबों:


11

यदि आपके समय श्रृंखला डेटा की टिप्पणियों को पिछले पिछले टिप्पणियों के साथ सहसंबद्ध किया जाता है, तो चेन और लियू (1993) द्वारा पेपर आपको दिलचस्पी ले सकता है। यह ऑटोरोग्रेसिव मूविंग-एवरेज टाइम सीरीज़ मॉडल के ढांचे में स्तर की बदलाव और अस्थायी परिवर्तनों का पता लगाने के लिए एक विधि का वर्णन करता है।[1]

[१]: चेन, सी। और लियू, एलएम। (1993),
"टाइम सीरीज में मॉडल पैरामीटर्स और आउटलाइयर इफेक्ट्स का संयुक्त अनुमान,"
जर्नल ऑफ़ द अमेरिकन स्टेटिस्टिकल एसोसिएशन , 88 : 421, 284-297


+1 मैं इसे खोजने के लिए इस पेपर के बारे में पर्याप्त याद रखने की कोशिश कर रहा था। यह एक अच्छा संदर्भ है।
Glen_b -Reinstate Monica

6

आँकड़े में इस समस्या को (अविभाजित) टेम्पोरल इवेंट डिटेक्शन के रूप में संदर्भित किया जाता है। सबसे सरल विचार एक चलती औसत और मानक विचलन का उपयोग करना है। कोई भी पठन जो "3-मानक विचलन (नियम-से-अंगूठे) से बाहर है" एक "घटना" माना जाता है। बेशक, अधिक उन्नत मॉडल हैं जो एचएमएम, या प्रतिगमन का उपयोग करते हैं। यहाँ क्षेत्र का परिचयात्मक अवलोकन है


5
यह "Univariate Temporal Event Detection" वाक्यांश को शामिल करने के लिए पूरे वेब पर सार्वजनिक रूप से सुलभ एकमात्र पोस्ट है! इस पद के लिए आपका स्रोत क्या है?
whuber

क्षमा करें यदि यह भ्रमित था। ईवेंट डिटेक्शन एक अधिक सामान्य शब्द है, और टेम्पोरल को कभी-कभी अलग से उपयोग किया जाता है। Univariate का आमतौर पर उपयोग नहीं किया जाता है क्योंकि दृष्टिकोण आमतौर पर बहुभिन्नरूपी होते हैं, लेकिन यह उनका विशेष मामला है।
user1669710

1
अपनी टिप्पणी @whuber
user1669710

@ ser1669710 धन्यवाद यही है जिसकी मेरे द्वारा तलाश की जा रही है। लगता है कि चलती औसत मेरी समस्या को हल नहीं कर सकता है। मुझे और अधिक जटिल मॉडल को देखने की जरूरत है।
user2230101

मैं इस अस्थायी घटना का पता लगाने के बारे में अधिक जानना चाहूंगा। आपके द्वारा पोस्ट की गई स्लाइड्स अच्छी हैं, लेकिन मैं सोच रहा था कि क्या आपके पास रिव्यू पेपर का लिंक है जो फील्ड को थोड़ा और औपचारिक रूप से वर्णित करता है?
१०

1

यहाँ यह करने के लिए एक त्वरित और आसान तरीका है। इस तरह कूद कार्यों का एक समूह बनाएँ: उम्मीदवार कटऑफ अंक । अब संभावित भविष्यवक्ताओं के रूप में साथ सर्वश्रेष्ठ मॉडल का चयन करने के लिए रिग्रेशन का उपयोग करें । अपने पहले उदाहरण में, आप दो भविष्यवक्ताओं का चयन करते हुए, आपको लिए एक मिलेगा, जो कि ऊपर की ओर कूद के आकार के बराबर एक सकारात्मक गुणांक है, और के लिए एक नकारात्मक गुणांक के आकार के बराबर है। नीचे की ओर कूदें। आपको यह तय करने की आवश्यकता है कि आप उम्मीदवार को कितनी बार कूदना चाहते हैं, एक्स 1 < एक्स 2 < < एक्स मीटर जम्मू मैं जम्मू एक पी आर मैं एल जे डी सी एम बी आर x मैं

Ji={0x<xi1xxi
x1<x2<<xmJiJaprilJdecemberxi, जैसे, प्रति माह, एक पखवाड़े, एक प्रति सप्ताह, एक प्रति दिन।

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


1
PS - @ user1669710 और मैंने एक साथ उत्तर पोस्ट किए। मैंने उस एक के लिए मतदान किया क्योंकि यह स्पष्ट रूप से बेहतर शोध है। लेकिन मैं इसे यहां छोड़ रहा हूं क्योंकि यह एक विकल्प है जो काम करता है और लागू करना आसान है।
रसेल लेन्थ

1
क्योंकि यह चरणबद्ध प्रतिगमन का उपयोग करता है और कई उम्मीदवार चर को रोजगार देता है, यह प्रक्रिया संदिग्ध लगती है। इसका अध्ययन कहां किया गया है और इसके क्या गुण हैं? यह अन्य बदलाव के तरीकों की तुलना कैसे करता है ?
whuber

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

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

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

1

आदर्श रूप से स्थिर मूल्यों के साथ एक श्रृंखला या अनुक्रम को मंत्र में विभाजित करने की एक संबंधित समस्या है। देखें कि मैं संख्यात्मक डेटा को स्वाभाविक रूप से "कोष्ठक" कैसे बना सकता हूं? (उदा आय)

यह बिल्कुल समान समस्या नहीं है क्योंकि प्रश्न किसी भी या सभी दिशाओं में धीमे बहाव के साथ मंत्र को बाहर नहीं करता है, लेकिन अचानक परिवर्तन के बिना।

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


1

आँकड़ों का वह क्षेत्र जिसे आप खोज रहे हैं, वह है बदलाव का विश्लेषण। यहां एक वेबसाइट है जो आपको क्षेत्र का अवलोकन देगी और सॉफ्टवेयर के लिए एक पेज भी देगी।

यदि आप एक Rउपयोगकर्ता हैं तो मैं changepointमाध्य में परिवर्तन के लिए strucchangeपैकेज और प्रतिगमन में परिवर्तन के लिए पैकेज की सिफारिश करूंगा। अगर आप बायेसियन बनना चाहते हैं तो bcpपैकेज भी अच्छा है।

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


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

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

1

इस इंफ़ेक्शन समस्या के कई नाम हैं, जिनमें परिवर्तन बिंदु, स्विच पॉइंट, ब्रेक पॉइंट, टूटी हुई रेखा प्रतिगमन, टूटी हुई छड़ी प्रतिगमन, बिलिनियर प्रतिगमन, टुकड़ा-रेखीय रेखीय प्रतिगमन, स्थानीय रेखीय प्रतिगमन, खंडित प्रतिगमन और विच्छेदन मॉडल शामिल हैं।

यहां पेशेवरों / विपक्षों और काम किए गए उदाहरणों के साथ परिवर्तन बिंदु पैकेजों का अवलोकन किया गया है। यदि आपको पता है कि परिवर्तन की संख्या एक प्राथमिकता बताती है, तो mcpपैकेज देखें। सबसे पहले, डेटा का अनुकरण करते हैं:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

आपकी पहली समस्या के लिए, यह केवल तीन अवरोधन खंड हैं:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

हम परिणामी फिट की साजिश कर सकते हैं:

plot(fit)

यहाँ छवि विवरण दर्ज करें

यहां, परिवर्तन बिंदु बहुत अच्छी तरह से परिभाषित (संकीर्ण) हैं। आइए उनके उपयुक्त स्थानों ( cp_1और cp_2) को देखने के लिए फिट को संक्षेप में प्रस्तुत करें :

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

आप mcpमॉडलिंग के साथ बहुत अधिक जटिल मॉडल कर सकते हैं , जिसमें मॉडलिंग नथ-ऑर्डर ऑटोरेजेशन (समय श्रृंखला के लिए उपयोगी), आदि शामिल हैं। अस्वीकरण: मैं इसका डेवलपर हूं mcp

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