ईटीएस () फ़ंक्शन, ऐतिहासिक डेटा के अनुरूप पूर्वानुमान से बचने के लिए कैसे?


16

मैं एक मासिक पूर्वानुमान गणना को स्वचालित करने के लिए R में एक alogorithm पर काम कर रहा हूं। मैं पूर्वानुमान की गणना करने के लिए पूर्वानुमान पैकेज से दूसरों के बीच, ईटीएस () फ़ंक्शन का उपयोग कर रहा हूं। यह बहुत अच्छा काम कर रहा है।

दुर्भाग्य से, कुछ विशिष्ट समय श्रृंखला के लिए, मुझे जो परिणाम मिलता है वह अजीब है।

कृपया, मेरे द्वारा उपयोग किए जा रहे कोड के नीचे खोजें:

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

कृपया, आपको संबंधित इतिहास डेटा सेट नीचे मिलेगा:

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

यहां, ग्राफ़ पर, आप ऐतिहासिक डेटा (काला), फिटेड मान (हरा) और पूर्वानुमान (नीला) देखेंगे। पूर्वानुमान निश्चित रूप से सज्जित मूल्य के अनुरूप नहीं है।

क्या आपके पास ऐतिहासिक बिक्री के साथ "लाइन में" होने के लिए "बाध्य" होने का कोई विचार है? यहाँ छवि विवरण दर्ज करें


यह एक सबसे अजीब पूर्वानुमान है जिसका उपयोग करके मैं आया हूं ets। ऐतिहासिक डेटा का माध्य / स्तर लगभग 20 है और पूर्वानुमान का माध्य / स्तर लगभग 50 है। निश्चित रूप से ऐसा क्यों होता है? क्या आप एक मूल चला सकते हैं etsऔर देख सकते हैं कि क्या आपको वही परिणाम मिलते हैं?
फोरकास्टर

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

मैंने आपके उत्तर पर मतदान कर दिया है, अब मुझे लगता है कि आप टिप्पणी छोड़ सकते हैं। भविष्य में, कृपया किसी उत्तर के नीचे टिप्पणी को छोड़ दें ताकि जवाब देने वाले लोग इसे नोटिस करें। धन्यवाद
भविष्यवक्ता

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

जवाबों:


10

जैसा कि @forecaster ने बताया है, यह श्रृंखला के अंत में आउटलेर्स के कारण होता है। आप समस्या को स्पष्ट रूप से देख सकते हैं यदि आप शीर्ष स्तर पर अनुमानित स्तर के घटक की साजिश करते हैं:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

श्रृंखला के अंत में स्तर में वृद्धि पर ध्यान दें।

आउटलेर्स के लिए मॉडल को अधिक मजबूत बनाने का एक तरीका पैरामीटर स्पेस को कम करना है ताकि स्मूथिंग मापदंडों को छोटे मान लेना चाहिए:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

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


पूर्वानुमान से निपटने के लिए आपके दूसरे सुझाव के समतुल्य पूर्वानुमान :: auto.arima क्या है?
ब्राश इक्विलिब्रियम

1
ARIMA मॉडल के साथ, आप समस्याग्रस्त समय में डमी चर के साथ आउटलेर्स को 1 पर सेट कर सकते हैं। बस Auto.arima या Arima में xreg तर्क का उपयोग करें।
रोब हायंडमैन

6

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

जब मैं पिछले दो डेटा बिंदुओं के साथ पुनर्मिलन हटाता हूं, तो मुझे एक उचित पूर्वानुमान मिलता है। कृपया नीचे देखे:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

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


5

@forecasterजब आप खाते के रुझान और मौसमी गतिविधि को ध्यान में रखते हैं तो आप सही हैं कि अंतिम मूल्य एक बाहरी BUT periood 38 (पारिश्रमिक मूल्य) नहीं है। वैकल्पिक मजबूत दृष्टिकोणों के परीक्षण / मूल्यांकन के लिए यह एक परिभाषित / शिक्षण क्षण है। यदि आप विसंगतियों के लिए पहचान और समायोजन नहीं करते हैं, तो विचरण को फुलाया जाता है, जिससे अन्य वस्तुएं न मिलें। 32 की अवधि भी एक बाहरी है। पीरियड्स 3,32 और 1 भी आउटलेयर हैं। पहले 17 मूल्यों के लिए श्रृंखला में एक सांख्यिकीय रूप से महत्वपूर्ण प्रवृत्ति है, लेकिन उसके बाद 18 की अवधि में शुरू होता है। इसलिए, डेटा में वास्तव में दो रुझान हैं। यहां सीखा जाने वाला सबक यह है कि सरल दृष्टिकोण जो बिना किसी प्रवृत्ति या एक विशेष प्रवृत्ति के प्रवृत्ति को मानते हैं और / या तात्कालिक रूप से ऑटो-रिग्रेसिव प्रक्रिया के एक विशिष्ट रूप को मानते हैं, को गंभीरता से पूछताछ करने की आवश्यकता है। एक अच्छे पूर्वानुमान को आगे बढ़ाते हुए अंतिम बिंदु (अवधि 39) पर पाई गई असाधारण गतिविधि की संभावित निरंतरता पर विचार करना चाहिए। डेटा से इसे निकालना असंभव है।

यह संभवतः उपयोगी मॉडल है:

यहाँ छवि विवरण दर्ज करेंअंतिम मॉडल के आंकड़े यहां हैं यहाँ छवि विवरण दर्ज करेंवास्तविक / फिट और पूर्वानुमान का ग्राफ दिलचस्प है क्योंकि यह असाधारण गतिविधि को उजागर करता है।यहाँ छवि विवरण दर्ज करें


+1 आपके उत्तर हमेशा शैक्षिक और ज्ञानवर्धक होते हैं। मैं पल्स और समय को समझता हूं, क्या निश्चित प्रभाव विशुद्ध रूप से नियतात्मक मॉडल है?
फोरकास्टर

@forecaster हाँ निश्चित प्रभाव / मौसमी दालों को पूरी तरह से निष्क्रिय कर दिया जाता है ... बस दालों / स्तर की पाली और स्थानीय समय के रुझान के रूप में। इसके अलावा अगस्त का महीना (8) महत्वपूर्ण नहीं था और अंतिम सूची में नहीं था।
आयरिशस्टैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.