दैनिक समय श्रृंखला विश्लेषण


25

मैं समय श्रृंखला विश्लेषण करने की कोशिश कर रहा हूं और इस क्षेत्र में नया हूं। मेरे पास 2006-2009 की एक घटना की दैनिक गिनती है और मैं इसके लिए एक समय श्रृंखला मॉडल फिट करना चाहता हूं। यहां मैंने जो प्रगति की है वह है:

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)

परिणामी प्लॉट मुझे मिलता है:

समय श्रृंखला प्लॉट

यह सुनिश्चित करने के लिए कि क्या मौसम और डेटा में रुझान है या नहीं, मैं इस पोस्ट में बताए गए चरणों का पालन करता हूं :

ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal

और रोब जे हंडमैन के ब्लॉग में :

library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")

deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df 
#P value
1-pchisq(deviance,df)

दोनों मामलों से संकेत मिलता है कि कोई भी मौसम नहीं है।

जब मैं श्रृंखला के ACF और PACF की साजिश रचता हूं, तो यहां मुझे वही मिलता है:

ACF PACF

मेरे प्रश्न हैं:

  1. क्या यह दैनिक समय श्रृंखला डेटा को संभालने का तरीका है? यह पृष्ठ बताता है कि मुझे साप्ताहिक और वार्षिक दोनों पैटर्न में देखना चाहिए लेकिन मेरे लिए दृष्टिकोण स्पष्ट नहीं है।

  2. मुझे नहीं पता कि एसीएफ और पीएसीएफ प्लॉट होने के बाद मुझे कैसे आगे बढ़ना है।

  3. क्या मैं बस auto.arima फ़ंक्शन का उपयोग कर सकता हूं?

    फिट <- अरिमा (माईट्स, ऑर्डर = सी (पी, डी, क्यू)

***** अपडेट किया गया ऑटो। अरिमा परिणाम ******

जब मैं रोब Hyndman की टिप्पणी के अनुसार 7 से डेटा की आवृत्ति बदलने यहाँ , auto.arima चयन एक मौसमी ARIMA मॉडल और आउटपुट:

Series: timeSeriesObj 
ARIMA(1,1,2)(1,0,1)[7]                    

Coefficients:
       ar1      ma1     ma2    sar1     sma1
      0.89  -1.7877  0.7892  0.9870  -0.9278
s.e.   NaN      NaN     NaN  0.0061   0.0162

sigma^2 estimated as 21.72:  log likelihood=-4319.23
AIC=8650.46   AICc=8650.52   BIC=8682.18 

****** अद्यतित मौसमी जाँच ******

जब मैं फ्रिक्वेंसी 7 के साथ सीज़लिटी का परीक्षण करता हूं, तो यह ट्रू आउटपुट करता है, लेकिन सीज़निटी 365.25 के साथ, यह गलत आउटपुट देता है। क्या यह वार्षिक मौसम की कमी को पूरा करने के लिए पर्याप्त है?

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal

रिटर्न:

True

जबकि

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal

रिटर्न:

False

क्या उत्पादन करता str(x)है?
एस। कोलासा - मोनिका

यह संख्या [1: 1460] 17 12 12 17 13 14 14 5 12 21 ...
स्टेटबिनर

क्या आप डेटा पोस्ट कर सकते हैं?
फोरकास्टर

बदकिस्मती से मैं यह नहीं कर सका।
स्टेटबिनर

3
ठीक है, मैं मौसमीता का पता लगाने के लिए सांख्यिकीय परीक्षणों के अलावा दृश्य निरीक्षण और डोमेन ज्ञान पर भरोसा करता हूं। अरिमा कई मौसमी को संभाल सकती है या नहीं, इस सवाल पर - ज़रूर ARIMA किसी भी प्रकार की मौसमी को संभाल लेगी, Rसरल में इसे संभालने की क्षमता नहीं है। यदि आप उस उत्पाद के लिए उच्च इन्वेंट्री / मैन्युफैक्चरिंग कॉस्ट शामिल करते हैं, जिसका आप पूर्वानुमान लगाने की कोशिश कर रहे हैं, तो मैं वाणिज्यिक समाधान खोजूंगा। Rआपकी तरह पूर्वानुमान कार्य के लिए गंभीर सीमाएँ हैं। इस साइट में और कहाँ पर दैनिक पूर्वानुमान पर प्रश्न देखें।
फोरकास्टर

जवाबों:


25

आपके ACF और PACF से संकेत मिलता है कि आपके पास कम से कम साप्ताहिक सीज़न है, जो कि चोटियों द्वारा 7, 14, 21 और उसके आगे दिखाया गया है।

आपके पास वार्षिक मौसम भी हो सकता है, हालांकि यह आपकी समय श्रृंखला से स्पष्ट नहीं है।

आपका सर्वश्रेष्ठ दांव, संभावित रूप से कई मौसमी को देखते हुए, एक tbatsमॉडल हो सकता है , जो स्पष्ट रूप से कई प्रकार के मौसमी मॉडल बनाता है। forecastपैकेज लोड करें :

library(forecast)

आपके आउटपुट से str(x)संकेत मिलता है कि xसंभावित रूप से कई मौसमी होने की जानकारी नहीं है। देखो ?tbats, और के उत्पादन की तुलना करें str(taylor)। मौसमी असाइन करें:

x.msts <- msts(x,seasonal.periods=c(7,365.25))

अब आप एक tbatsमॉडल फिट कर सकते हैं । (धैर्य रखें, इसमें कुछ समय लग सकता है।)

model <- tbats(x.msts)

अंत में, आप पूर्वानुमान और साजिश कर सकते हैं:

plot(forecast(model,h=100))

आप उपयोग नहीं करना चाहिए arima()या auto.arima(), क्योंकि ये केवल मौसमी का एक ही प्रकार संभाल कर सकते हैं: या तो साप्ताहिक या वार्षिक। मुझसे मत पूछो कि auto.arima()आपके डेटा पर क्या होगा। यह मौसमी में से एक को चुन सकता है, या यह उन्हें पूरी तरह से अवहेलना कर सकता है।


टिप्पणी से अतिरिक्त प्रश्नों का उत्तर देने के लिए EDIT:

  1. मैं कैसे जांच सकता हूं कि डेटा की वार्षिक मौसमी है या नहीं? क्या मैं प्रति माह कुल घटनाओं की एक और श्रृंखला बना सकता हूं और इसका फैसला करने के लिए अपने एसीएफ का उपयोग कर सकता हूं?

मासिक डेटा पर एक मॉडल की गणना करना एक संभावना हो सकती है। तब आप, जैसे, मौसमी के साथ और बिना मॉडल के बीच AIC की तुलना कर सकते हैं।

हालांकि, मैं पूर्वानुमान मॉडल का आकलन करने के लिए होल्डआउट नमूने का उपयोग करूंगा। पिछले 100 डेटा पॉइंट्स को होल्ड करें। बाकी डेटा (जैसे ऊपर) के लिए वार्षिक और साप्ताहिक मौसमी के साथ एक मॉडल को फिट करें, फिर एक साप्ताहिक सीज़न के साथ एक को फिट करें, जैसे, auto.arima()एक के tsसाथ प्रयोग करना frequency=7। पूर्वानुमान मॉडल को होल्डआउट अवधि में उपयोग करते हुए। जाँच करें कि एमएई, एमएसई या जो कुछ भी आपके नुकसान फ़ंक्शन के लिए सबसे अधिक प्रासंगिक है, का उपयोग करके कम त्रुटि है। यदि त्रुटियों में थोड़ा अंतर है, तो सरल मॉडल के साथ जाएं; अन्यथा, कम त्रुटि वाले का उपयोग करें।

पुडिंग का प्रमाण खाने में है, और समय श्रृंखला मॉडल का प्रमाण पूर्वानुमान में है।

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

  1. इसलिए मौसमी ARIMA मॉडल आमतौर पर कई मौसमी को नहीं संभाल सकते हैं? क्या यह मॉडल का एक गुण है या यह सिर्फ उसी तरह है जैसे R में लिखे गए कार्य हैं?

मानक ARIMA मॉडल मौसमी अंतर द्वारा मौसमी को संभालते हैं। मौसमी मासिक डेटा के लिए, आप कच्चे समय की श्रृंखला का मॉडल नहीं बनाएंगे, लेकिन मार्च 2015 और मार्च 2014 के बीच, फरवरी 2015 से फरवरी 2014 के बीच और उसके बाद के अंतरों की समय श्रृंखला। (मूल पैमाने पर पूर्वानुमान प्राप्त करने के लिए, आपको निश्चित रूप से फिर से उदासीनता की आवश्यकता होगी।)

इस विचार को कई मौसमीताओं तक विस्तारित करने का कोई तुरंत स्पष्ट तरीका नहीं है ।

बेशक, आप वार्षिक सीज़न का उपयोग करने के लिए मासिक डमी को शामिल करके ARIMAX, उदाहरण के लिए, मासिक मौसमी ARIMA का उपयोग करके अवशिष्ट को मॉडल करके कुछ कर सकते हैं। यदि आप R में ऐसा करना चाहते हैं, तो उपयोग करें ts(x,frequency=7), मासिक dummies का एक मैट्रिक्स बनाएं और उस xregपैरामीटर में फ़ीड करें auto.arima()

मुझे कोई भी प्रकाशन याद नहीं है जो विशेष रूप से ARIMA को कई मौसमी क्षेत्रों तक बढ़ाता है, हालांकि मुझे यकीन है कि किसी ने मेरे पिछले पैराग्राफ में लाइनों के साथ कुछ किया है।


यहाँ कुछ प्रश्न दिए गए हैं जो मैंने आपके उत्तर के आधार पर दिए हैं: 1. मैं कैसे जांच सकता हूं कि डेटा की वार्षिक मौसमी है या नहीं? क्या मैं प्रति माह कुल घटनाओं की एक और श्रृंखला बना सकता हूं और यह तय करने के लिए अपने एसईएफ का उपयोग कर सकता हूं? 2. तो मौसमी ARIMA मॉडल आमतौर पर कई मौसमी को नहीं संभाल सकते हैं? क्या यह मॉडल का एक गुण है या यह सिर्फ उसी तरह है जैसे R में लिखे गए कार्य हैं?
स्टेटबिनर

साप्ताहिक सीज़न के साथ Auto.Arima के परिणामों के साथ अपडेट की गई पोस्ट
स्टेटबिनर

1
@StephanKolassa, मुझे कुछ समय पहले AT & T का यह लेख मिला जिसमें कई मौसमी ARIMA का उपयोग किया गया है। मॉडल जैसे कि लेख में एक संभव नहीं है R, क्योंकि Rमल्टीसेनल ARIMA को संभालने की क्षमता नहीं है।
फोरकास्टर

2
@forecaster: शांत, धन्यवाद! ऐसा लगता है जैसे वे समीकरण 3.1 में दोहरी विभेदन करते हैं। मैं उस तरह से बहुत सारे डेटा खोने के बारे में चिंतित हूं। दुर्भाग्य से, वे अपने परिणामों की तुलना एक साधारण बेंचमार्क से नहीं करते हैं, उदाहरण के लिए, पिछले सप्ताह की मांग। मुझे क्या पसंद है कि वे अपने DSARIMA और एक tbats-जैसे मॉडल के बीच पूर्वानुमान संयोजनों की जांच कैसे करते हैं ।
एस। कोलासा - मोनिक

3
@StephanKolassa मैं सहमत हूं, मैं आर्मस्ट्रांग द्वारा पूर्वानुमान के सिद्धांतों में समर्थित बेंचमार्क के रूप में भोले पूर्वानुमान का उपयोग करने का एक बड़ा प्रस्तावक हूं और यदि सटीकता में सुधार होता है तो केवल जटिलता जोड़ें। मैंने अपने पहनावे में भोले-भाले तरीकों का इस्तेमाल करके कुछ कागज़ प्रतियोगिताओं में टॉप 2 पर्सेंटाइल का अंत किया।
फोरकास्टर

4

मौजूदा R संकुल का उपयोग करके मौसमी डेटा को विघटित करने का सबसे अच्छा तरीका है Rlibeemd में सीमदान ()। यह तकनीक कई अवधियों की मौसमी को निकालती है। चूक अच्छी तरह से काम करती हैं। यह फूरियर रूपांतरण के बजाय हिल्बर्ट-हुआंग परिवर्तन का उपयोग करता है। फूरियर रूपांतरण में एक गंभीर खामी है कि यह केवल स्थिर, रैखिक डेटा को संभाल सकता है जब ब्याज की अधिकांश श्रृंखला न तो हो। उदाहरण के लिए, यादृच्छिक चलना y_t = y_ {t-1} + e_t सबसे सरल यादृच्छिक चलना और अक्सर सामना करना पड़ता है। अन्य विधियाँ मौसमी भिन्नता के आयाम को निर्धारित करती हैं जब यह अक्सर अभ्यास में भिन्न होता है।


1
कृपया गणित के जवाबों में गणित की मदद के लिए बुनियादी गणित ट्यूटोरियल और संदर्भ देखें । कृपया " सर्वश्रेष्ठ " के दावे के कुछ औचित्य की पेशकश करें (या दावे को संशोधित करने पर विचार करें) - यह कम से कम हर दूसरे विकल्प के रूप में अच्छा होना चाहिए , न कि उनमें से अधिकांश।
Glen_b -Reinstate मोनिका

2
गौरतलब हो कि यह पैकेज CRAN
Glen_b -Reinstate Monica

3

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


1
आपका बहुत बहुत धन्यवाद! मैं चीजों को आज़माने के लिए उस पोस्ट के डेटा का उपयोग करूंगा।
स्टेटबिनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.