開始使用免費開始

模擬 AR(1) 時間序列

你將使用 statsmodels 的 arima_process 模組,針對不同的參數 \(\small \phi\) 模擬並繪製數個 AR(1) 時間序列。在這個練習中,你會觀察 \(\small \phi\) 很大的正值與很大的負值兩種 AR(1) 模型。不過你也可以自由嘗試其他參數。

使用 arima_process 模組時有幾個慣例需要說明。首先,這些常式是為了同時處理 AR 與 MA 模型而設計得相當通用。我們下一節會介紹 MA 模型,所以現在先忽略 MA 的部分。其次,在輸入係數時,必須包含延遲 0 的係數 1,而且其他係數的符號與我們先前使用的是相反的(這是為了與訊號處理領域的時間序列文獻一致)。例如,對於 \(\small \phi=0.9\) 的 AR(1) 過程,代表 AR 參數的陣列會是 ar = np.array([1, -0.9])

本練習屬於課程

Python 中的時間序列分析

檢視課程

練習說明

  • 匯入 arima_process 模組中的 ArmaProcess 類別。
  • 繪製模擬出的 AR 過程:
    • 依照上面的說明,令 ar1 表示 AR 參數陣列 [1, \(\small -\phi\)]。目前 MA 參數陣列 ma1 只包含延遲 0 的係數 1。
    • 使用參數 ar1ma1 建立 ArmaProcess(ar,ma) 類別的實例,命名為 AR_object1
    • 以剛建立的物件 AR_object1 使用 .generate_sample() 方法模擬 1000 個資料點。將模擬結果畫在一個子圖中。
  • 針對另一個 AR 參數重複上述步驟。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# import the module for simulating data
from statsmodels.tsa.arima_process import ArmaProcess

# Plot 1: AR parameter = +0.9
plt.subplot(2,1,1)
ar1 = np.array([1, ____])
ma1 = np.array([1])
AR_object1 = ArmaProcess(____, ____)
simulated_data_1 = AR_object1.generate_sample(nsample=1000)
plt.plot(simulated_data_1)

# Plot 2: AR parameter = -0.9
plt.subplot(2,1,2)
ar2 = np.array([1, ____])
ma2 = np.array([1])
AR_object2 = ArmaProcess(____, ____)
simulated_data_2 = AR_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)
plt.show()
編輯並執行程式碼