web-dev-qa-db-ja.com

時系列データの重要な変化/傾向を検出する方法は?

だから私は25サンプルの配列を持っているので、25サンプルの時間間隔からnが減少しているか増加しているかの傾向に注意することができます(基本的に25サンプルの配列は、すべてのsay 1 ms )。

私が探しているのは一般的な傾向であり、個々の導関数ではないことに注意してください(有限差分または他の数値微分手法を使用して得たものです)。

基本的に、データにノイズが多いと予想されるので、フィルタリングなどを行った後でも上下に変動する可能性があります。しかし、私が探しているのは、行動を増加または減少させる一般的な傾向です。

ミリ秒ごとに増減する動作を統合して、ユーザーインターフェイスイベント(LEDの点滅)に近いイベントをトリガーするため、一般的な傾向を検出できる限り、処理の遅延をあまり必要としません。

前もって感謝します!

26
as3rdaccount

既に指摘したように、あなたは派生物を探していません。あなたは本当に時系列の「重要な変化」検出アルゴリズムを探しています。

もちろん、平滑化フィルターが必要になります(移動平均フィルターは問題ありません。この部分については Bjornの答え を参照してください)。

ただし、平滑化フィルターに加えて、決定基準またはしきい値セレクターも必要です。これを超えると、フィルター処理された変更が重要かどうかを決定します。

時系列の基礎統計が安定している場合(定常時系列)、標準偏差の意味で、固定統計しきい値を使用できます平均。たとえば、かなり強力な「アラーム」しきい値が必要な場合は、2つの標準偏差を選択できます(リターンの最も強い5%でのみアラームが発生すると考えてください)。

根本的な問題に時系列が安定していることを示唆するものがない場合、つまり時系列に傾向がある場合、または時系列を生成する基盤プロセスが監視中に根本的な変化を経験する場合は、信号対雑音(mu/sigma)の意味で、動的な、または適応しきい値を使用する必要があります。その後、信号対雑音テストに合格するすべての「意味のある」要素を検出することを選択できます。

28
Assad Ebrahim

派生物が必要なように思えません。ローパスフィルターが必要なようです。ローパスフィルターは、急速に変化するデータを単に削除し、より長くよりゆっくりと変化する傾向をそのまま残します。最も直感的なローパスフィルターは移動平均フィルターで、最後のn入力の平均を取ります。ここで、nはノイズと探しているトレンドのサイズに基づいて決定されます。これは、音声データから画像処理、失業データまで幅広く使用されています(4週間の移動平均失業率が広く引用されています)。

必要に応じて、再帰的な手法を使用してより効率的で選択的なフィルターを開発することができます。このチュートリアルを使用して、ローパスフィルターを作成できます。オーディオ用に書かれていますが、ほとんどのデータで動作します。ベルフィルターの作成方法を示しますが、ローパスフィルターの方が簡単です。

http://blog.bjornroche.com/2012/08/basic-audio-eqs.html

14
Bjorn Roche

wiener filter を使用できます。信号統計がわかっていて、nステップ先の予測子として使用できます。傾向の決定は、ウィナーフィルターの予測に基づいて簡単に行うことができます。信号が広義の定常状態ではなく、予測を線形(非線形/非定常プロセス)で行うことができないと考えている場合、 [〜#〜] lms [〜#〜]のような適応ウィナーフィルターを使用できます。 フィルター。

2
YBE