7

今回は、以前の質問の 1 つで行ったように、外れ値を検出する方法について直接質問することはしません。このトピックに関連するいくつかの投稿を読みましたが、必要なものが得られませんでした。以下に示す一連の値があります。

y<-c(0.59, 0.61, 0.59, 1.55, 1.33, 3.50, 1.00, 1.22, 2.50, 3.00, 3.79, 3.98, 4.33, 4.45, 4.59, 4.72, 4.82, 4.90, 4.96, 7.92, 5.01, 5.01, 4.94, 5.05, 5.04, 5.03, 5.06, 5.10, 5.04, 5.06, 7.77, 5.07, 5.08, 5.08, 5.12, 5.12, 5.08, 5.17, 5.18)

ほとんどの研究者が言うように、外れ値検出プロセスはデータだけでなく、コンテキストにも依存します。outliers (grubbs test)、extremevalues、mvoutlier(pcout method) などの R のパッケージをいくつか使用しましたが、それらを使用する最良の方法を見つけることができませんでした。この場合 (私の要件によって異なります)、7.77 (obs no 31)、7.92 (obs on 20)、および 3.50 (obs no 6) は外れ値です。outliers パッケージの grubbs テストを使用すると、7.77 と 7.92 を外れ値として検出できますが、3.50 は検出できません。データのプロットをここに投稿できるかどうかはわかりませんが、プロットまたは分布のデータの傾向を見た後、観察番号 6 は外れ値として明らかです。

このデータに非線形モデルを当てはめようとしていますが、これらの外れ値のために、最適な適合を見つけることができませんでした (最適な適合が唯一の要件ではありません)。とにかく、これらの外れ値を検出する必要があります。これらの外れ値をモデル化します。

私の質問はとても簡単です。これらの 3 つの外れ値を標準パッケージで検出する方法や、非線形生成モデルを使用してこれらの外れ値を検出する方法はありますか?

よろしくお願いします

シャザド

ここに画像の説明を入力

4

3 に答える 3

5

上記のように使用してみdetectAO()ましたが、データに何も見つかりませんでした (これはやや似ていました: 短いスパイクが連続した傾向から外れています)。グーグルで調べたところ、 Hempel フィルター (hempel()パッケージの関数pracma) が必要なことを実行できることがわかりました。他の誰かが解決策を探している場合に備えて、これをここに追加すると思いました。

于 2013-05-17T15:26:11.097 に答える
4
library(TSA)
ar = TSA::arima(y, c(1,0,0))
detectAO(ar)

これらの 3 つの点を正確に示します (indは可能な外れ値のインデックスです)。

> detectAO(ar)
            [,1]      [,2]      [,3]
ind     6.000000 20.000000 31.000000
lambda2 4.739695  5.957604  5.490739

ただし、このアプローチをあらゆる種類のデータに適用する場合は注意してください。

于 2012-11-11T00:59:05.387 に答える
0
install.packages("forecast")         
library(forecast)
tsoutliers(data)

R のこれら 3 つのコードがあなたの質問に答えます。その後tsclean(data)、データが消去されます。

手順は次のとおりです。

install.packages("forecast")
library(forecast)
t_s<- ts(y)
plot(t_s)
tsoutliers(t_s)
t_s_new<-tsclean(t_s)
plot(t_s_new)

それでも問題が解決しない場合は、ご連絡ください。より洗練された外れ値検出器を提供します。

于 2015-06-17T10:36:51.673 に答える