क्या मॉडल की पहचान auto.arima () के साथ की गई है?


13

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

मैंने आर पैकेज पूर्वानुमानauto.arima() में फ़ंक्शन के साथ खेलना शुरू किया । यहाँ मैंने क्या किया, मैंने ARIMA की नकल की और फिर आवेदन किया । नीचे 2 उदाहरण दिए गए हैं। जैसा कि आप दोनों उदाहरण में देख सकते हैं स्पष्ट रूप से एक मॉडल की पहचान की है कि कई गैर-पारिश्रमिक पर विचार करेंगे। विशेष रूप से उदाहरण 2 में, जहां ARIMA (3,0,3) की पहचान की गई जब वास्तव में ARIMA (1,0,1) पर्याप्त और पारिश्रमिक होगा।auto.arima()auto.arima()auto.arima()

नीचे मेरे सवाल हैं। मैं किसी भी सुझाव और सिफारिशों की सराहना करता हूं।

  1. क्या स्वचालित एल्गोरिदम जैसे उपयोग किए गए पहचान किए गए मॉडल का उपयोग / संशोधित करने के लिए कोई मार्गदर्शन है auto.arima()?
  2. क्या auto.arima()मॉडल की पहचान करने के लिए केवल AIC (जो मुझे लगता है कि उपयोग करता है) का उपयोग करके कोई गड्ढे हैं?
  3. क्या एक स्वचालित एल्गोरिथ्म का निर्माण किया जा सकता है, जो कि पारस्पिरिक है?

वैसे मैंने auto.arima()सिर्फ एक उदाहरण के रूप में इस्तेमाल किया । यह किसी भी स्वचालित एल्गोरिथ्म पर लागू होगा।

नीचे उदाहरण # 1 है:

set.seed(182)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

नीचे से परिणाम हैं auto.arima()। कृपया ध्यान दें कि सभी गुणांक महत्वहीन हैं। यानी, t मूल्य <2।

ARIMA(1,0,2) with non-zero mean 

Coefficients:
         ar1     ma1      ma2  intercept
      0.5395  0.2109  -0.3385    19.9850
s.e.  0.4062  0.4160   0.3049     0.0878

sigma^2 estimated as 1.076:  log likelihood=-728.14
AIC=1466.28   AICc=1466.41   BIC=1487.36

नीचे arima()आदेश ARIMA (1,0,1) के साथ नियमित रूप से चलने के परिणाम हैं

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

उदाहरण 2:

set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

नीचे से परिणाम हैं auto.arima():

ARIMA(3,0,3) with non-zero mean 

Coefficients:
         ar1      ar2     ar3     ma1     ma2     ma3  intercept
      0.7541  -1.0606  0.2072  0.1391  0.5912  0.5491    20.0326
s.e.  0.0811   0.0666  0.0647  0.0725  0.0598  0.0636     0.0939

sigma^2 estimated as 1.027:  log likelihood=-716.84
AIC=1449.67   AICc=1449.97   BIC=1483.39

नीचे दिए गए परिणाम arima()ARIMA (1,0,1) के साथ नियमित चल रहे हैं

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

आप एआईसी प्रक्रिया को सबसे सरल मॉडल की गलत पहचान कर सकते हैं क्योंकि आप यहां कुछ पर दिखाई देते हैं। इसके अतिरिक्त एआईसी मानदंड परिसर में कोई दालों / कोई स्तर की शिफ्ट / कोई मौसमी दालों / कोई स्थानीय समय के रुझान / कसौटी के कसना / त्रुटि विचलन की गति नहीं है।
आयरिशस्टैट

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

@ इरीस्टैट मा गुणांक का संकेत क्या है, इसकी व्याख्या -0.1391 -0.5912 -05491 के रूप में की जानी चाहिए?
फोरकास्टर

पंकरात्ज़ पाठ के संदर्भ में .. हाँ! । आप देख सकते हैं कि मा बहुपद की जड़ों को देखने के लिए कि क्या वे अक्षमता आवश्यकताओं को पूरा करते हैं।
आयरिशस्टैट

इसलिए उपरोक्त ऑटो.इरिमा उल्टा नहीं है, यानी -0.1391-0.5912-0.5491 <1 है इसलिए मॉडल ठीक है।
फोरकास्टर

जवाबों:


17

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

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

approximation(length(x)>100 | frequency(x)>12)approximationTRUE n=100n=500 approximationauto.arima()approximation = TRUEarima()

आपके उदाहरण 1 के लिए, हमारे पास होना चाहिए

> auto.arima(y, approximation = FALSE)
Series: y 
ARIMA(0,0,1) with non-zero mean 

Coefficients:
         ma1  intercept
      0.7166    19.9844
s.e.  0.0301     0.0797

sigma^2 estimated as 1.079:  log likelihood=-728.94
AIC=1463.87   AICc=1463.92   BIC=1476.52
> qa
Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.0565  0.6890    19.9846
s.e.  0.0626  0.0456     0.0830

sigma^2 estimated as 1.078:  log likelihood=-728.53
AIC=1465.06   AICc=1465.14   BIC=1481.92

इसलिए auto.arima()सच्चे मॉडल की तुलना में अधिक पारसिमिक मॉडल का चयन किया है; एक ARIMA (0, 0, 1) चुना जाता है। लेकिन यह सूचना मानदंड पर आधारित है और अब वे अनुरूप हैं; चयनित मॉडल में AIC, AICc और BIC कम होते हैं, हालांकि AIC और AICc के अंतर छोटे होते हैं। कम से कम अब चयन सूचना मानदंडों के आधार पर मॉडल चुनने के मानदंडों के अनुरूप है।

एमए (1) को चुने जाने का कारण, मेरा मानना ​​है, मेरे द्वारा बताए गए पहले अंक से संबंधित है; अर्थात्, किसी AR AR (p, d, q) से खींचे गए नमूने के लिए सबसे अच्छा फिटिंग मॉडल सही मॉडल के समान क्रम का नहीं हो सकता है। यह यादृच्छिक नमूने के कारण है। लंबी श्रृंखला या लंबे समय तक जलाए जाने से इस संभावना को बढ़ाने में मदद मिल सकती है कि सही मॉडल का चयन किया गया है, लेकिन इस पर बैंक नहीं है।

बावजूद, यहाँ नैतिक यह है कि जब कुछ स्पष्ट रूप से गलत दिखता है, जैसे कि आपके प्रश्न में, अपने आप को आश्वस्त करने के लिए संबद्ध मैन पेज या प्रलेखन पढ़ें कि आप समझते हैं कि सॉफ्टवेयर कैसे काम करता है।


विस्तृत प्रतिक्रिया के लिए धन्यवाद। मैंने दूसरे उदाहरण के लिए आपके दृष्टिकोण का उपयोग किया: set.seed (453) y <- arima.sim (n = 500, सूची (ar = 0.2, ma = 0.6), माध्य = 10) auto.arima (y, सन्निकटन =) FALSE) और यह वही है जो मुझे मिलता है, यह स्पष्ट रूप से डेटा को ओवरफिट कर रहा है - ARIMA (2,0,4) जो गैर-शून्य माध्य गुणांक के साथ है: ar1 ar2 ma1 ma2 ma3 ma4 अवरोधन 0.5369 -0.9827 0.3681 0.6799 0.7065 0.1701 20.0329 se 0.0278 0.049999 0.0533 0.0630 0.0793 0.0574 0.0927 सिग्मा ^ 2 का अनुमान 1.024: लॉग संभावना = -716.17 एआईसी = 1448.33 एआईसीसी = 1448.63 बीआईसी = 1482.05
फोरकास्टर

मैंने अभी तक उस अध्याय को नहीं पढ़ा है जिसमें कुछ "इनवर्टरबिलिटी" कहा जाता है। क्या दूसरे मामले में auto.arima मॉडल डायग्नोसिस में "इनवर्टिटी" नियम का उल्लंघन करता है ?, मैं बंद हो सकता हूं, अगर आप गलत हैं तो क्या आप सही कर सकते हैं?
फोरकास्टर

1
@forecaster मान लें कि आपको सच्चाई का पता नहीं है, आपके पास हाथ का नमूना है। उस परिस्थिति में, AIC आदि वही कर रहे हैं जो आप उन्हें करने के लिए कह रहे हैं। जैसा कि मैंने ऊपर कहा, सिम्युलेटेड सीरीज़ वह नहीं हो सकती है जिसे आपने मांगा था, या यूँ कहें कि आपके द्वारा लिए गए छोटे नमूने से सही श्रृंखला की सफलतापूर्वक पहचान करना संभव नहीं हो सकता है। यहाँ या कहीं भी आँकड़ों में निहित कुछ भी नहीं है कि आपको एक, TRUE मॉडल मिलेगा। सांख्यिकीविद् के रूप में, यदि आपको लगता है कि श्रृंखला ओवरफ़ीड है (पूर्व ज्ञान से कहें), खोजे गए शब्दों के क्रम पर प्रतिबंध लगाएं। या BIC को रोक मापदंड के रूप में उपयोग करें।
मोनिका को बहाल करें - जी। सिम्पसन

मैं पर्याप्त रूप से अच्छी तरह से नहीं जानता कि उस प्रश्न का उत्तर देने में अक्षमता क्या है। शायद यह यहाँ एक नया सवाल है?
मोनिका को बहाल करें - जी। सिम्पसन

@forecaster (कारण मैं कहता हूं कि BIC, यह जटिलता पर एक अतिरिक्त जुर्माना लगाता है। इस मामले में, ARIMA के BIC (1, 0, 1) के पास auto.arima()बसने वाले मॉडल की तुलना में BIC कम है , इसलिए यदि वे केवल दो थे। उम्मीदवार मॉडल, सरल का चयन किया गया होगा ...)
मोनिका को बहाल करें - जी सिम्पसन

2

मेरे सवाल का जवाब देने के लिए @ Gavin, @Irststat और @Rob का बहुत बहुत धन्यवाद। यह स्पष्ट है कि अगर मुझे auto.arima BIC सूचना मानदंड जैसे स्वचालित एल्गोरिदम से एक पारसिमिस्टिक मॉडल की आवश्यकता है, तो AIC के विपरीत विशेष रूप से इस पोस्ट और @ Gavin के पोस्ट को देखने के बाद उपयोग किया जाना चाहिए ।

मैं @Irishstat से भी बहुत सहमत हूं कि IC मानदंड के आधार पर एक मॉडल चुनने की सीमाएँ हैं कि यह आउटलेर और लेवल शिफ्ट के साथ डेटा फिट करने के लिए बेहतर मॉडल का चयन नहीं करता है। मेरी राय में, आउटलेयर + स्तर की बदलाव + गन्दा डेटा = वास्तविक शब्द व्यापार डेटा , और कुछ भी पाठ्यपुस्तक डेटासेट है। कोई भी स्वचालित मॉडल जो आउटलेर्स + स्तर की बदलावों पर विचार नहीं करता है, फिर से मेरी राय में सावधानी के साथ उपयोग किया जाना चाहिए।

कोड पर आ रहा है - auto.arima में AIC या BIC में से चुनने का विकल्प है। नीचे दिए गए कोड को प्रश्नों से ऊपर से संशोधित किया गया है।

कई धन्यवाद क्रॉस-मान्य समुदाय। मैं हर दिन नई और इंट्रस्टिंग चीजें सीखता हूं।

###############
set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

## Adequetly describes the unknown data
fit.aic <- auto.arima(y,ic = c("aic"))
fit.aic

## Selects the model that is parsimonious
fit.bic <- auto.arima(y,ic = c("bic"))
fit.bic

BIC IC एक MA (2) मॉडल चुनती है।

> fit.bic
Series: y 
ARIMA(0,0,2) with non-zero mean 

Coefficients:
         ma1     ma2  intercept
      0.9256  0.2335    20.0326
s.e.  0.0453  0.0444     0.0992

sigma^2 estimated as 1.059:  log likelihood=-724.19
AIC=1456.39   AICc=1456.47   BIC=1473.24

1

मैंने AUTOBOX (वाणिज्यिक सॉफ्टवेयर का एक टुकड़ा जिसे मैंने विकसित करने में मदद की है) में 500 मान लिया और यहाँ छवि विवरण दर्ज करेंमापदंडों के कब्ज के लिए चाउ टेस्ट के आधार पर निम्नलिखित सलाह प्राप्त की । एक बहुत ही बुनियादी गलती जो टाइम सीरीज़ के अध्ययन में की जाती है, वह यह मान लेना है कि डेटा किसी विशेष मॉडल द्वारा निरंतर मापदंडों के साथ संचालित होता है। AUTOBOX ने 246 की अवधि में एक विराम बिंदु का पता लगाया जो एक सिमुलेशन को प्रतिबिंबित कर सकता है जो "वार्म अप" नहीं किया गया था। जब डेटा अच्छे अभ्यास का अनुकरण करना पहले "एन" मूल्यों को हटाना और फिर शेष लोगों का अध्ययन करना है। मैंने डेटा लिया और इसे दो खंडों में विभाजित किया; पहले 245 और शेष 255। यहाँ दो यहाँ छवि विवरण दर्ज करेंबहुत ही असम्पीडित एसीफ भूखंड हैं यहाँ छवि विवरण दर्ज करें

विश्लेषण पर लौटना: यहाँ वह मॉडल है जिसे पिछले 246 मूल्यों के लिए यहाँ छवि विवरण दर्ज करेंऔर यहाँ यहाँ छवि विवरण दर्ज करेंनिम्न आँकड़ों के साथ पहचाना गया था यहाँ छवि विवरण दर्ज करें। वास्तविक / फ़िट और पूर्वानुमान यहाँ यहाँ छवि विवरण दर्ज करेंअवशिष्ट भूखंड के साथ है यहाँ छवि विवरण दर्ज करें। अवशिष्टों के ACF पर्याप्तता का सुझाव देते हैंयहाँ छवि विवरण दर्ज करें। ध्यान दें कि जिन 5 दालों की पहचान की गई थी, उनका प्रभाव बहुत कम था और उन्हें आसानी से अवहेलना किया जा सकता था (इस मामले में!)। संक्षेप में, यहां सीखा गया पाठ यह है कि कभी-कभी हमारे पास बहुत अधिक डेटा होता है और हमें समय बदलने वाले गुणांक पर विचार करने की आवश्यकता होती है। इस मामले में हम उन मापदंडों में बदलाव की पहचान कर रहे हैं जो (जाहिरा तौर पर) परिणामी मॉडल / मापदंडों पर बड़ा प्रभाव नहीं डालते हैं, लेकिन यह समय श्रृंखला विश्लेषण में आम तौर पर आवश्यक प्रक्रिया सुधार को इंगित करता है। Auto.arima के साथ मेरा अनुभव बताता है कि चूंकि यह स्पष्ट रूप से गॉसियन उल्लंघनों का इलाज / उपाय नहीं करता है, इसलिए यह डेटा से संरचना को निकालने के बजाय ऐतिहासिक मूल्यों पर बहुत अधिक झुकाव करके मॉडल पर चला जाता है। इस मामले में चूंकि यह गाऊसी उल्लंघनों के बिना कसकर नियंत्रित किया गया सिमुलेशन था, लेकिन मुझे आमतौर पर ARIMA मॉडल की पहचान के लिए इस तरह के एक बैंडवाइट सीमित और एकल कदम दृष्टिकोण के बारे में संदेह होगा। विश्वास करो किन्तु सत्यापित करो !


0

Akaike_information_criterion का कहना है कि "को रिश्तेदार संभावना के रूप में व्याख्या की जा सकती है कि ith मॉडल न्यूनतम (अनुमानित) सूचना हानि"।  exp(AICminAICi)/2

यदि ऐसा है, तो यह उपयोगकर्ताओं को एआईसी (?) के साथ मिलकर इन सापेक्ष संभावनाओं को देखने में मदद करेगा auto.arima( ... trace=TRUE )। उदाहरण के लिए, इस प्रश्न के अनुसार अंडे का डेटा चलता है

                                # relprob = exp( (AICmin - AIC) / 2 ) * 100
 ARIMA(0,1,0) with drift : 784.5    100
 ARIMA(0,1,1) with drift : 784.8     86
 ARIMA(1,1,0) with drift : 784.9     82
 ARIMA(0,1,0)            : 792.4      2
 ARIMA(2,1,2) with drift : Inf    0
 ARIMA(1,1,1) with drift : Inf    0

1
यह एक उत्तर या एक प्रश्न है?
टिम

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