原文鏈接:http://tecdat.cn/?p=12280
總覽
本文簡要介紹了一種簡單的狀態切換模型,該模型構成了隱馬爾可夫模型(HMM)的特例。這些模型適應時間序列數據中的非平穩性。從應用的角度來看,這些模型在評估經濟/市場狀態時非常有用。這里的討論主要圍繞使用這些模型的科學性。
基本案例
HMM的主要挑戰是預測隱藏部分。我們如何識別“不可觀察”的事物?HMM的想法是從可觀察的事物來預測潛在的事物。
模擬數據
為了演示,我們准備一些數據並嘗試進行反向推測。通過構造,我強加了一些假設來創建我們的數據。每個狀態都具有不同的均值和波動率。
\(\ mu_1 \) | \(\ mu_2 \) | \(\ sigma_1 \) | \(\ sigma_2 \) | \(p_ {11} \) | \(p_ {22} \) |
---|---|---|---|---|---|
2 | -2 | 1個 | 2 | 0.95 | 0.85 |
如上表所示,狀態\(s = 2 \)變成“壞”狀態,其中過程\(x_t \)表現出較高的變化性。 因此,停留在狀態2的可能比停留在狀態1的可能性小。
馬爾可夫過程
為了模擬過程\(x_t \),我們從模擬馬爾可夫過程\(s_t \)開始。為了模擬\(T \)期間的過程,首先,我們需要構建給定\(p_ {11} \)和\(p_ {22} \)的轉換矩陣。其次,我們需要從給定狀態\(s_1 = 1 \)開始。從\(s_1 = 1 \)開始,我們知道有95%的概率停留在狀態1,有5%的概率進入狀態2。
模擬\(s_t \)是遞歸的,因為它先前先前的狀態。因此,我們需要構造一個循環:
上圖說明了過程\(s_t \)的持久性。在大多數情況下,狀態1的“實現”多於狀態2。實際上,這可以由固定概率確定,該固定概率由下式表示:
因此,經歷時間的流逝,有15%的概率處於1狀態,而有25%的概率處於狀態2。這應該反映在模擬過程中 s
,從而
由於我們使用的是100個周期的小樣本,因此我們觀察到穩定概率為69%,接近但不完全等於75%。
結果
給定模擬的馬爾可夫過程,結果過程的模擬非常簡單。一個簡單的技巧是模擬\(x_t \ mid s_t = 1 \)的\(T \)周期和\ (x_t \ mid s_t = 2 \)的\(T \)周期。然后,給定\(s_t \)的模擬,我們針對每個狀態創建結果變量\(x_t \)。
雖然總體而言時間序列看起來是平穩的,但我們觀察到一些周期(以紅色突出顯示)顯示出較高的波動。有人可能會建議說,數據存在結構性中斷,或者體制發生了變化,過程\(x_t \)變得越來越大,帶有更多的負值。雖然如此,事后解釋總是比較容易的。主要的挑戰是識別這種情況。
估計參數
在本節中,我將使用R軟件手動(從頭開始)和非手動進行統計分解。在前者中,我將演示如何構造似然函數,然后使用約束優化問題來估計參數。我將說明如何在不經歷解析推導的情況下進行復制。
似然函數-數值部分
首先,我們需要創建一個以\(\ Theta \)向量為主要輸入的函數。其次,我們需要設置一個返回MLE的優化問題。
在優化似然函數之前。讓我們看一下工作原理。假設我們知道參數\(\ Theta \)的向量,並且我們有興趣使用\(x_t \)上的數據評估隱藏狀態隨時間的變化。
\(t \) | \(\ xi_ {t \ mid t,1} \) | \(\ xi_ {t \ mid t,2} \) |
---|---|---|
1 | 0.878 | 0.122 |
2 | 0.982 | 0.018 |
3 | 0.887 | 0.113 |
4 | 0.875 | 0.125 |
5 | 0.318 | 0.682 |
6 | 0.000 | 1.000 |
顯然,這兩種狀態的每次過濾器的總和應為1。看起來,我們可以處於狀態1或狀態2。
由於我們設計了此數據,因此我們知道狀態2的時期。
過濾器背后的優點是僅使用\(x_t \)上的信息來識別潛在狀態。我們觀察到,狀態2的過濾器主要在狀態2發生時增加。這可以通過發出紅點的概率增加來證明,紅點表示狀態2發生的時間段。盡管如此,上述還是存在一些重大問題。首先,它假定我們知道參數\(\ Theta \),而實際上我們需要對此進行估計,然后在此基礎上進行推斷。其次,所有這些都是在樣本中構造的。從實際的角度來看,決策者對預測的概率及其對未來投資的影響感興趣。
手動估算
為了優化上面定義的 HMM_Lik
功能,我將需要執行兩個附加步驟。首先是建立一個初始估計值,作為搜索算法的起點。其次,我們需要設置約束條件以驗證估計的參數是否一致,即非負波動性和介於0和1之間的概率值。
第一步,我使用樣本創建初始參數向量\(\ Theta_0 \)
在第二步中,我為估算制定了約束
請注意,參數的初始向量應滿足約束條件
最后,回想一下,通過構建大多數優化算法都可以搜索最小點。因此,我們需要將似然函數的輸出更改為負值。
為了檢查MLE值是否與真實參數一致,我們繪制估計值與真實值的關系圖:
總體而言,我們觀察到估計值非常一致,由於MLE的一致性屬性,這不足為奇。
估算
我將在下面演示如何使用r軟件復制人工估算的結果 。
如果我們要忽略過程中的任何體制轉換,我們可以簡單地將參數\(\ mu \)和\(\ sigma \)估計為
\(\ hat {\ mu} \) | \(\ hat {\ sigma} \) |
---|---|
0.6244574 | 2.198929 |
平均而言,我們應該期望過程平均值約為1,即\(0.75 \ times 2 + 0.25 \ times(-1)= 1 \)。這是由總期望屬性定律得出的,其中我們知道\ [\ begin {equation} \ mathbb {E} [x] = \ sum _ {\ forall s} \ mathbb {E} \ left [x \ mid s \右] \ mathbb {P}(s)= \ sum _ {\ forall s} \ mu_ {s} \ pi_ {s} \ end {equation} \]
這樣
對於波動率,適用相同的邏輯。
我們注意到,回歸估計值與波動率的一致性高於均值。這主要是由於估算第一時刻與第二時刻的工作比較繁瑣。
上面的觀點是,估計值並未涵蓋數據的真實性質。如果我們假設數據是固定的,那么我們錯誤地估計過程的平均值為62%。但是,與此同時,我們通過構造知道該過程表現出兩個平均結果-一個正面和一個負面。波動性也是如此。
為了揭示這些模式,我們在下面演示如何使用上面的線性模型部署狀態切換模型:
主要輸入是擬合模型, mod
我們將其歸納為適應切換狀態。第二個 k
是制度的數量。由於我們知道我們要處理兩個狀態,因此將其設置為2。但是,實際上,需要參考一種信息標准來確定最佳狀態數。根據定義,我們有兩個參數,均值\(\ mu_s \)和波動率\(\ sigma_s \)。因此,我們添加一個true / false向量來指示正在切換的參數。在上面的命令中,我們允許兩個參數都切換。最后,我們可以指定估計過程是否正在使用並行計算進行。
要了解模型的輸出,讓我們看一下
上面的輸出主要報告我們嘗試手動估算的六個估算參數。首先,系數表報告了每個狀態的均值和波幅。模型1的平均值為1.71,波動率接近1。模型2的平均值為-2,波動率約為2。顯然,該模型針對數據確定了兩種具有不同均值和波動率的不同狀態。其次,在輸出的底部,擬合的模型報告過渡概率。
有趣的是,就每種狀態的過濾器而言,我們將從包中檢索到的狀態與手動提取的狀態進行比較。根據定義,可以使用mod.mswm
對象上的圖函數 來了解平滑概率以及確定的方案。
頂部的圖表示隨時間變化的過程\(x_t \),其中灰色陰影區域表示\(\ hat {\ xi} _ {T \ mid t,1}> 0.5 \)的時間段。換句話說,灰色區域表示狀態1占優勢的時間段。
過濾器會在一個周期內檢測到第二種狀態。發生這種情況是因為 plotProb
在這種情況下,返回的是平滑概率,即在實現整個樣本\(T \)后處於每種狀態的概率,即\(\ hat {\ xi} _ {t \ mid T,1} \ )。另一方面,來自手動估計的一個對應於推斷概率\(\ hat {\ xi} _ {t \ mid t,1} \)。
無論如何,由於我們知道狀態的真實值,因此可以確定我們是否處於真實狀態。我們在上面的圖中使用黑點突出顯示狀態2。總的來說,我們觀察到模型在檢測數據狀態方面表現非常出色。唯一的例外是第60天,其中推斷概率大於50%。要查看推理概率多長時間正確一次,我們運行以下命令
結束語
此過程似乎運行良好。然而,在實際數據實現方面仍然存在許多挑戰。首先,我們不具備有關數據生成過程的知識。其次,狀態不一定實現。因此,這兩個問題可能會破壞狀態切換模式的可靠性。在應用方面,通常部署此類模型以評估經濟或市場狀況。從決策上來說,這也可以為策略分配提供有趣的應用。