วิธีใช้ DLM พร้อมตัวกรอง Kalman สำหรับการคาดการณ์


19

มีคนแนะนำฉันผ่านตัวอย่างเกี่ยวกับวิธีใช้ตัวกรอง DLM Kalman ใน R ในอนุกรมเวลา บอกว่าฉันมีค่าเหล่านี้ (ค่ารายไตรมาสที่มีฤดูกาลประจำปี); คุณจะใช้ DLM เพื่อทำนายค่าต่อไปอย่างไร และ BTW ฉันมีข้อมูลในอดีตเพียงพอหรือไม่

89  2009Q1  
82  2009Q2  
89  2009Q3  
131 2009Q4  
97  2010Q1  
94  2010Q2  
101 2010Q3  
151 2010Q4  
100 2011Q1  
?   2011Q2

ฉันกำลังมองหาคำตอบแบบทีละขั้นตอนสำหรับวิธีทำทีละขั้นตอน ความแม่นยำในการทำนายไม่ใช่เป้าหมายหลักของฉันฉันแค่ต้องการเรียนรู้ลำดับของรหัสที่ให้ตัวเลขสำหรับไตรมาสที่ 2 ปี 2011 ถึงแม้ว่าฉันจะมีข้อมูลไม่เพียงพอ


3
สิ่งนี้อาจได้คำตอบที่ดีกว่าบน stats.stackexchange.com
Joshua Ulrich

Bump ... ฉันยังไม่เข้าใจวิธีการทำเช่นนี้ ผู้รับใด ๆ ในการตอบกระทู้ต้นฉบับ?
datayoda

2
ด้วย DLM มันไม่ใช่สไตล์ตำราอาหารอย่างที่คุณอาจชอบ ฉันจะใช้คำตอบของ RockScience (บทความสั้น DLM) และเดินผ่าน DLM นั้นเหมือนกับการออกแบบโปรแกรมมากกว่าเทคนิคอื่น ๆ ที่ต้องการเพียงแค่เสียบข้อมูลและปรับแต่งพารามิเตอร์บางอย่าง ในที่สุดคุณกำลังออกแบบชุดของอาร์เรย์ที่ใช้บางสิ่งบางอย่างเช่น Hidden Markov Model และdlmแพ็คเกจทำให้ง่ายที่สุดเท่าที่จะทำได้
Wayne

คุณมีวิธีแก้ไขปัญหาของคุณหรือไม่? ฉันกำลังมองหาวิธีการแก้ไขปัญหาของไทม์ซีรีที่คล้ายกัน แต่ไม่สามารถหาวิธีแก้ไขได้

คุณทำงานผ่านกระดาษที่ @RockScience แนะนำหรือยัง คุณดูdlmแพ็คเกจหรือยัง ดังที่ฉันพูดในคำตอบของฉัน DLMs เป็นเหมือนการสร้างโปรแกรมมากกว่าการเสียบตัวแปรบางอย่างในการเรียกใช้ฟังก์ชัน ดาต้าดาดาไม่ตอบรับคำตอบดังนั้นฉันไม่แน่ใจว่าพวกเขาผ่านการสังเกตนี้ไปแล้ว
Wayne

คำตอบ:



16

DLM นั้นเท่ห์ แต่ก็ไม่ง่ายเหมือนพูด ARIMA หรือวิธีอื่น ๆ ในวิธีอื่นคุณเสียบข้อมูลของคุณแล้วปรับพารามิเตอร์บางอย่างของอัลกอริทึมซึ่งอาจหมายถึงการวินิจฉัยต่างๆเพื่อเป็นแนวทางในการตั้งค่าของคุณ

ด้วย DLM คุณกำลังสร้างเครื่องสเตตสเตตซึ่งประกอบด้วยเมทริกซ์หลายตัวที่ใช้บางอย่างเช่น Hidden Markov Model แพคเกจบางอย่าง ( sspirฉันคิดว่าในหมู่อื่น ๆ ) คาดหวังว่าคุณเข้าใจแนวคิดและสิ่งที่การฝึกอบรมทำ ฉันขอแนะนำให้คุณเริ่มต้นด้วยdlmแพ็คเกจและตามที่ @RockScience แนะนำแนะนำให้อ่านบทความสั้น ๆ

โดยทั่วไปdlmคุณจะต้องทำหลายขั้นตอน:

  1. ส่วนประกอบชนิดใดที่อธิบายซีรี่ส์ของฉัน เทรนด์? ฤดูกาล? ตัวแปรภายนอก? คุณจะใช้dlmเครื่องมือที่ต้องการdlmModPolyใช้งานส่วนประกอบเหล่านี้โดยใช้+โอเปอเรเตอร์เพื่อรวมเข้าด้วยกันเป็นแบบจำลองเดียว

  2. สร้างรูทีนย่อย R ที่ใช้พารามิเตอร์หลายตัวตามโมเดลนี้สร้างส่วนประกอบด้วยพารามิเตอร์เหล่านั้นจากนั้นรวมเข้าด้วยกันและส่งคืนโมเดลที่ได้ผลลัพธ์

  3. ใช้dlmMLEเพื่อทำการค้นหา / ปรับให้เหมาะสมเพื่อค้นหาพารามิเตอร์ที่เหมาะสม (โดยใช้ MLE ซึ่งเป็นการปรับให้เหมาะสมที่สุดโดยมีข้อผิดพลาดที่สามารถเกิดขึ้นได้ในการปรับให้เหมาะสม) dlmMLEเรียกรูทีนย่อย R ซ้ำ ๆ ของคุณพร้อมพารามิเตอร์ตัวเลือกเพื่อสร้างแบบจำลองจากนั้นทดสอบพวกเขา

  4. สร้างโมเดลสุดท้ายของคุณโดยใช้รูทีนย่อย R ที่คุณสร้างรวมถึงพารามิเตอร์ที่คุณพบในขั้นตอนที่ 3

  5. กรองข้อมูลของคุณด้วยแล้วบางทีเรียบด้วยdlmFilterdlmSmooth

  6. หากคุณใช้dlmModRegหรือทำทุกอย่างที่ทำให้โมเดลมีพารามิเตอร์ชุดตัวแปรเวลาคุณไม่สามารถใช้dlmForecastในการคาดการณ์ซีรี่ส์ของคุณ หากคุณจบลงด้วยรูปแบบที่แปรผันตามเวลาคุณจะต้องกรอกข้อมูลการป้อนข้อมูลของคุณด้วย NA และปล่อยให้การdlmFilterกรอกข้อมูลใน NA สำหรับคุณ (การคาดการณ์ของชายยากจน) เนื่องจากdlmForecastไม่ทำงานกับพารามิเตอร์ที่แปรผันตามเวลา

  7. หากคุณต้องการตรวจสอบองค์ประกอบแต่ละรายการ (พูดถึงแนวโน้มแยกจากฤดูกาล) คุณจะต้องเข้าใจเมทริกซ์และสิ่งที่อยู่ในแต่ละคอลัมน์รวมทั้งทำความเข้าใจเล็กน้อยว่าdlmจะรวมเข้าด้วยกันอย่างไร (ลำดับสำคัญ!)

มีแพ็คเกจอื่นที่มีชื่อฉันซึ่งพยายามสร้างส่วนหน้าซึ่งสามารถใช้แพ็คเกจเหล่านี้ได้หลายแพคเกจ (รวมถึงdlmส่วนท้าย) น่าเสียดายที่ฉันไม่เคยได้รับมันมาเพื่อทำงานได้ดี แต่นั่นอาจเป็นฉัน

ฉันขอแนะนำให้รับหนังสือจาก DLM ฉันมีคู่ของพวกเขาและเล่นเป็นจำนวนมากdlmเพื่อไปยังที่ที่ฉันอยู่และฉันไม่ใช่ผู้เชี่ยวชาญไม่ว่าด้วยวิธีใด


ขอบคุณเวย์นฉันคิดว่ากรณีของฉันค่อนข้างเรียบง่ายในแบบที่ฉันไม่เห็นแนวโน้มหรือฤดูกาลที่ชัดเจนในการตรวจสอบด้วยสายตา (อย่างไรก็ตามหากคุณทราบถึงการทดสอบใด ๆ ใน R โปรดแจ้งให้เราทราบฉันจะพยายามเรียกใช้พวกเขา) ปัญหาของฉันคือฉันไม่ทราบวิธีเติมอาร์กิวเมนต์เช่น (FF, V, GG, W, m0, C0, dV ฯลฯ ) ในฟังก์ชัน dlm สำหรับข้อมูลของฉัน นี่คือปัญหาหลักสำหรับฉัน หากฉันมีข้อมูลอนุกรม bivariate (y = X1 + X2) เช่น (ราคา = อุปสงค์ + อุปทาน) ดังนั้นฉันจะคำนวณการโต้แย้งเหล่านี้สำหรับข้อมูลของฉันได้อย่างไร FF, V, GG, W, m0, C0, dV และอื่น ๆ ที่จำเป็นในฟังก์ชั่น dlm
nclfinance

1
@nclfinance โปรดอ่านคำถามที่พบบ่อยและไม่ถือว่าสถานที่นี้เป็นฟอรัม

@nclfinance: ทำงานผ่านdlmบทความสั้น ๆ ของแพ็คเกจ คุณจะได้เรียนรู้สิ่งที่คุณจำเป็นต้องรู้ นั่นเป็นเหตุผลที่ฉันแนะนำdlmเพราะคุณไม่ได้สร้าง FF ฯลฯ ด้วยตัวเอง
Wayne

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.