เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

อย่าเพิ่งเก็บเสื้อกันหนาวเข้าตู้

ในขั้นตอนสุดท้าย จะพยากรณ์อุณหภูมิในช่วง 30 ปีข้างหน้าโดยใช้โมเดล ARMA(1,1) พร้อมแสดงช่วงความเชื่อมั่นรอบค่าประมาณด้วย ควรทราบว่าค่าประมาณของ drift จะมีผลต่อการพยากรณ์ระยะยาวมากกว่าพารามิเตอร์ ARMA

ก่อนหน้านี้ได้พิจารณาแล้วว่าข้อมูลอุณหภูมิเป็นไปตาม random walk และได้ลองใช้ first differencing กับข้อมูล ในแบบฝึกหัดนี้จะใช้โมดูล ARIMA กับข้อมูลอุณหภูมิดั้งเดิม (ก่อน differencing) ซึ่งให้ผลเทียบเท่ากับการใช้โมดูล ARMA กับ การเปลี่ยนแปลง ของอุณหภูมิ แล้วจึงนำผลบวกสะสม (cumulative sum) ของการเปลี่ยนแปลงเหล่านั้นมาใช้พยากรณ์อุณหภูมิ

เนื่องจากอุณหภูมิมีแนวโน้มสูงขึ้นตามเวลา จึงต้องเพิ่มองค์ประกอบ trend เมื่อกำหนดโมเดล ARIMA ด้วย ในแบบฝึกหัดนี้จะใช้ linear trend โดยกำหนด argument trend='t' นอกจากนี้ยังลองใช้โมเดล trend แบบอื่นเพื่อดูว่าการพยากรณ์เปลี่ยนแปลงอย่างไรได้ด้วย เช่น สำหรับ quadratic trend \(\small a+ bt + ct^2\) ให้กำหนด trend=[0,1,1] เพื่อรวมทั้ง linear term \(\small bt\) และ quadratic term \(\small ct^2\) ไว้ในโมเดล

ข้อมูลถูกโหลดไว้ล่วงหน้าใน DataFrame ชื่อ temp_NY

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์อนุกรมเวลาด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง instance ของคลาส ARIMA ชื่อ mod สำหรับโมเดล ARMA(1,1) แบบ integrated หรือโมเดล ARIMA(1,1,1)
    • ค่า d ใน order(p,d,q) เท่ากับ 1 เนื่องจากผ่านการ first differencing มาแล้วหนึ่งครั้ง
    • Fit mod โดยใช้เมธอด .fit() แล้วเก็บผลลัพธ์ไว้ในตัวแปร res
  • พยากรณ์อนุกรมเวลาโดยใช้เมธอด plot_predict() กับ res
    • กำหนดวันที่เริ่มต้นเป็น 1872 และวันที่สิ้นสุดเป็น 2046

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_predict

# Forecast temperatures using an ARIMA(1,1,1) model
mod = ARIMA(temp_NY, trend='t', order=(1,1,1))
___ = ___.fit()

# Plot the original series and the forecasted series
fig, ax = plt.subplots()
temp_NY.plot(ax=ax)
plot_predict(___, start='1872', end='2046', ax=ax)
plt.show()
แก้ไขและรันโค้ด