मुझे लगता है कि आपको यह बहुत सही लगा, लेकिन VAR मॉडल बनाते समय, मैं आमतौर पर सुनिश्चित करता हूं कि मैं इन चरणों का पालन करूं:
1. चरों का चयन करें
यह आपके मॉडल के निर्माण का सबसे महत्वपूर्ण हिस्सा है। यदि आप किसी परिसंपत्ति की कीमत का पूर्वानुमान लगाना चाहते हैं, तो आपको उन चरों को शामिल करना होगा जो मूल्य गठन के तंत्र से संबंधित हैं। ऐसा करने का सबसे अच्छा तरीका एक सैद्धांतिक मॉडल है। चूंकि आपने यह उल्लेख नहीं किया है कि संपत्ति क्या है और आपके मॉडल में शामिल अन्य चर क्या हैं, मैं वास्तव में इस आइटम के बारे में बहुत कुछ नहीं कह सकता, लेकिन आप यहां संपत्ति मूल्य निर्धारण मॉडल का सारांश पा सकते हैं ।
2. डेटा की जांच करें और उचित समायोजन करें
एक बार जब आप चरों का चयन कर लेते हैं, तो आप डेटा के लिए कुछ समायोजन कर सकते हैं जो मॉडल के अनुमान और व्याख्या में सुधार करेगा। सारांश आंकड़ों का उपयोग करना और आउटलेर्स, लापता डेटा और अन्य अजीब व्यवहारों का पता लगाने के लिए श्रृंखला का एक भूखंड देखना उपयोगी है। मूल्य डेटा के साथ काम करते समय, लोग आमतौर पर प्राकृतिक लॉग लेते हैं, जो एक विचरण-स्थिरीकरण परिवर्तन है और इसकी एक अच्छी व्याख्या भी है (लॉग में मूल्य अंतर लगातार यौगिक रिटर्न बन जाता है)। मुझे यकीन नहीं है कि यदि आपने मॉडल का अनुमान लगाने से पहले लॉग लिया है, लेकिन ऐसा करना एक अच्छा विचार है यदि आप संपत्ति की कीमतों के साथ काम कर रहे हैं।
3. जांचें कि क्या डेटा में गैर-स्थिर घटक हैं
अब आप जांच कर सकते हैं कि आपकी श्रृंखला स्थिर है या नहीं। यदि आप केवल पूर्वानुमान में रुचि रखते हैं, जैसा कि @JacobH द्वारा नोट किया गया है, तो आप VAR को उन स्तरों में भी चला सकते हैं जब आपकी श्रृंखला गैर-स्थिर होती है, लेकिन तब आपकी मानक त्रुटियों पर भरोसा नहीं किया जा सकता है, जिसका अर्थ है कि आप मूल्य के बारे में अनुमान नहीं लगा सकते हैं गुणांक। आपने ADF परीक्षण का उपयोग करके स्टेशनरी का परीक्षण किया है, जिसका उपयोग आमतौर पर इन अनुप्रयोगों में किया जाता है, लेकिन ध्यान दें कि आपको निर्दिष्ट करना चाहिए कि क्या आप परीक्षण को i के साथ चलाना चाहते हैं) कोई स्थिर और कोई प्रवृत्ति नहीं; ii) एक स्थिर और कोई प्रवृत्ति नहीं; और iii) एक स्थिर और एक प्रवृत्ति। आमतौर पर मूल्य श्रृंखला में स्टोकेस्टिक रुझान होते हैं, इसलिए एक रैखिक प्रवृत्ति सटीक नहीं होगी। इस स्थिति में आप विनिर्देश ii का चयन कर सकते हैं। आपके कोड में आपने उपयोग किया हैndiffs
पूर्वानुमान पैकेज का कार्य। मुझे यकीन नहीं है कि उन तीन विकल्पों में से कौन सा यह फ़ंक्शन मतभेदों की संख्या की गणना करने के लिए लागू करता है (मैं इसे प्रलेखन में नहीं पा सका)। अपने परिणाम की जांच करने के लिए आप ur.df
"urca" पैकेज में फ़ंक्शन का उपयोग करना चाहते हैं :
adf <- ur.df(x[, "VAR1"], type = "drift", lags = 10, selectlags = "AIC")
ध्यान दें कि यह कमांड ADF परीक्षण को निरंतर और AIC कमांड द्वारा चयनित लैग्स के साथ चलाएगा, अधिकतम 10. अंतराल के साथ। यदि आपको इस प्रश्न को देखने वाले परिणामों की व्याख्या करने में समस्या है । यदि श्रृंखला मैं है (1) बस अंतर का उपयोग करें, जो कि निरंतर चक्रवृद्धि रिटर्न के बराबर होगा। यदि परीक्षण इंगित करता है कि श्रृंखला I (2) है और आप इस बारे में संदेह में हैं कि आप अन्य परीक्षणों का उपयोग कर सकते हैं, उदाहरण के लिए फिलिप्स-पेरोन परीक्षण (PP.test
समारोह में आर)। यदि सभी परीक्षण इस बात की पुष्टि करते हैं कि आपकी श्रृंखला मैं है (2) (परीक्षण चलाने से पहले श्रृंखला के लॉग का उपयोग करने के लिए याद रखें) तो दूसरा अंतर लें, लेकिन ध्यान दें कि परिणामों की आपकी व्याख्या बदल जाएगी, क्योंकि अब आप के साथ काम कर रहे हैं निरंतर चक्रवृद्धि रिटर्न का अंतर। परिसंपत्तियों की कीमतें आमतौर पर I (1) होती हैं क्योंकि वे एक यादृच्छिक चलने के करीब हैं, जो कि पहले अंतर को लागू करते समय एक सफेद शोर है।
4. मॉडल के क्रम का चयन करें
यह आमतौर पर इस्तेमाल किए गए मानदंड जैसे कि एक्के, श्वार्ज़ (बीआईसी) और हन्नान-क्विन के साथ किया जा सकता है। आपने VARselect
फ़ंक्शन के साथ ऐसा किया है और यह सही है, लेकिन याद रखें कि वह कौन सी कसौटी है जिसे आपने अपना निर्णय लेने के लिए इस्तेमाल किया था। आमतौर पर अलग-अलग मापदंड VAR के लिए अलग-अलग ऑर्डर दर्शाते हैं।
5. जाँच करें कि क्या संबंध रिश्ते हैं
यदि आपकी सभी श्रृंखला I (1) या I (2) हैं, तो VAR मॉडल चलाने से पहले, आमतौर पर यह जांचना एक अच्छा विचार है कि क्या श्रृंखला के बीच कोई संयोग संबंध नहीं है, विशेष रूप से यदि आप आवेग प्रतिक्रिया विश्लेषण करना चाहते हैं बच गया। आप यह कर सकते हैं कि जोहान्सन परीक्षण या एंगल-ग्रेंजर (केवल द्विभाजित मॉडल के लिए) का उपयोग करना। आर में आप ca.jo
"उरका" पैकेज के कार्य के साथ जोहान्सन परीक्षण चला सकते हैं । ध्यान दें कि इस परीक्षण के भी अलग-अलग विनिर्देश हैं। मूल्य श्रृंखला के लिए मैं आमतौर पर निम्नलिखित कोड का उपयोग करता हूं (जहां p
आइटम 4 की लंबाई लंबाई है, जो स्तरों में श्रृंखला के साथ प्रदर्शन किया गया है):
jo_eigen <- ca.jo(x, type = "eigen", ecdet = "const", K = p)
jo_trace <- ca.jo(x, type = "trace", ecdet = "const", K = p)
6. मॉडल का अनुमान लगाएं
यदि आपकी श्रृंखला संयोगित नहीं है, तो आप आसानी से VAR
कमांड के साथ मॉडल का अनुमान लगा सकते हैं , जैसा कि आपके कोड में किया गया है। यदि श्रृंखला को संयोगित किया जाता है, तो आपको निम्नलिखित कोड के साथ वेक्टर त्रुटि सुधार मॉडल का अनुमान लगाकर लंबे समय तक चलने वाले संबंध पर विचार करने की आवश्यकता है (जहां k
संयोग का क्रम है):
vecm <- cajorls(joeigen, r = k)
7. डायग्नोस्टिक्स टेस्ट चलाएं
यह जांचने के लिए कि क्या आपका मॉडल अच्छी तरह से निर्दिष्ट है, आप अवशिष्ट पर धारावाहिक सहसंबंध का परीक्षण चला सकते हैं। अपने कोड में आपने serial.test
फ़ंक्शन के साथ एक पोर्टमंट्यू टेस्ट का उपयोग किया है । मैंने कभी भी इस फ़ंक्शन का उपयोग नहीं किया है, लेकिन मुझे लगता है कि यह ठीक है। पैकेज MTS में लागू Ljung-Box परीक्षण का एक बहुभिन्नरूपी संस्करण भी है जिसे आप फ़ंक्शन के साथ चला सकते हैं mq
।
8. भविष्यवाणियाँ करें
यह सुनिश्चित करने के बाद कि आपका मॉडल अच्छी तरह से निर्दिष्ट है आप predict
फ़ंक्शन का उपयोग कर सकते हैं जैसा आपने अपने कोड में किया था। आप फ़ंक्शन के उपयोग से किसी विशेष झटके पर चर कैसे प्रतिक्रिया करते हैं, यह जांचने के लिए आप आवेग प्रतिक्रिया कार्यों को भी साजिश कर सकते हैं irf
।
9. भविष्यवाणियों का मूल्यांकन करें
एक बार जब आप अपनी भविष्यवाणी कर लेते हैं तो आपको उनका मूल्यांकन करना चाहिए और अन्य मॉडलों के खिलाफ तुलना करनी चाहिए। पूर्वानुमानों की सटीकता का मूल्यांकन करने के कुछ तरीके यहां पाए जा सकते हैं , लेकिन ऐसा करने के लिए यह महत्वपूर्ण है कि आप अपनी श्रृंखला को प्रशिक्षण और परीक्षण सेट में विभाजित करें, जैसा कि लिंक में बताया गया है।