3

季節性の高い気象関連のデータがいくつかあります。やりたいことは、いくつかの「外れ値」を特定し、これらの外れ値を妥当な値に変更することです (それらを削除したくありません)。

pracmaパッケージのhampelフィルターを使用して、これらの外れ値を特定して修正していますが、問題は、いくつかの季節的なピークが下がりすぎていることです。この関数は季節性を考慮していないと思います。以下のプロットはこれを示しています (24 か月のウィンドウ)。赤い線はフィルター処理されたデータです。

これを修正する方法はありますか?つまり、「ピーク」を取り、シーズン間の平均をとりますか? ありがとう! ここに画像の説明を入力

4

1 に答える 1

3

@Michael で提案されているように、季節成分を削除し、残りのシリーズに外れ値フィルターを適用し、季節成分を再度追加するコードを次に示します (自己責任で使用してください)。

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'])
}

ここに画像の説明を入力

于 2012-09-01T19:00:53.470 に答える