3
我有一些高度季節性的天氣相關數據,我想要做的是 來確定一些「異常值」並將這些異常值更改爲合理值(我不想刪除它們) 。過濾季節性時間序列異常值
我使用Hampel的過濾器從pracma包找出並糾正這些異常值,但問題是,一些季節性的峯被降低太多。我猜 這個功能沒有考慮到季節性。 下圖顯示了這個(24個月的窗口),紅線是過濾的數據。
有沒有辦法糾正這個問題?換句話說,採取'峯值'和平均他們之間的季節? 謝謝!
我有一些高度季節性的天氣相關數據,我想要做的是 來確定一些「異常值」並將這些異常值更改爲合理值(我不想刪除它們) 。過濾季節性時間序列異常值
我使用Hampel的過濾器從pracma包找出並糾正這些異常值,但問題是,一些季節性的峯被降低太多。我猜 這個功能沒有考慮到季節性。 下圖顯示了這個(24個月的窗口),紅線是過濾的數據。
有沒有辦法糾正這個問題?換句話說,採取'峯值'和平均他們之間的季節? 謝謝!
至於建議由@邁克爾,這裏的一些代碼,除去季節性成分,應用異常過濾器上剩餘的意甲,並再次增加了季節性的組件(由您自己承擔風險使用):
filter.outliers = function(serie.orig)
{
require(forecast)
require(pracma)
## get a stl decomposition object
stl.decomp = stl(serie.orig, s.window = 'periodic', t.window = 13, robust = T)
## remove the seasonal component
serie.desaz = seasadj(stl.decomp)
## apply a hampel filter
serie.desaz2 = hampel(serie.desaz, k = 12)$y
## put back the seasonal component
return(serie.desaz2 + stl.decomp$time.series[, 'seasonal'])
}
我懷疑這樣修補數據是個好主意。我發現'hampel'中的「註釋」很有啓發性。 – Roland
每年有一次發生機率爲50%時,他們真的可以被稱爲離羣值嗎? –
是的 - 這些高價值與厄爾尼諾有關,如果我忽視它們,我的模型給出的預測值太高(自1931年以來從未發生/ 1月)。 – Fernando