ฉันคิดว่าคุณเข้าใจถูกต้องแล้ว แต่เมื่อสร้างแบบจำลอง 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 ด้วยค่าคงที่และ lags ที่เลือกโดยคำสั่ง AIC โดยมีความล่าช้าสูงสุด 10 หากคุณมีปัญหาในการตีความผลลัพธ์ให้ดูที่คำถามนี้ หากซีรี่ย์เป็น I (1) ให้ใช้ความแตกต่างซึ่งจะเท่ากับผลตอบแทนรวมที่ต่อเนื่อง หากการทดสอบระบุว่าชุดข้อมูลเป็น I (2) และคุณมีข้อสงสัยว่าคุณสามารถใช้การทดสอบอื่น ๆ ได้เช่นการทดสอบ Phillips-Perron (PP.test
ฟังก์ชั่นใน R) หากการทดสอบทั้งหมดยืนยันว่าชุดของคุณคือฉัน (2) (อย่าลืมใช้บันทึกของชุดข้อมูลก่อนที่จะทำการทดสอบ) จากนั้นใช้ความแตกต่างที่สอง แต่โปรดทราบว่าการตีความผลลัพธ์จะเปลี่ยนไปเนื่องจากตอนนี้คุณกำลังทำงานกับ ความแตกต่างของผลตอบแทนรวมที่ต่อเนื่อง ราคาของสินทรัพย์มักจะเป็นฉัน (1) เนื่องจากพวกเขาอยู่ใกล้กับการเดินสุ่มซึ่งเป็นเสียงสีขาวเมื่อใช้ความแตกต่างครั้งแรก
4. เลือกลำดับของรุ่น
สามารถทำได้ด้วยเกณฑ์ที่ใช้กันทั่วไปเช่น Akaike, Schwarz (BIC) และ Hannan-Quinn คุณทำสิ่งนั้นด้วยVARselect
ฟังก์ชั่นและถูกต้อง แต่จำไว้ว่าเกณฑ์ที่คุณใช้ในการตัดสินใจคืออะไร เกณฑ์ที่แตกต่างกันมักจะระบุคำสั่งซื้อที่แตกต่างกันสำหรับ VAR
5. ตรวจสอบว่ามีความสัมพันธ์ cointegrating
หากซีรี่ส์ทั้งหมดของคุณคือ I (1) หรือ I (2) ก่อนที่จะรันโมเดล VAR คุณควรตรวจสอบว่าไม่มีความสัมพันธ์ระหว่างจุดเชื่อมต่อระหว่างซีรีย์หรือไม่โดยเฉพาะถ้าคุณต้องการวิเคราะห์การตอบสนองแบบอิมพัลส์ด้วย ส่วนเหลือ คุณสามารถทำได้โดยใช้การทดสอบ Johansenn หรือ Engle-Granger (สำหรับรุ่น bivariate เท่านั้น) ใน R คุณสามารถรันการทดสอบ Johansen ด้วยca.jo
ฟังก์ชันของแพ็คเกจ "urca" โปรดทราบว่าการทดสอบนี้มีข้อกำหนดที่แตกต่างกัน สำหรับซีรีย์ราคาฉันมักจะใช้รหัสต่อไปนี้ (โดยที่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
คำสั่งของการ cointegration):
vecm <- cajorls(joeigen, r = k)
7. รันการทดสอบการวินิจฉัย
เพื่อทดสอบว่าแบบจำลองของคุณระบุไว้ชัดเจนหรือไม่คุณสามารถรันการทดสอบความสัมพันธ์แบบอนุกรมบนส่วนที่เหลือ ในรหัสของคุณคุณใช้การทดสอบ Portmanteau ด้วยserial.test
ฟังก์ชั่น ฉันไม่เคยใช้ฟังก์ชั่นนี้ แต่ฉันคิดว่ามันใช้ได้ นอกจากนี้ยังมีการทดสอบ Ljung-Box รุ่นหลายตัวแปรที่นำมาใช้ในแพ็คเกจ MTS ซึ่งคุณสามารถใช้งานmq
ได้
8. ทำการคาดคะเน
หลังจากคุณแน่ใจว่าแบบจำลองของคุณได้รับการระบุไว้อย่างดีแล้วคุณสามารถใช้predict
ฟังก์ชั่นได้เหมือนในรหัสของคุณ คุณสามารถพล็อตฟังก์ชั่นการตอบสนองแบบอิมพัลส์เพื่อตรวจสอบว่าตัวแปรตอบสนองต่อการช็อคโดยเฉพาะด้วยirf
ฟังก์ชั่น
9. ประเมินการคาดการณ์
เมื่อคุณทำการคาดการณ์ของคุณคุณต้องประเมินพวกเขาและเปรียบเทียบกับรุ่นอื่น ๆ วิธีการบางอย่างในการประเมินความแม่นยำของการพยากรณ์สามารถพบได้ที่นี่แต่การทำเช่นนั้นเป็นสิ่งสำคัญที่คุณจะต้องแบ่งชุดของคุณในชุดฝึกอบรมและชุดทดสอบตามที่อธิบายไว้ในลิงค์