यह एक लंबी पोस्ट है इसलिए मुझे आशा है कि आप मेरे साथ सहन कर सकते हैं, और कृपया मुझे सही कर सकते हैं जहां मैं गलत हूं।
मेरा लक्ष्य 3 या 4 सप्ताह के ऐतिहासिक आंकड़ों के आधार पर एक दैनिक पूर्वानुमान का उत्पादन करना है।
डेटा एक ट्रांसफार्मर लाइनों में से एक के स्थानीय लोड का 15 मिनट का डेटा है। Im को एक मौसमी ARIMA प्रक्रिया के मॉडल क्रम को खोजने में परेशानी हो रही है। बिजली की मांग समय श्रृंखला पर विचार करें:
मूल समय श्रृंखला http://i.share.pho.to/80d86574_l.png
जब पहले 3 हफ्तों को सबसेट के रूप में लिया जाता है और फ़ॉल्सिंग एसीएफ / पीएसीएफ भूखंडों की गणना की जाती है:
सबसेट http://i.share.pho.to/5c165aef_l.png
पहला अंतर http://i.share.pho.to/b7300cc2_l.png
मौसमी और पहला अंतर http://i.share.pho.to/570c5397_l.png
ऐसा लगता है कि श्रृंखला थोड़े स्थिर है। लेकिन सीज़नैलिटी साप्ताहिक भी हो सकती है (देखें सीज़नल डिफरेंस वीक और सेकंड ऑर्डर डिफरेंस [यहां] http://share.pho.to/3owoq , आपको क्या लगता है?)
तो चलिए निष्कर्ष निकालते हैं कि मॉडल आकार लेता है:
अंतिम आंकड़े में लैग 96 पर एक अलग स्पाइक एक मौसमी एमए (1) घटक को इंगित करता है (शायद एआर (1) असमान हो सकता है क्योंकि पीएसीएफ असवेल में एक अलग स्पाइक है)। लैग 1: 4 पर स्पाइक्स एक एमए (4) घटक को इंगित करते हैं जो पीएसीएफ में घातीय क्षय के साथ थोड़ा कल्पना के साथ मेल खाता है। इस प्रकार मैन्युअल रूप से चयनित प्रारंभिक मॉडल हो सकता है:
साथ
Series: x
ARIMA(0,1,4)(0,1,1)[96]
Coefficients:
ma1 ma2 ma3 ma4 sma1
-0.2187 -0.2233 -0.0996 -0.0983 -0.9796
s.e. 0.0231 0.0234 0.0257 0.0251 0.0804
sigma^2 estimated as 364612: log likelihood=-15138.91
**AIC=30289.82 AICc=30289.87 BIC=30323.18**
Auto.arima फ़ंक्शन निम्न मॉडल की गणना करता है (TRUE पर स्टेप वाइज और सन्निकटन के साथ, अन्यथा इसे लंबे समय तक परिवर्तित होने में लगता है):
साथ
Series: x
ARIMA(1,1,1)(2,0,2)[96]
Coefficients:
ar1 ma1 sar1 sar2 sma1 sma2
0.7607 -1.0010 0.4834 0.4979 -0.3369 -0.4168
s.e. 0.0163 0.0001 0.0033 0.0116 0.0216 0.0255
sigma^2 estimated as 406766: log likelihood=-15872.02
**AIC=31744.99 AICc=31745.05 BIC=31784.25**
जिसका अर्थ है कि कोई मौसमी भिन्नता लागू नहीं होती है। यहाँ दोनों मॉडलों के अवशेष हैं। Ljung Box आँकड़ा बहुत छोटा p मान देता है, यह दर्शाता है कि अभी भी कुछ ऑटोकैरेलेशन मौजूद है (यदि मुझे गलत है तो सही है)।
पूर्वानुमान
इस प्रकार यह निर्धारित करने के लिए कि कौन सा बेहतर है, एक आउट-सैंपल सटीकता परीक्षण फिर सबसे अच्छा है। इसलिए दोनों मॉडलों के लिए एक पूर्वानुमान 24 घंटे आगे किया जाता है जिसकी एक-दूसरे के साथ तुलना की जाती है। परिणाम हैं: auto.arima http://i.share.pho.to/5d1dd934_l.png मैनुअल मॉडल http://i.share.pho.to/7ca69c97_l.png
ऑटो:
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set -2.586653 606.3188 439.1367 -1.284165 7.599403 0.4914563 -0.01219792 NA
Test set -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420 0.70219229 1.617834
गाइड
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set 2.456596e-03 589.1267 435.6571 -0.7815229 7.509774 0.4875621 -0.002034122 NA
Test set 2.878919e+02 919.7398 696.0593 3.4756363 10.317420 0.7789892 0.731013599 1.281764
प्रशन
जैसा कि आप सोच सकते हैं कि यह एक डेटासेट के पहले तीन हफ्तों का विश्लेषण है। मैं अपने मन में निम्नलिखित प्रश्नों के साथ संघर्ष कर रहा हूँ:
- मैं सर्वश्रेष्ठ ARIMA मॉडल का चयन कैसे करूं (सभी अलग-अलग आदेशों को आज़माकर और सर्वश्रेष्ठ MASE / MAPE / MSE की जांच करूं? जहां प्रदर्शन माप का चयन अपने आप में एक चर्चा हो सकती है ..)
- यदि मैं हर नए दिन के पूर्वानुमान (ऑनलाइन पूर्वानुमान में) के लिए एक नया मॉडल और पूर्वानुमान उत्पन्न करता हूं, तो क्या मुझे वार्षिक रुझान को ध्यान में रखना होगा और कैसे? (इतने छोटे उपसमूह में मेरा अनुमान यह होगा कि प्रवृत्ति नगण्य है)
- क्या आप उम्मीद करेंगे कि मॉडल ऑर्डर पूरे डेटासेट में एक जैसा रहे, यानी जब कोई दूसरा सब्मिट लेगा तो वही मॉडल मुझे देगा?
- छुट्टियों के साथ सामना करने के लिए इस पद्धति के भीतर एक अच्छा तरीका क्या है? या इसके लिए जरूरी बाहरी छुट्टी डमी के साथ ARIMAX है?
- क्या मुझे लंबी मौसमी अवधि
seasonality=672
में चर्चा की गई मॉडल के साथ फूरियर श्रृंखला के दृष्टिकोण का उपयोग करने की आवश्यकता है ? - अगर ऐसा है तो
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
(जहां फंक्शन फूरियर हाइंडमैन के ब्लॉग पोस्ट में परिभाषित किया गया है) - प्रारंभिक पी और क्यू घटक फूरियर श्रृंखला के साथ शामिल हैं?
एफपीपी से प्राप्त अधिकांश सैद्धांतिक ज्ञान , महान सामान!
घातीय चौरसाई या (गतिशील) रैखिक प्रतिगमन का उपयोग करने की सलाह देने से पहले इस पर तुलना करने के लिए भी काम किया जा रहा है।
डेटा
https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt
कोड
data<-read.csv("file", sep=";")
load<-data[,3]
मैंने मूल्यों से पहले सप्ताह के साथ कुछ शून्य मानों को हटा दिया
stepback<-672
load[is.na(load)] <- 0 # Assumed no 0's in first 672 values!
idx <- which(load == 0)
idx <- idx[which(idx>stepback)]
load[idx] <- load[idx-stepback]
ED<-ts(load,start=0, end=c(760,96),frequency=96)
x<-window(ED,start=0, end=c(20,96))
एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण पोस्ट करना भी संभव है लेकिन यह पोस्ट को अधिक लंबा बना देगा, लेकिन यदि आवश्यक हो तो संभव है। तो अगर वहाँ कुछ है मुझे प्रदान करना चाहिए कृपया मुझे बताएं।