揚聲器
|
成績單
|
| |
您好,感謝您抽空查看此內容。 我叫雅各·萊恩。 我是 JMP 的軟體測試員。 今天,我將與您分享我編寫的一個插件,可協助您在 JMP 時間序列平台中的 ARIMA 模型或狀態空間平滑模型之間進行選擇。 |
| |
因此,我首先簡要概述在時間序列平台中擬合 ARIMA 和狀態空間平滑模型。 |
| |
我將介紹對插件的需求,以幫助在這兩個模型類別之間進行選擇。 並概述時間序列交叉驗證,這是該插件的主要工具。 然後我將使用 JMP 16.1 演示該插件。 |
| |
JMP 中的時間序列平台允許使用者擬合許多不同的時間序列模型。 本次示範的重點是 ARIMA 和狀態空間平滑模型,我將展示如何使用鋼鐵出貨範例資料來擬合這兩個模型。 |
| |
鋼鐵出貨量樣本資料包含 1984 年至 1991 年美國鋼鐵出貨量的月度總計。 而且,我將使用專業建模選單中的時間序列平台來探索這一點。 |
| |
鋼鐵出貨量列是我的時間序列。 日期列是我的時間 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 個不同的時間序列交叉驗證組。 |
| |
我的預測長度為六,因為我想預測未來六週的票房。 而且,在這裡我將保持週期等於缺失,因為我不會為這個特定數據擬合季節性模型。 |
| |
那麼,讓我們來探索第一個時間序列交叉驗證組。 |
| |
你可以看到我的第一個訓練集中有 17 行,接下來的 6 行是我的測試集。 |
| |
我的插件要做的就是將我要求的任何 ARIMA 模型擬合到訓練集。 它將把建議的狀態空間平滑模型擬合到訓練集。 |
| |
它將透過 AIC 選擇每個類別的最佳模型,並將我對所選模型的預測放入測試集並評估預測誤差。 |
| |
第二個時間序列交叉驗證組將把訓練集擴展一行,所以現在我的訓練集是 |
| |
由第一行到第十八行組成,接下來的六行就是我的測試集。 然後我重複我在第一個時間序列交叉驗證組中所做的過程。 |
| |
我適合使用者要求的任何 ARIMA 模型,並適合建議的狀態空間平滑模型。 透過AIC預測選擇最佳模型放入測試集中並儲存預測誤差。 |
| |
我會繼續這樣做,直到我用完所有數據為止。 因此,此範例的最終時間序列交叉驗證組將使用第 1 行到第 22 行作為訓練集,然後使用其餘資料(最後 6 行)作為測試集。 |
| |
所以我提到我正在儲存每個時間序列交叉驗證組的預測誤差。 |
| |
該外掛程式的作用是報告兩個模型類別的總體 RMSE、MAE 和 MAPE,並為您提供每個時間序列交叉驗證組的 RMSE 圖。 |
| |
您可以使用此表和此圖來幫助您決定是否適合每個模型進行預測或狀態空間平滑模型預測。 |
| |
讓我們來看看加載項如何使用這些資料。 |
| |
因此,我將打開從 Box Office mojo 獲得的票房數據,然後運行此腳本,該腳本將啟動此數據的時間序列平台,因為我只想查看時間序列。 |
| |
我正在預測每週的平均票房收入,我可以看到隨著時間的推移,方差和平均總收入會變得更大,所以我想進行對數轉換 |
| |
到平均毛額。 我可以透過為平均毛額建立對數公式列來做到這一點,但是 |
| |
這不是必需的,該插件使您能夠進行 Box Cox 轉換,就像標準時間序列平台一樣。 因此,我將啟動我的加載項,點擊免責聲明。 我想預測未來六週內每週的平均收盤票房。 |
| |
我想對平均總量進行對數轉換,因此我將使用 Lambda 等於 0 的 Box Cox 變換。 |
| |
我將單擊“確定”。 |
| |
因此,這將啟動 Box Cox 轉換回應的標準時間序列報告。 我可以擬合任何類型的時間序列模型,我希望 JMP 中可以透過這個紅色三角形選單提供這些模型。 |
| |
但相反,我將深入到報告的底部,並使用時間序列交叉驗證來獲取關於我是否應該擬合 ARIMA 模型或狀態空間平滑模型的建議。 |
| |
我將把初始行保留在 17 行,因為這將為我提供六個時間序列交叉驗證組,正如我在前面的範例中所示的那樣。 |
| |
我將預測長度保持為六,因為我想預測未來六週的票房,並且在此示例中我將保持該時間段等於缺失。 |
| |
因此,我將單擊“運行”,現在我必須說出我希望將哪些 ARIMA 模型放入每個時間序列交叉驗證組中。 因此,我決定使用非季節性差分 1,但我會讓自迴歸和移動平均階數為零或 1。 |
| |
因此,當我按一下「估計」時,每個時間序列交叉驗證群組都會發生情況,它將適合這四個 ARIMA 模型和建議的狀態空間平滑模型。 |
| |
因此,我單擊“估計”,該加載項所做的是將這個資料集擴展為我的六個時間序列交叉驗證組,將請求的模型擬合到訓練集預測到測試集並儲存預測誤差。 |
| |
所以我將向下滾動並查看結果。 從表中您可以看到,總體而言,ARIMA 模型產生的 RMSE、MAE 和 MAPE 低於狀態空間平滑模型。 而且,如果我看一下情節 |
| |
我可以看到 ARIMA 模型為每個時間序列交叉驗證組產生了較低的 RMSE。 |
| |
因此,此加載項建議使用 ARIMA 模型來建立此資料的預測,而不是狀態空間平滑模型。 因此,我可以轉到紅色小三角選單,然後繼續使用 ARIMA 模型組選項來擬合 ARIMA 模型。 |
| |
讓我們來看看加載項的另一個範例,為了執行下一個範例,我將使用 MC3 Quarterly 範例資料的子集。 |
| |
MC3 季度樣本資料包含來自 MC3 建模競賽的 100 多個不同時間序列的資料。 系列均為季刊。 |
| |
我認為這是一個有趣的數據集,因為它有很多不同的時間序列。 然而,出於時間原因,在本次演講中,我只是從表中隨機選取了該系列中的三個子集。 |
| |
所以我將啟動我的加載項。 |
| |
並且設定啟動器我的Y列是我的時間序列,時間是時間ID。 而且,由於我有多個系列的數據,我需要對系列列使用 by 選項。 再次假設我要預測未來兩年,因此我將輸入八個預測期並按一下「確定」。 |
| |
正如您所期望的,這為我的表格中的每個不同系列提供了時間序列報告。 我還為表中的每個系列提供了時間序列交叉驗證控制項。 |
| |
因此,我可以對每個系列使用時間序列交叉驗證,以獲得使用 ARIMA 模型或狀態空間平滑模型進行預測的建議。 |
| |
由於時間關係,我只會在第一個系列中這樣做。 我將使用四個週期,因為我想為該系列擬合季節性模型。 我將點擊運行。 |
| |
因此,我將使用非季節性差分階數為 1,但所有其他自回歸移動平均階數和季節性差分階數的範圍為 0 或 1。 |
| |
將觀察期設為四,因為這又是季度數據。 因此,當我單擊“估計”時會發生什麼,它將適合這 32 個 ARIMA 模型 |
| |
在每個時間序列交叉驗證組中。 所以該插件將轉到該系列的 N 691。 |
| |
它將其擴展到六個不同的時間序列交叉驗證組。 它將我請求的 ARIMA 模型擬合到訓練集。 建議的訓練集狀態空間平滑模型。 |
| |
透過AIC選擇最佳模型。 預測到測試集並儲存預測誤差。 |
| |
我會稍等一下來完成。 |
| |
開始了。 |
| |
我可以滾動並查看結果。 因此,從表中可以看出,ARIMA 模型產生的 RMSE、MAE 和 MAPE 低於狀態空間平滑模型。 |
| |
從圖中,我可以看到,除了最後一個時間序列交叉驗證組之外,ARIMA 模型的 RMSE 都較低 |
| |
與狀態空間平滑模型相比,它在最後一組中幾乎相同。 |
| |
因此,再次進行時間序列交叉驗證,並建議使用 ARIMA 模型為 N 691 系列建立預測。 而且,您可以轉到其他不同的系列並重複該過程,對於這些系列,它可能會建議狀態空間平滑模型。 |
| |
因此,我將透過展示該加載項的另一個功能實際上與時間序列交叉驗證無關來結束演示。 |
| |
我還讓您能夠使用測試集通過加載項評估預測,並且我將再次使用鋼鐵發貨範例資料來展示這一點。 所以我將啟動我的加載項。 好的,我想按日期預測鋼材出貨量。 |
| |
假設我想預測未來兩年,因此採用 24 個預測期,正如我之前提到的,如果您的系列足夠長,對於保留集,您可以使用保留選項的預測 |
| |
選擇型號。 所以,既然我這樣做了,我真的不需要使用時間序列交叉驗證。 所以,我可以使用訓練測試集選項 |
| |
有一個獨立的測試集來評估我選擇的模型。 我將決定測試集的長度為 12。 |
| |
這意味著它將獲取我數據的最後 12 行並將其完全排除在我的分析之外,以便我可以使用它來評估我的預測效果。 所以我會點擊“確定”。 |
| |
您可以看到發生的情況是我在表中新增了另一列。 它只是測試集的一個指示列,如果該行包含在測試集中,則它等於 1,如果不包含,則等於 0。 |
| |
它只會將這些時間序列模型擬合到測試集等於零的行。 這使我能夠保持測試集的獨立性。 |
| |
因此,讓我們對這些數據擬合一些 ARIMA 模型。 我使用與本次演講開始時相同的控件,季節性和非季節性差分階數為 1,但讓所有其他階數的範圍從 0 到 1。 |
| |
因此,我單擊「估計」來運行這 16 個不同的季節性 ARIMA 模型,並且我還將擬合建議的狀態空間平滑模型。 |
| |
因此,我將向下滾動到模型比較窗口,我可以看到最小化抑制集中均方根誤差的模型是狀態空間平滑模型,具有加性誤差,沒有趨勢和加性季節性。 |
| |
假設我也只是對表現最佳的 ARIMA 模型在測試集中的表現感興趣。 我也可以選擇它。 |
| |
我將刪除不再考慮進行預測的其他模型。 |
| |
因此,我再次使用了預測保留選項,因此我會選擇此狀態空間平滑模型來用於預測,但我只是好奇 ARIMA 模型在測試集中的表現如何。 |
| |
這樣我就可以向下捲動到我的測試集分析框。 而且,由於我使用了保留選項的預測,這將做什麼,它將把這兩個選定的模型重新調整為組合的訓練和保留數據,以獲得更新的參數。 |
| |
然後它將對測試集進行預測,並評估預測與實際測試集資料相比的表現。 |
| |
因此,我將單擊“運行”來執行該分析。 而且,我可以看到我有一個測試集 RMSE、MAE 和 MAPE 的表格,以及測試集與預測相比的圖表。 |
| |
我可以看到,狀態空間平滑模型不僅在保留集中表現更好,而且在測試集中也表現更好。 因此,這個測試集分析選項只是為您提供了一個評估模型適合效果的工具。 |
| |
所以,只是總結一下。 該外掛程式允許您執行時間序列交叉驗證。 |
| |
如果您的時間序列資料不夠長,無法使用 JMP 中的預測保留選項,但您仍想考慮使用不同的模型類,我認為此外掛程式可能對您有用。 |
| |
該加載項還使您能夠使用測試集來評估預測。 而且,正如免責聲明一樣,與時間序列資料的所有模型選擇措施一樣,該加載項不保證更準確的預測。 |
| |
非常感謝您的寶貴時間。 我希望您嘗試該加載項,並希望您喜歡 Discovery 的其餘部分。 非常感謝。 |