ARIMA Model ตอนที่ 2: หา Integrated (d) และ Stationary analysis

Sasiwut Chaiyadecha
2 min readApr 14, 2020

--

มาถึงตอนที่ 2 กันแล้ว ใครที่เพิ่งผ่านมาแล้วงงว่าตอนที่ 1 หายไปไหน แนะนำว่าให้กลับไปอ่านตอนที่ 1 ก่อนนะครับ

ARIMA model Integrated (d) and Stationary analysis

ตอนนี้เรามาหา 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 analysis
อันนี้เป็น time series ในรูปแบบต่าง ๆ พร้อมทั้งการแปลงข้อมูลให้มันเป็น stationary

สำหรับการทดสอบ Stationary ของข้อมูลสามารถทำได้ด้วยการทดสอบทาง Statistical test ที่มีชื่อว่า Augmented Dickey–Fuller test ซึ่งเดี๋ยวเรามาลองโค้ดกันเลย

Code

ใน Python มี Package ที่ชื่อว่า adfuller ที่ใช้ในการทำหา p-Value ของ ADF-Test ซึ่งถ้า p-Value มีค่าน้อยกว่า 0.05 จะสามารถสรุปได้ว่า Time series นั้นเป็น Stationary

AOT stock price historical data

เรามาเริ่มจากใช้ข้อมูลดิบมาทำ Stationary test เลย ซึ่งบอกได้เลยตั้งแต่ยังไม่กดรันว่า “มันยังไม่เป็น Stationary หรอก” เพราะว่าข้อมูลดิบส่วนมากจะมี Trend และ Seasonal ปนอยู่

p-Values:0.5602530625595076

จากการรันด้วยข้อมูลดิบ ค่า p-Value ยังมีค่ามากกว่า 0.05 อยู่ดังนั้น ยังใช้ข้อมูลนี้เลยไม่ได้ เพราะว่าข้อมูลยังเป็น Unit-root (Non-stationary) ต้องมีการปรับข้อมูลก่อน ซึ่งโดยส่วนมากแล้วการปรับจะลอง First difference เข้าไปก่อน เผื่อข้อมูลจะ Smooth มากขึ้น แล้วลองทำซ้ำอีกรอบนึง

AOT stock price stationary test
ดูมีแววที่จะเป็น stationary มากขึ้นนะ

ผลที่ได้ก็คือ

p-Values:1.9391646356805049e-10

p-Value น้อยกว่า 0.05 แล้ววววว

Result

จากที่ทำมาทั้งหมด เราสามารถสรุปได้ว่า Formation ที่ใช้ทำโมเดลต่อไปคือรูปแบบของ First difference ที่มีค่า d = 1 และนี่เองเป็นเหตุผลที่ว่าทำไมเราต้องเริ่มทำจาก Component Integrated ก่อน

--

--