R語言代寫閾值模型代碼示例


原文鏈接:http://tecdat.cn/?p=4276

閾值模型用於統計的幾個不同區域,而不僅僅是時間序列。一般的想法是,當變量的值超過某個閾值時,過程可能表現不同。也就是說,當值大於閾值時,可以應用不同的模型,而不是當它們低於閾值時。例如,在葯物毒理學應用中,可能低於閾值量的所有劑量都是安全的,而當劑量增加到閾值量以上時毒性增加。或者,在動物種群豐度研究中,種群可以緩慢增加至閾值大小,但是一旦種群超過一定大小,則可能迅速減少(由於有限的食物)。

閾值模型是制度轉換模型(RSM)的特例。在RSM建模中,不同的模型適用於某些關鍵變量的不同值間隔。

單變量時間序列的閾值自回歸模型(TAR)。在TAR模型中,AR模型在由因變量定義的兩個或更多個值間隔中單獨估計。這些AR模型可能是也可能不是相同的順序。為方便起見,通常假設它們具有相同的順序。

該文本僅考慮單個閾值,因此將存在兩個單獨的AR模型 - 一個用於超過閾值的值,另一個用於不超過閾值的值。困難在於確定是否需要TAR模型,使用的閾值以及AR模型的順序。TAR模型可以工作的數據的一個特征是當值高於某個水平時,增加和/或減少的速率可能不同於當值低於該水平時。

閾值水平的估計或多或少是主觀的。許多分析師探索了幾種不同的閾值水平,試圖提供良好的數據擬合(通過MSE值和殘差的一般特征來衡量)。AR模型的順序也可以是試錯法,特別是當數據的固有模型可能不是AR時。一般來說,分析師從他們認為可能比必要的更高的訂單開始,然后在必要時減少訂單。

本文的第5.4節涵蓋了閾值模型,並包含一個很好的例子。在本課中,我們將討論該示例並提供R代碼。這個例子的系列是美國流感死亡率每月11年(n = 132)。由於流感的流行性質,當比率超過某個閾值時,該系列的行為是非常不同的,而不是低於該值。

第一步繪制數據。以下是數據的時間序列圖。

 

 

注意陡峭增加(和減少)的時期。作者還注意到略有下降趨勢,因此首先考察了差異。以下是第一個差異的時間序列圖。

 

與原始數據一致,我們看到某些時期的急劇增加和減少。經過一些實驗,作者決定對兩個區域使用單獨的AR(4)模型:第一個差異大於或等於0.05的數據和第一個差異小於0.05的數據。該模型非常適合,作為以下圖表的證據 - 殘差的ACF和PACF以及將實際的第一差異與預測的第一差異進行比較的圖表。在比較實際值和預測值的圖中,預測值沿着紅色虛線。

 

 

R代碼示例

該示例的R代碼如下。在ts.intersect  命令中,lag(,)命令創建滯后,輸出的矩陣不包含缺少值的行。在代碼中,我們對所有數據進行AR(4)模型的回歸擬合,以便設置將在單獨的制度回歸中使用的變量。另請注意,閾值在命令c = .05中定義。  代碼將執行兩個回歸,確定殘差及其acf / pacf,並創建實際值和預測值的圖。

 
flu = ts(flu)
plot(flu,type =“b”)
y = diff(flu,1)
plot(y,type =“b”)
 
 x = model [ ,1] 

 
##低於閾值的值的回歸
less =(P [,1] <c)
x1 = x [less] 
 out1 = lm(x1~P1 [,1] + P1 [,2] + P1 [,3] + P1 [,4])
 
##回歸值高於閾值
大=(P [, 1]> = c)

out2 = lm(x2~P2 [,1] + P2 [,2] + P2 [,3] + P2 [,4])
 
## Residuals
 
less [less == 1] = res1 
  
##預測值
less =(P [,1 ] <c)
greater =(P [,1]> = c)
fit1 = predict(out1)
fit2 = predict(out2)
less [less == 1] = fit1 
greater [greater == 1] = fit2 


R中的tsDyn包將此代碼簡化為以下幾個步驟: 

 
    flu.tar4.05 = setar(dflu,m = 4,thDelay = 0,th = .05)

通過擬合和診斷圖顯示上方和下方的最終模型.05     plot(flu.tar4.05)#cycles

如果我們沒有為th選項提供閾值,則setar搜索網格以選擇閾值(.036):

 

如果您有任何疑問,請在下面發表評論。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM