ARIMA Model ตอนที่ 1: เข้าใจ ARIMA แบบ Practical
Time series time series แล้วก็ time series
เหมือนเราได้ยินคำนี้บ่อยมากในโลกของโมเดล เพราะว่ามันเป็นข้อมูลประเภทหนึ่งที่มีขนาดใหญ่มากบนโลกจริงของเรา พูดถึง Time series มันคือข้อมูลอะไรก็ได้ที่แกน x มันคือเวลา ไม่ว่าหน่วยจะเป็นอะไร เช่น นาที ชั่วโมง วัน สัปดาห์ เดือน หลายเดือน หรือหน่วยเป็นปี ถ้ายกตัวอย่างให้เห็นภาพมากขึ้นก็คือ ราคาหุ้น ราคาน้ำมัน ตัวแปรเศรษฐกิจมหภาค หรือพยากรณ์อากาศ เป็นต้น
วิธีการสร้างโมเดลสำหรับข้อมูลเหล่านี้มีมากมาย แต่วันนี้เรามาเริ่มสร้างกันด้วย ARIMA Model น่าจะต้องเขียน Model นี้แบ่งซอยย่อยเป็นหลายตอน แต่ไม่รู้ว่ากี่ตอนถึงจบ แต่ไม่เป็นไร เพราะจะแปะลิงค์ตอนเก่า ๆ ไว้ในตอนต่อไปเสมอละกัน
เนื่องจากว่างานที่ทำอยู่เป็นเรื่องเกี่ยวกับมาตรฐานบัญชีใหม่ (IFRS 9) เลยต้องยุ่งกับพวกตัวแปร Macroeconomics อยู่หลายปี แล้วตัวมาตรฐานบัญชีใหม่เนี่ย มันต้องมีการ Forecast เพื่อ Predict อนาคตด้วย คำถามหลักที่เจอจากลูกค้าคือ
พี่จะ Forecast ยังไง ?
รู้ไหมว่าทำไมโปรเจคถึงไม่ได้รวม Forecast ตัวแปร Macroeconomics เข้าไปไว้ใน Scope เพราะว่ามันทำยากและทำได้หลากหลายวิธีมากกกก กอ ไก่ล้านตัวนั่นเอง ซึ่ง ARIMA Model ก็เป็นหนึ่งในนั้น เกริ่นนานแล้ว เข้าเรื่องเถอะ
ARIMA Model คือ Auto Regressive Integrated Moving Average (ไฮไลท์ตัวหนายากมาก แต่ก็ทำเสร็จแล้ว) ซึ่งหลักการของมันคือ พยายามกำจัด “Noise” ออกจาก Time series เพื่อที่จะลด Error ให้ได้มากที่สุด วิธีการที่ใช้ในการกำจัด Noise ที่ว่ามาก็คือที่มาของชื่อโมเดล ARIMA นั่นเอง
- AR = Auto Regressive
- I =Integrated
- MA = Moving Average
การรวมตัวของทั้ง 3 เราจะเรียกมันว่า “Order” สามารถเขียนได้ว่า ARIMA (p,d,q) ซึ่งแต่ละ Order ก็เรียงตามลำดับเลย AR, I และ MA มีวิธีการหาที่ต่างกันตามแต่ละเทคนิค
ซึ่งเราจะมาดูทีละ Component กันในตอนต่อ ๆ ไป ตอนนี้ Import data มาก่อน
ข้อมูลที่ใช้ทำโมเดลในครั้งนี้คือ เราจะมา Model ราคาหุ้นของการบินไทยกัน เราใช้การดึง API จาก Yahoo financial ดึงข้อมูลย้อนหลังมาทั้งหมด 8 ปี ตั้งแต่ 04/01/2012 ถึงวันที่เขียนตอนนี้คือ 03/04/2020 เดี๋ยวจะใช้ข้อมูลทั้งหมดนี่แหละในการทำโมเดลครั้งนี้
หน้าตาของ Time series ที่เราจะมา Model กันครั้งนี้ เนื่องจาก ARIMA Model ต้องเขียนหลายตอนหน่อย แต่ว่าคงอัพเดตข้อมูลเพิ่มขึ้นเรื่อย ๆ ไม่ไหว ดังนั้นขอ Fix มันไว้ถึงอัพเดตล่าสุดที่ 03/04/2020 ละกัน ตอนแรกวันนี้เอาเท่านี้พอก่อนละกัน ไม่อยากเขียนยาว