第 14 章:預測分析
此章節主要介紹 SAS 平台如何進行預測分析的應用
基本介紹
首先時間序列分析與統計中的其他分支類似,主要有基於推導的分析和基於預測的分析兩大類,當我們想要預測未來但未觀察到的週期時,最好先將資料集拆分為擬合樣本和保持樣本,與其它形式的預測建模不同,其中保持樣本是隨機子樣本,從原始樣本中,時間序列預測中的保持樣本是該系列的最終 k 值。最後一次測量之前的 k 個時間段預測序列中的下一個 k 值,但是現在我們知道那些最後的 k 值是什麼了,我們可以看預測的準確程度,擬合樣本用於推導預測模型,保留樣本用於評估預測模型的好壞程度,預測模型預測最近的 n 個觀測值。
接著我們可以透過誠實的評估模擬回顧性研究,其主要有五個步驟,分別為:
將時間序列資料分為擬合樣本和保留樣本兩個部分。
導出一組 ESM、UCM 或 ARIMAX 候選時間序列模型。
透過預測保持樣本來建模計算每個模型的精確度。
選擇具有最佳準確度統計量的模型。
使用最佳模型,產生 N 個預測。
其中完整資料 (Full) = 擬合資料 (Fit) + 保留資料 (Holdout) 用於適應部署模型,擬合樣本用於估計模型精準度參數評估和用於在保留樣本中的預測值。至於保留樣本則需要選擇足夠的時間點來覆蓋完整的季節性時期時間點,像是對於每月資料,請按保留至少 12 個月觀察結果,保留樣本始終位於時間序列的末尾,保留樣本用於評估模型準確性模擬回顧研究,根據經驗法則保留樣本應該至少包含 25% 時間序列。
再來我們主要透過平均絕對百分比誤差 (Mean Absolute Percent Error,MAPE) 和平均絕對誤差 (Mean Absolute Error,MAE) 評估預測準確性。MAPE 和 MAE 皆是模型擬合常見的評估測量,當我們選擇候選模型時,MAPE 或 MAE 值最低的模型是適合的模型,請注意兩個統計資料皆採用觀察值的絕對值減去預測值,在數學上這是必要的,但它可能會省略關於合適的重要資訊模型,像是一個模型可能具有非常低的 MAPE 或 MAE,但是預測值總是低於保留資料集中的觀測值此時就會不合適,建議還是需要查看結合在保留樣本中觀察和預測值的相關圖來評估模型。
最後我們要怎麼做準確的預測?假設我們需要預測未來農作物產量,但是我們用於預測農作物產量的產量、水量和降雨量資料僅為兩週時,我們則可以透過情境分析為整體預測過程增加價值,情境分析也稱假設分析。所謂情境分析主要是選擇隨機輸入變數的未來值產生不同的預測值,執行相同的模型,並且替換所選的未來每個值,再這將復雜的過程簡化為一系列簡單的布林條件語句,其能夠實現分析師以不同的輸入值為條件變數產生許多不同的預測。因此良好的預測應該與實際序列值高度相關,預測誤差很小,捕捉原始時間的突出特徵時間序列,以及應基於業務,工程或科學正在解決的問題對預測品質進行評估。
整合應用
首先 SAS Visual Forecasting 主要是進行大規模自動化的時間序列預測進階分析,其主要是基於 SAS Viya 平台,由 CAS 提供平行處理的開放式架構,同時支援第三方應用程式介面。而 SAS Visual Forecasting 提供了許多不同的介面能夠讓我們產生預測模型,像是 Model Studio 和 SAS Studo,除了提供現代化的 HTML5 網站界面,更支援開放源始碼的程式語言以及 REST APIs。
接著 SAS Visual Forecasting 提供時間序列預測的新方法,其主要是物件導向設定概念,分別為:
效率 (Efficient):簡化建模和預測的流程。
動態 (Dynamic):客製程式中的預測工作流程。
彈性 (Flexible):使用現有元件靈活強健壯的進行建模工作流程。
其中最重要的設計概念和功能就是套件、物件、腳本語言和 CAS 程序,而 SAS Visual Forecasting 的軟體元件主要會被組織至套件和物件,所謂套件主要是基於特定時間序列函數之物件群組的集合,而物件主要被用於建立程式主要元件或區塊,並且彼此物件之間透過方法進行互動,以及擷取和控制建模和預測程序的狀態。
再來套件主要解決時間序列的分析問題,當我們撰寫自定義的 SAS 程式碼時,則可以使用這些專用物件和函數,以利存取最先進的資料分析工具加快程式碼開發速度,並且提高程式碼品質,至於常見的套件,請參考下表。
縮寫 | 套件名稱 | 說明 |
ATSM | Automatic time series analysis and forecasting | 主要使用各種模型系列自動建模和預測時間序列的工具,像是 ESM、ARIMA、UCM、IDM、… 等。 |
MOTIF | Time series motif discovery | 主要用於在時間序列中發現頻繁模式或重複子序列的工具。 |
SFS | Simple forecast service | 主要透過簡單易用的界面,以及僅使用 ARIMA 模型自動預測時間序列的工具。 |
SSA | Singular spectrum analysis | 主要用於將時間序列分解為附加組件,並且根據其貢獻的大小對這些元件進行分類的工具 |
TIMFIL | Time filters | 主要用於過濾和聚合時間序列的工具。 |
TFA | Time frequency analysis | 主要用於在時間領域和頻率領域中有效分析時間序列的工具。 |
TSA | Time series analysis | 主要用於時間序列的有效統計分析的工具,像是轉換,分解,間歇性,季節性,平穩性、預測偏差的統計測試、…等。 |
TSM | Time series model | 主要用於高效時間序列建模和預測的工具。 |
UTL | Utility | 主要用於對實際和預測時間序列對進行基本統計計算的工具。 |
最後 SAS Visual Forecasting 如何進行預測主要有五個步驟,分別為:
診斷 (Diagnose):診斷時間序列資料。
選擇 (Select):選擇適合的模型。
調適 (Fit):調適參數。
預測 (Forecast):預測最佳模型。
調和 (Reconcile):在層次結構中向上/向下調合預測結果。
請注意在 SAS Visual Forecasting 進行預測的實際資料主要是在 CAS 伺服器上進行處理,在 CAS 伺服器的分散式環境中,主要是基於 BY 變數的值不同組合來描繪和洗牌時間序列,時間序列資料平行處理,其寫在每個 CAS Worker 節點上的 CAS 資料表中,此外在每個 CAS Worker 節點上使用執行緒來處理同時加載至節點上的時間序列向量。
開始使用
前往 Yahoo! Finance 官方網站,輸入【Google】關鍵字,按下【搜尋】鈕。
按下【Historical Prices】,設定【Start Date】和【End Date】,按下【Done】鈕。
按下【Apply】鈕,點選【Download Data】下載 CSV 檔案。
登入至 SAS Viya 分析平台。
在畫面左上方點選【顯示應用程式功能表】鈕。
選取【管理資料】。
選取【匯入】頁籤,點選【本機檔案】。
選取 CSV 檔案,按下【開啟】鈕。
按下【選取目的地】鈕。
選取【CASUSER (xxx)】,點選【選取】。
修改【目標表格名稱】為【GOOG】,點選【取代檔案】,按下【匯入項目】鈕。
CSV 檔案上傳成功。
選取【準備資料】。
按下【新計畫】鈕。
在【篩選框】中輸入【GOOG】,按下【確定】鈕。
選取【轉換欄】,按下【增加轉換】。
修改【轉換】為【DATE】,修改【輸入格式或格式】為【ANYDTDTE9.】,修改格式為【DATE9.】,按下【執行】鈕。
按下【儲存】鈕
輸入【名稱】為【資料計劃 2】,修改【表格名稱】為【GOOG_NEW】。
選取【建置模型】。
按下【新增專案】鈕。
輸入【名稱】為【STOCK】鈕,按下【瀏覽】鈕。
在【篩選框】輸入【GOOG】。
點選【GOOG_NEW】。
按下【儲存】鈕。
建立專案完成之後,第一步必須先指派應變數以執行管線。
勾選【Adj Close】,選取【角色】為【應變數】。
選取【階層聚合】為【值平均】,選取【時間間隔累積】為【值平均】。
勾選【Date_CONVERTED】,選取【時間間隔】為【月】。
按下【執行管線】鈕。
已成功完成執行管線。
在【資料】節點上按下右鍵點選【時間序列檢視器】。
查看【時間序列】圖,按下【關閉】鈕。
在【自動預測】節點上按下右鍵點選【時間序列檢視器】。
按下【最大化檢視】鈕。
查看【時間序列】放大圖,查看預測一年後的資訊,按下【關閉】鈕。
選取【顯示】,點選【顯示概觀座標軸】。
按下【最大化檢視】鈕。
以【顯示概觀座標軸】查看【時間序列】圖。
按下【建模】頁籤。
在【模型比較】節點上按下右鍵點選【結果】。
查看【模型比較】結果。
點選【輸出資料】頁籤,查看【預測】結果,按下【關閉】鈕。
點選【節點】頁籤,展開【預測建模】。
選取【時間序列迴歸】節點拖曳至【資料】節點中,請注意需要出現【+】號。
按下【執行管線】鈕。
已成功完成執行管線。
在【模型比較】節點上按右鍵點選【結果】。
查看【模型比較】結果。
選取【覆寫】頁籤。
按下【是】鈕。
輸入【覆寫】值。
按下【表格動作】鈕,點選【全部提交】。
查看【提交】之後的結果,最終預測值將會被修改。
按下【復原最後提交的項目】鈕。
按下【是】鈕。
勾選【覆寫】項目,按下【刪除選取的覆寫】鈕。
按下【刪除】鈕。
刪除完成所有【覆寫】項目。
Last updated