ARIMA Model ตอนที่ 2: หา Integrated (d) และ Stationary analysis
มาถึงตอนที่ 2 กันแล้ว ใครที่เพิ่งผ่านมาแล้วงงว่าตอนที่ 1 หายไปไหน แนะนำว่าให้กลับไปอ่านตอนที่ 1 ก่อนนะครับ
ตอนนี้เรามาหา Order (p,d,q) ของ ARIMA Model กันซึ่งตัวแรกที่หาคือ Integrated หรือ “d” นั่นเอง ซึ่งวิธีการที่ใช้ในการค่า d คือการทดสอบ Stationary ของข้อมูลนั่นเอง
แล้ว Stationary คืออะไร?
Stationary คือข้อมูลที่มีค่า Mean และ Variance คงที่เมื่อเวลาผ่านไป ดังนั้นข้อมูลทุกประเภทที่มี Trend หรือ Seasonal effect หรือทั้งสองอย่างรวมกัน (Trend + Seasonal) จะไม่ถือว่าเป็น Stationary และยังไม่สามารถนำข้อมูลมาใช้ใน Model ได้ ต้องมีการปรับข้อมูลในเบื้องต้นก่อน
Hence, the statistical properties like mean, variance, and co-variance of a stationary time series are all constant over time.
สำหรับการทดสอบ Stationary ของข้อมูลสามารถทำได้ด้วยการทดสอบทาง Statistical test ที่มีชื่อว่า Augmented Dickey–Fuller test ซึ่งเดี๋ยวเรามาลองโค้ดกันเลย
Code
ใน Python มี Package ที่ชื่อว่า adfuller
ที่ใช้ในการทำหา p-Value ของ ADF-Test ซึ่งถ้า p-Value มีค่าน้อยกว่า 0.05 จะสามารถสรุปได้ว่า Time series นั้นเป็น Stationary
เรามาเริ่มจากใช้ข้อมูลดิบมาทำ Stationary test เลย ซึ่งบอกได้เลยตั้งแต่ยังไม่กดรันว่า “มันยังไม่เป็น Stationary หรอก” เพราะว่าข้อมูลดิบส่วนมากจะมี Trend และ Seasonal ปนอยู่
p-Values:0.5602530625595076
จากการรันด้วยข้อมูลดิบ ค่า p-Value ยังมีค่ามากกว่า 0.05 อยู่ดังนั้น ยังใช้ข้อมูลนี้เลยไม่ได้ เพราะว่าข้อมูลยังเป็น Unit-root (Non-stationary) ต้องมีการปรับข้อมูลก่อน ซึ่งโดยส่วนมากแล้วการปรับจะลอง First difference เข้าไปก่อน เผื่อข้อมูลจะ Smooth มากขึ้น แล้วลองทำซ้ำอีกรอบนึง
ผลที่ได้ก็คือ
p-Values:1.9391646356805049e-10
p-Value น้อยกว่า 0.05 แล้ววววว
Result
จากที่ทำมาทั้งหมด เราสามารถสรุปได้ว่า Formation ที่ใช้ทำโมเดลต่อไปคือรูปแบบของ First difference ที่มีค่า d = 1 และนี่เองเป็นเหตุผลที่ว่าทำไมเราต้องเริ่มทำจาก Component Integrated ก่อน