揚聲器
|
成績單
|
| |
您好,感謝您抽出寶貴時間查看此內容。 我叫雅各布·萊恩。 我是 JMP 的軟件測試員。 今天我將與您分享我編寫的一個插件,它可以幫助您在 JMP 的時間序列平台中選擇 ARIMA 模型或狀態空間平滑模型。 |
| |
因此,我首先簡要概述在時間序列平台中擬合 ARIMA 和狀態空間平滑模型。 |
| |
我將介紹需要一個加載項來幫助在這兩個模型類之間進行選擇。 並概述時間序列交叉驗證,這是加載項的主要工具。 然後我將結束使用 JMP 16.1 的插件演示。 |
| |
JMP 中的時間序列平台允許用戶擬合許多不同的時間序列模型。 此演示文稿的重點將是 ARIMA 和狀態空間平滑模型,我將展示如何使用此 Steel Shipments 示例數據來擬合這兩種模型。 |
| |
鋼鐵出貨量樣本數據包含 1984 年至 1991 年美國鋼鐵出貨量的月度總數。 而且,我將使用“專業建模”菜單中的“時間序列”平台對此進行探討。 |
| |
Steel Shipments 列是我的時間序列。 日期列是我的時間 ID。 假設我有興趣預測未來兩年的鋼鐵出貨量。 因此,由於這是月度數據,我需要 24 個預測期。 我將單擊“確定”以啟動我的時間序列報告。 |
| |
您可以看到我在時間序列上繪製了該序列的一些基本統計數據,以及一些基本的時間序列診斷信息。 |
| |
我想為這個系列擬合一個 ARIMA 模型,當我擬合一個 ARIMA 模型時,我需要決定,我是否需要進行任何類型的轉換或差分。 所以我將使用時間序列菜單中的差異選項來探索這個。 |
| |
我將從一個訂單的非季節性差異開始,然後單擊估計。 |
| |
現在我有一個差異系列的情節。 就更平穩而言,它看起來更好,但我在這裡仍然有一些季節性。 而且,我可以通過查看診斷來說明這一點。 我下降到滯後 12 號。 |
| |
我可以看到自相關值很高,滯後 12 的部分自相關也有點高。 因此,這表明我應該使用具有非季節性和季節性差異的季節性 ARIMA 模型。 |
| |
我將關閉這份差異報告,以保持我的報告乾淨。 而且,我將探索使用 ARIMA 模型組選項擬合一些不同的 ARIMA 模型。 |
| |
所以我決定我想擬合一個季節性 ARIMA 模型,其非季節性差分順序為 1,季節性差分順序為 1。 但是,對於自回歸和移動平均訂單,我將讓它們為零或一。 |
| |
因此,當我單擊估計時,JMP 將適合這 16 個不同的季節性 ARIMA 模型。 我可以向下滾動到模型比較窗口並查看這些模型。 模型按 AIC 降序排序,因此我將選擇最小化 AIC 的模型。 |
| |
我可以向下滾動查看模型和報告。 我可以看到它是穩定和可逆的。 我可以查看參數估計表。 查看預測和預測間隔。 |
| |
假設我已經瀏覽了所有這些診斷,並且我對這個季節性 ARIMA 模型作為預測的候選者感到滿意。 |
| |
因此,我將從報告中刪除這些其他季節性 ARIMA 模型。 |
| |
比如說,我還想考慮使用狀態空間平滑模型來創建預測,我可以通過使用時間序列菜單中的狀態空間平滑選項來做到這一點。 |
| |
我需要說周期是 12,因為這是月度數據,我將只適合這個時間序列的所有推薦的狀態空間平滑模型。 |
| |
因此,如果我向下滾動到模型比較報告,我將單擊確定運行該報告,我可以看到 JMP 已適合所有推薦的狀態空間平滑模型。 它們再次按 AIC 降序排序。 |
| |
所以最小化 AIC 的模型是一個沒有趨勢和乘法季節性的乘法誤差模型。 所以,我會選擇這個模型 |
| |
在模型比較大綱中向下滾動以查看模型擬合。 |
| |
所以我可以查看模型摘要我可以查看參數估計表。 |
| |
您可以查看預測和預測間隔。 假設我已經瀏覽了所有這些診斷,並且我很滿意這個狀態空間平滑模型作為預測的候選者。 |
| |
因此,我將從我的模型和我的模型比較窗口中刪除另一個狀態空間平滑模型。 |
| |
所以現在,問題是我如何在我正在考慮的這個 ARIMA 模型和我正在考慮進行預測的狀態空間平滑模型之間進行選擇。 |
| |
你可以看到我有這個閱讀文本警告,它告訴我基於可能性的標准在不同的模型類之間是不可比較的。 |
| |
這意味著我不能簡單地滾動並查看 AIC 並說,因為 AIC 較低,對於 ARIMA 模型,我將使用它進行預測。 |
| |
這不是一個有效的決定。 那麼,我該怎麼辦? 好吧,JMP 中已經提供了一個選項。 如果你的數據足夠長。 |
| |
要設置保留,您可以在啟動時間序列平台時使用保留預測選項。 |
| |
這樣做會適合您用於訓練集的所有時間序列模型。 並且,在模型比較窗口中,而不是按 AIC 對模型進行排序, |
| |
它將通過抑制集的均方根誤差或 RMSE 對模型進行排序,您將選擇最小化抑制集 RMSE 的模型。 |
| |
但是,如果您的數據不夠長而無法使用保留集,那麼我們無法使用保留預測選項,我們需要另一種方法來幫助我們在 ARIMA 模型或狀態空間平滑模型之間進行選擇。 |
| |
而要做到這一點。 |
| |
這就是我製作插件的原因。 因此,該加載項通過使用稱為時間序列交叉驗證的方法幫助您進行選擇。 |
| |
時間序列交叉驗證本質上將您的時間序列分解為多個訓練和測試集,其中任何連續的組都將訓練集擴展一行。 |
| |
我將暫時給出時間序列交叉驗證的詳細示例,但我想指出,我沒有發明這種方法。 如果你想了解更多, |
| |
看完這篇演講後,我會推薦 Rob Hyndman 博士的預測原則和實踐資源。 |
| |
但讓我們看一個時間序列交叉驗證的例子。 |
| |
假設我有 2021 年 1 月至 7 月北美票房結果的數據,因為我是電影迷。 |
| |
我想使用 ARIMA 模型或狀態空間平滑模型預測未來六週的票房。 而且,要決定使用哪個預測,我想使用時間序列交叉驗證。 |
| |
正如我提到的,時間序列交叉驗證會將您的數據子集劃分為訓練集和測試集的組,您可以在其中將訓練集擴展一行和每個連續的組。 |
| |
所以我需要決定在我的初始訓練集中需要多少行。 |
| |
默認情況下,我的加載項將使您擁有六個時間序列交叉驗證組。 因此,這將為您提供在初始訓練集中使用的建議默認行數,但如果您願意,歡迎您更改它。 |
| |
對於這個例子,我將在訓練集中保留 17 個初始行的默認值。 |
| |
當您啟動時間序列交叉驗證加載項時,將為您提供標準時間序列報告。 但是,它還會在報告底部為您的時間序列交叉驗證控件附加一個大綱框。 |
| |
因此,在這裡,您必須指定初始行數,即第一個訓練集中的行數、您感興趣的預測長度以及要擬合季節性模型的時間段。 |
| |
所以我將在訓練集中保留 17 行的默認值,這將允許我有六個不同的時間序列交叉驗證組。 |
| |
我的預測長度為 6,因為我想預測未來 6 週的票房。 而且,在這裡我將保持週期等於缺失,因為我不會為這個特定數據擬合季節性模型。 |
| |
所以,讓我們探索第一個時間序列交叉驗證組。 |
| |
你可以看到我的第一個訓練集中有 17 行,接下來的六行是我的測試集。 |
| |
我的加載項要做的是將我要求它的任何 ARIMA 模型適合訓練集。 它將使推薦的狀態空間平滑模型適合訓練集。 |
| |
它將通過 AIC 選擇每個類的最佳模型,並將我對所選模型的預測帶入測試集並評估預測誤差。 |
| |
第二個時間序列交叉驗證組將把訓練集擴大一行,所以現在我的訓練集是 |
| |
由第 1 行到第 18 行組成,接下來的六行是我的測試集。 然後我重複我在第一個時間序列交叉驗證組中所做的過程。 |
| |
我適合用戶要求的任何請求的 ARIMA 模型,並適合推薦的狀態空間平滑模型。 通過 AIC 預測選擇最佳模型放入測試集並存儲預測誤差。 |
| |
我會繼續這樣做,直到我用完所有數據。 因此,此示例的最終時間序列交叉驗證組將使用第 1 行到第 22 行作為訓練集,然後使用其餘數據,即最後六行作為測試集。 |
| |
所以我提到我正在存儲每個時間序列交叉驗證組的預測誤差。 |
| |
插件的作用是報告兩個模型類的總體 RMSE、MAE 和 MAPE,並為您提供每個時間序列交叉驗證組的 RMSE 圖。 |
| |
您可以使用此表和此圖來幫助您決定,是否適合每個模型進行預測或狀態空間平滑模型預測。 |
| |
讓我們看一下使用此數據運行的加載項。 |
| |
所以我將打開我從 box office mojo 獲得的票房數據,我將運行這個腳本,它只是為這些數據啟動時間序列平台,因為我只想看一下時間序列。 |
| |
我正在預測,每週的票房平均總收入,我可以看到隨著周數的變化,平均總收入越來越大,所以我想進行對數轉換 |
| |
到平均毛額。 我可以通過為平均毛額創建一個日誌公式列來做到這一點,但是 |
| |
這不是必需的,加載項使您能夠進行 Box Cox 轉換,就像標準時間序列平台一樣。 所以,我將啟動我的加載項,點擊免責聲明。 我想預測在接下來的六週內每周平均關閉的票房。 |
| |
並且我想對平均毛額進行對數轉換,因此我將使用 Lambda 為零的 Box Cox 轉換。 |
| |
我會點擊確定。 |
| |
因此,這將啟動 Box Cox 轉換響應的標準時間序列報告。 我可以適合任何類型的時間序列模型,我希望在 JMP 中可以使用這個紅色小三角菜單。 |
| |
但相反,我將深入到報告的底部並使用時間序列交叉驗證來獲得關於我是否應該擬合 ARIMA 模型或狀態空間平滑模型的建議。 |
| |
我將保持初始行為 17,因為這將得到我在前一個示例中顯示的六個時間序列交叉驗證組。 |
| |
我將保持 6 的預測長度,因為我想預測未來 6 週的票房,並且我將在此示例中保持週期等於缺失。 |
| |
所以我將單擊運行,現在我必須說明我希望在每個時間序列交叉驗證組中適合哪些 ARIMA 模型。 因此,我決定使用 1 的非季節性差分,但我會讓自回歸和移動平均訂單為零或一。 |
| |
因此,當我單擊估計將發生的情況是,每個時間序列交叉驗證組都將適合這四個 ARIMA 模型和推薦的狀態空間平滑模型。 |
| |
所以我點擊估計,插件正在做的是將這個數據集擴展到我的六個時間序列交叉驗證組中,將請求的模型擬合到訓練集預測到測試集並存儲預測誤差。 |
| |
所以我會向下滾動並查看結果。 從表中可以看出,總體而言,ARIMA 模型產生的 RMSE、MAE 和 MAPE 低於狀態空間平滑模型。 而且,如果我看情節 |
| |
我可以看到 ARIMA 模型為每個時間序列交叉驗證組產生了較低的 RMSE。 |
| |
因此,此加載項將建議使用 ARIMA 模型來為這些數據創建預測,而不是使用狀態空間平滑模型。 所以我可以轉到紅色小三角菜單並繼續使用 ARIMA 模型組選項擬合 ARIMA 模型。 |
| |
讓我們看一下加載項的另一個示例,在下一個示例中,我將使用 MC3 Quarterly 示例數據的一個子集。 |
| |
MC3 Quarterly 樣本數據包含來自 MC3 建模競賽的 100 多個不同時間序列的數據。 該系列都是季刊。 |
| |
我認為這是一個有趣的數據集,因為它有很多不同的時間序列。 然而,在本次演講中,出於時間原因,我只是從表格中隨機抽取了三個系列的子集。 |
| |
所以我將啟動我的加載項。 |
| |
並設置啟動器我的 Y 列是我的時間序列,時間是時間 ID。 而且,由於我有多個系列的數據,因此我需要對系列列使用 by 選項。 再次假設我要預測未來兩年,因此我將輸入八個預測期,然後單擊“確定”。 |
| |
正如您所期望的那樣,這為我的表格中的每個不同系列提供了時間序列報告。 而且我還有一個針對錶中每個系列的時間序列交叉驗證控件。 |
| |
所以我可以對這些系列中的每一個使用時間序列交叉驗證來獲得關於使用 ARIMA 模型或狀態空間平滑模型進行預測的建議。 |
| |
為了節省時間,我只會在第一個系列中這樣做。 我將使用四個週期,因為我想為這個系列擬合季節性模型。 我會點擊運行。 |
| |
因此,我將使用 1 的非季節性差分階數,但所有其他自回歸移動平均階數和季節性差分階數的範圍是零或一。 |
| |
將觀察期設置為四個,因為這也是季度數據。 所以當我點擊估計時會發生什麼 它將適合這 32 個 ARIMA 模型 |
| |
在每個時間序列交叉驗證組中。 因此,加載項將轉到系列為 N 691 的位置。 |
| |
它正在將其擴展為六個不同的時間序列交叉驗證組。 它將我請求的 ARIMA 模型擬合到訓練集。 對訓練集推薦的狀態空間平滑模型。 |
| |
由 AIC 選擇最佳模型。 預測到測試集並存儲預測誤差。 |
| |
我給它一秒鐘完成。 |
| |
開始了。 |
| |
我可以滾動並查看結果。 因此,從表中可以看出,ARIMA 模型產生的 RMSE、MAE 和 MAPE 低於狀態空間平滑模型。 |
| |
從圖中,我可以看到除了最後一個時間序列交叉驗證組之外,ARIMA 模型的 RMSE 較低 |
| |
與狀態空間平滑模型相比,它在最後一組中幾乎相同。 |
| |
所以再次是時間序列交叉驗證,並建議使用 ARIMA 模型為系列 N 691 創建預測。 而且,您可以轉到其他不同的系列並重複該過程,對於那些可能會推薦狀態空間平滑模型的系列。 |
| |
因此,我將通過展示加載項的另一個功能實際上與時間序列交叉驗證無關來結束演示。 |
| |
我還為您提供了使用測試集來評估加載項的預測的能力,我將再次使用 Steel Shipments 示例數據展示這一點。 所以我將啟動我的加載項。 好的,我想按日期預測鋼鐵出貨量。 |
| |
假設我想預測未來兩年,所以需要 24 個預測期,正如我之前提到的,如果您的系列足夠長,對於保留集,您可以使用保留選項的預測 |
| |
選擇模型。 所以,既然我這樣做了,我真的不需要使用時間序列交叉驗證。 所以,我可以使用訓練測試集選項 |
| |
有一個獨立的測試集來評估我選擇的模型。 我會決定我希望我的測試集的長度是 12。 |
| |
這意味著它將獲取我數據的最後 12 行,並將其完全排除在我的分析之外,以便我可以使用它來評估我的預測執行情況。 所以我會點擊確定。 |
| |
你可以看到發生的事情是我在表格中添加了另一列。 它只是測試集的一個指標列,如果該行包含在測試集中,則它等於 1,否則為零。 |
| |
它只會將這些時間序列模型擬合到測試集為零的行。 這允許我保持測試集的獨立性。 |
| |
因此,讓我們將一些 ARIMA 模型擬合到這些數據中。 我使用與本次演講開始時相同的控件,季節性和非季節性差分階數為 1,但讓其他所有階數的範圍從 0 到 1。 |
| |
因此,我單擊估計來運行這 16 個不同的季節性 ARIMA 模型,我還將擬合推薦的狀態空間平滑模型。 |
| |
所以,我將向下滾動到模型比較窗口,我可以看到最小化抑制集中均方根誤差的模型是狀態空間平滑模型,具有附加誤差沒有趨勢和附加季節性。 |
| |
假設我也只對性能最佳的 ARIMA 模型在測試集中的表現感興趣。 我也可以選擇它。 |
| |
我將刪除我不再考慮進行預測的其他模型。 |
| |
所以,我再次使用了對保留選項的預測,所以我會選擇這個狀態空間平滑模型來進行預測,但我只是好奇 ARIMA 模型在測試集中的表現。 |
| |
所以我可以向下滾動到我的測試集分析框。 而且,這將要做的是,因為我使用了保留選項的預測,它將把這兩個選定的模型重新擬合到組合的訓練和保留數據中,以獲得更新的參數。 |
| |
然後它將預測到測試集並評估與實際測試集數據相比預測的執行情況。 |
| |
因此,我將單擊運行來執行該分析。 而且,我可以看到我有一個測試集 RMSE、MAE 和 MAPE 的表格,以及一個測試集與預測相比的圖。 |
| |
我可以看到狀態空間平滑模型不僅在抑制集中表現更好,而且在測試集中表現也更好。 所以這個測試集分析選項只是給你一個工具來評估你的模型擬合的表現。 |
| |
所以,總結一下。 該插件允許您執行時間序列交叉驗證。 |
| |
如果您的時間序列數據不夠長,無法使用 JMP 中的預測保留選項,但您仍想考慮使用不同的模型類,我認為此插件可能對您有用。 |
| |
該加載項還使您能夠使用測試集來評估預測。 而且,作為免責聲明,與時間序列數據的所有模型選擇措施一樣,加載項不保證更準確的預測。 |
| |
非常感謝您的寶貴時間。 我希望您試用該加載項,並希望您喜歡 Discovery 的其餘部分。 非常感謝。 |