時系列データの外れ値を置換する方法

取得されたある規則性を持った連続したデータに外れ値(今回は99とする)があった場合の置換方法を教えてください。
例えば、下のようなデータが取得され、
連続した50の並びの中に一つだけ0が混同したり、逆に0の並びに50が混同する場合にはその値を正しい並びに置換することは可能でしょうか?
x = [0,0,0,0,0,0,0,0,0,0,50,50,99,50,50,50,50,50,50,50,0,0,0,0,0,0,0,0,99,0]
出力したい結果としては、下記のような外れ値がない
または、 True or Falseの形で出力したいと考えています。
x = [0,0,0,0,0,0,0,0,0,0,50,50,50,50,50,50,50,50,50,50,0,0,0,0,0,0,0,0,0,0]
or
x = [0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]
何か良い方法がありましたらご教授お願いします。

10 个评论

Kenta
Kenta 2020-8-4
ここでの「外れ値」とは、どのような状況を想定されていますか?それをべつの言葉で表現していただけると問題解決につながりそうです。例えば、0 または、 最頻値 以外の数値を外れ値とするなら、最頻値を計算し、それに該当しないものはfind関数などを使って、falseとできそうですし、そのようにコーディングできたら理由の説明も簡単でよさそうです。
KH
KH 2020-8-4
ありがとうございます。
実際のデータでは、値50未満が0になるよう閾値設定を行います。閾値設定された連続した0の値の中で出てくる50以上の値を「外れ値」としています。 連続する50以上の値の時には「外れ値」はほとんどなく、想定されるのは0に近い値(50未満の値)となります(上の変数例は妥当ではないですね。すみません。)
find関数で試行錯誤してみたいと思います!
takemoto
takemoto 2020-8-4
编辑:Rena Berman 2024-7-16
Signal Processing Toolboxをお持ちであれば、こういう関数↓が提供されています。
KH
KH 2020-8-4
takemotoさん、ありがとうございます。
リンクに飛べないので持っていないということですかね。Studentライセンスです。
takemoto
takemoto 2020-8-4
失礼しました。こちら↓はいかがでしょうか?
コマンドウィンドウ上で、
>>ver
と入力した際に表示されるのが、使用可能なオプションです。
KH
KH 2020-8-4
ご丁寧にありがとうございます。入っていました。
こちらも試してみたいと思います。
KHさん、教えていただきありがとうございます。
>>値50未満が0になるよう閾値設定を行います。閾値設定された連続した0の値の中で出てくる50以上の値を「外れ値」としています。
このようなシンプルな方法でルール決めができるのであれば、ご自身でコーディングするのもよいかもしれません。
例えば、
a=[1 2 3 4 5];
a(a<3)=0
とすれば3より小さいものは0になります。
この方法ですと、
>>値50未満が0になるよう閾値設定を行います。 の部分は解決できるのですが、
>>閾値設定された連続した0の値の中で出てくる50以上の値(外れ値) をクリアできませんでした。
例えば、
a = [1,2,3,4,5,60,70,8,9,1,2,3,4,50,51,52,53,54,55,56];
a(a<50) = 0
>> [0,0,0,0,0,60,70,0,0,0,0,0,0,50,51,52,53,54,55,56]
という具合にシステム的なエラーとして60や70といった指定した値よりも大きい値が出力されてしまい、それを排除することができませんでした。
Kenta
Kenta 2020-8-4
その場合は < だけでなく > も使って、対象外の値を取り除いたりすればいかがでしょう?
KH
KH 2020-8-4
不等式だけだと必要なデータも失われてしますので工夫する必要がありそうです。
アドバイスありがとうございます!

请先登录,再进行评论。

回答(1 个)

Shunichi Kusano
Shunichi Kusano 2020-8-3

0 个投票

専用の関数がありますので、まずこちらを試すのがいいと思います。

1 个评论

KH
KH 2020-8-4
ありがとうございます。
試みてみましたが上手く処理できませんでした。他の方法を試してみます!

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Monte-Carlo 的更多信息

标签

提问:

KH
2020-8-3

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!