以下のデータを分析しています。
生データ(スペースで区切る):
1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0.9 1 1.1 1 1 0.9 1 1.1 1 1 1.1 1 0.8 0.9 1 1.2 0.9 1 1 1.1 1.2 1 1.5 1 3 2 5 3 2 1 1 1 0.9 1 1 3 2.6 4 3 3.2 2 1 1 0.8 4 4 2 2.5 1 1 1
3 つの大きな「グローバル」ピークといくつかの小さな「ローカル」ピークがあることがはっきりとわかります。このデータは次のように説明できます。
- 一般的な平均で基本的なノイズがある
- ノイズの分布は、指数分布族
- ノイズ(ピーク)から大きく外れたデータポイントがある
- データはリアルタイムで観測されます(期間ごとに新しいデータポイントが観測されます)
一般的なノイズを無視しながら、ピークをリアルタイムで識別するにはどうすればよいでしょうか?
ベストアンサー1
堅牢なピーク検出アルゴリズム(Zスコアを使用)
私は、このような種類のデータセットに非常によく機能するアルゴリズムを考案しました。それは、分散: 新しいデータポイントが移動平均から指定されたx標準偏差数だけ離れている場合、アルゴリズムはシグナルを発します。このアルゴリズムは、移動平均と偏差を別々に構築するため、以前のシグナルが将来のシグナルのシグナルしきい値を損なわないため、非常に堅牢です。したがって、アルゴリズムの感度は以前のシグナルに対して堅牢です。
アルゴリズムには 3 つの入力が必要です。
- ラグ。履歴データの平均と標準偏差を計算する移動ウィンドウのラグ。ウィンドウが長いほど、より多くの履歴データが考慮されます。ウィンドウが短いほど適応性が高くなり、アルゴリズムは新しい情報にすばやく適応します。たとえば、ラグが 5 の場合、最後の 5 つの観測値を使用してデータが平滑化されます。
- しきい値。Zスコアアルゴリズムが信号を出すしきい値です。簡単に言うと、新しいデータポイントと移動平均の間の距離が、データの移動標準偏差に掛けたしきい値よりも大きい場合、アルゴリズムは信号を提供します。たとえば、しきい値が 3.5 の場合、データポイントが移動平均から 3.5 標準偏差離れている場合に信号が出されます。
- 影響度。移動平均と移動標準偏差の計算における新しい信号の影響度(0~1)。たとえば、影響度パラメータが0.5の場合、新しい信号は通常のデータポイントの影響度の半分になります。同様に、影響度が0の場合、新しいしきい値の再計算で信号が完全に無視されます。したがって、影響度が0の場合、最も堅牢なオプションです(ただし、定常性); 影響オプションを 1 に設定すると、最も堅牢性が低くなります。したがって、非定常データの場合、影響オプションは 0 から 1 の間に設定する必要があります。
動作は次のように行われます。
擬似コード
# Let y be a vector of timeseries data of at least length lag+2
# Let mean() be a function that calculates the mean
# Let std() be a function that calculates the standard deviaton
# Let absolute() be the absolute value function
# Settings (these are examples: choose what is best for your data!)
set lag to 5; # average and std. are based on past 5 observations
set threshold to 3.5; # signal when data point is 3.5 std. away from average
set influence to 0.5; # between 0 (no influence) and 1 (full influence)
# Initialize variables
set signals to vector 0,...,0 of length of y; # Initialize signal results
set filteredY to y(1),...,y(lag) # Initialize filtered series
set avgFilter to null; # Initialize average filter
set stdFilter to null; # Initialize std. filter
set avgFilter(lag) to mean(y(1),...,y(lag)); # Initialize first value average
set stdFilter(lag) to std(y(1),...,y(lag)); # Initialize first value std.
for i=lag+1,...,t do
if absolute(y(i) - avgFilter(i-1)) > threshold*stdFilter(i-1) then
if y(i) > avgFilter(i-1) then
set signals(i) to +1; # Positive signal
else
set signals(i) to -1; # Negative signal
end
set filteredY(i) to influence*y(i) + (1-influence)*filteredY(i-1);
else
set signals(i) to 0; # No signal
set filteredY(i) to y(i);
end
set avgFilter(i) to mean(filteredY(i-lag+1),...,filteredY(i));
set stdFilter(i) to std(filteredY(i-lag+1),...,filteredY(i));
end
データに適したパラメータを選択するための経験則を以下に示します。
デモ
このデモのMatlabコードは以下にあります。ここデモを使用するには、デモを実行し、上部のチャートをクリックして自分で時系列を作成するだけです。アルゴリズムは、lag
一定数の観測値を描画した後に動作を開始します。
結果
元の質問の場合、このアルゴリズムは次の設定を使用すると次の出力を生成しますlag = 30, threshold = 5, influence = 0
。
さまざまなプログラミング言語での実装:
マトラボ(自分)
R(自分)
Go言語(ゼオンクロス)
Go言語[効率的なバージョン] (マイカ・パークス)
パイソン(R・キセレフ)
パイソン[効率版] (デリカ)
迅速(自分)
グルーヴィー(JoshuaCWeb開発者)
C++[インタラクティブパラメータ] (Jason C)
C++(アニメシュ・パンディ)
さび(ウィザード)
スカラ(マイク・ロバーツ)
コトリン(レオダープロフィール)
ルビー(キモ・レト)
フォートラン[共鳴検出用] (THo)
ジュリア(マット・キャンプ)
C#(海洋エアドロップ)
C(デビッドC)
ジャワ(たかぬば15)
JavaScript(ディルク・リューゼブリンク)
タイプスクリプト(ジェリー・ギャンブル)
パール(アレン)
PHP の(ラドゥー)
PHP の(グジャメサ)
ダーツ(スガ)
ファ#(DieOde)
オカムル(マーク・エルヴァース)
アルゴリズムを設定するための経験則
ラグ。ラグパラメータは、データがどの程度平滑化されるか、また、データの長期平均の変化に対してアルゴリズムがどの程度適応するかを決定します。ラグが大きいほど、定常データが多ければ多いほど、より多くのラグを含める必要があります (これにより、アルゴリズムの堅牢性が向上します)。データに時間とともに変化する傾向が含まれている場合は、アルゴリズムをこれらの傾向にどれだけ早く適応させたいかを考慮する必要があります。つまり、lag
10 に設定すると、しきい値が長期平均の体系的な変化に合わせて調整されるまでに 10 期間 (データ ポイント) かかります。したがって、lag
データの傾向動作とアルゴリズムをどの程度適応させたいかに基づいてパラメーターを選択してください。
影響。このパラメータは、アルゴリズムの検出しきい値に対する信号の影響を決定します。0 に設定すると、信号はしきい値に影響を与えず、過去の信号に影響されない平均と標準偏差で計算されたしきい値に基づいて将来の信号が検出されます。0.5 に設定すると、信号は通常のデータ ポイントの半分の影響を持ちます。これについて考える別の方法は、影響を 0 に設定すると、暗黙的に定常性を想定するということです (つまり、信号がいくつあっても、時系列は長期的に同じ平均に戻ると常に予想されます)。そうでない場合は、信号がデータの時間変動傾向に体系的に影響できる程度に応じて、影響パラメータを 0 から 1 の間に設定します。たとえば、信号がデータの時間変動傾向につながる場合、構造破壊時系列の長期平均の場合、影響パラメータを高く(1 に近く)設定して、しきい値が構造的変化に迅速に反応できるようにする必要があります。
しきい値。しきい値パラメータは、移動平均からの標準偏差の数であり、それを超えるとアルゴリズムは新しいデータポイントをシグナルとして分類します。たとえば、新しいデータポイントが移動平均より 4.0 標準偏差上にあり、しきい値パラメータが 3.5 に設定されている場合、アルゴリズムはデータポイントをシグナルとして識別します。このパラメータは、予想されるシグナルの数に基づいて設定する必要があります。たとえば、データが正規分布している場合、しきい値 (または: z スコア) が 3.5 の場合、シグナル確率は 0.00047 (このテーブル) は、2128 データポイントごとに 1 回 (1/0.00047) の信号が期待されることを意味します。したがって、しきい値はアルゴリズムの感度に直接影響し、それによってアルゴリズムが信号を送信する頻度も決定します。独自のデータを調べて、必要なときにアルゴリズムが信号を送信する適切なしきい値を選択します (目的に適したしきい値を見つけるには、ここで試行錯誤が必要になる場合があります)。
警告: 上記のコードは、実行されるたびに常にすべてのデータポイントをループします。このコードを実装するときは、信号の計算を別の関数 (ループなし) に分割するようにしてください。その後、新しいデータポイントが到着したら、 を 1 回更新しますfilteredY
。avgFilter
新しいstdFilter
データポイントがあるたびにすべてのデータの信号を再計算しないでください (上記の例のように)。これは、リアルタイム アプリケーションでは非常に非効率的で遅くなります。
アルゴリズムを変更するその他の方法(潜在的な改善のため)は次のとおりです。
- 平均値の代わりに中央値を使用する
- 使う堅牢な規模の尺度標準偏差の代わりに中央絶対偏差(MAD)など
- 信号マージンを使用して、信号が頻繁に切り替わらないようにします。
- 影響パラメータの動作方法を変更する
- 上昇信号と下降信号を別々に処理する(非対称処理)
influence
平均と標準偏差の別々のパラメータを作成します(このSwiftの翻訳のように)
この StackOverflow の回答に対する (既知の) 学術的引用:
キム、M.、ハーグローブ、LJ(2023)。義足制御のためのベンチマークデータセットに基づく合成歩行パターンの生成神経工学とリハビリテーションジャーナル、20(1)、115 。
Elvitigala, DS、Wang, Y.、Hu, Y.、Quigley, AJ (2023)。RadarFoot: スマートシューズのためのきめ細かな地面状況認識.第 36 回 ACM ユーザー インターフェイス ソフトウェアおよびテクノロジ シンポジウムの議事録、1-13 ページ。
キム、M.、ハーグローブ、LJ(2023)。義足用コントローラを評価するためのベンチマークデータセットでトレーニングされた歩行位相予測モデル.神経ロボティクスの最前線、 16、1064313。
Catalbas, MC、Dobrisek, S. (2023)。新しい軽量R-CNNモデルに基づく動的話者位置推定ニューラルコンピューティングとアプリケーション、1-15 。
Oeser, L., Samala, N., Hillemann, L., Rudolph, A., & Lienig, J. (2022).デジタル信号処理技術による粒子サイズ分光計の同時誤差の最小化エアロゾル科学ジャーナル、 165、106039 。
Phiri, BJ、Fèvre, D.、Hidano, A.(2022)。1961年から2017年までの60年間の視点に基づく、世界の管理されたミツバチのコロニーと生産の増加傾向.科学報告、12(1)、21298。
Cai, Y., Wang, X., Joos, G., & Kamwa, I. (2022).非線形ダイナミクスのスパース同定に基づく発電所の強制振動源を特定するためのオンラインデータ駆動型手法 (SINDy)IEEE電力システムトランザクションズ。
Yang, S.、Yim, J.、Kim, J.、Shin, HV (2022)。CatchLive: ストリームコンテンツとインタラクションデータを使用したライブストリームのリアルタイム要約CHI コンピューティングシステムにおけるヒューマンファクターに関する会議、1-20 。
Feng, D., Tan, Z., Engwirda, D., Liao, C., Xu, D., Bisht, G., ... & Leung, R. (2022).非構造メッシュ上の全球河川輸送モデルを使用して沿岸域の背水の影響と洪水を調査する水文学と地球システム科学の議論、1-31 [プレプリント]。
Link, J.、Perst, T.、Stoeve, M.、Eskofier, BM(2022)。畳み込みニューラルネットワークと転移学習を用いたアルティメットフリスビーのアクティビティ認識用ウェアラブルセンサーセンサー、22(7)、2560。
タロン・バレステロス、AJ(2022年1月)。リチウムイオン電池の SOH 推定のためのシーケンスインシーケンス学習CECNet 2021の議事録:第11回国際電子通信ネットワーク会議(CECNet)、 345、14 。
Romeiro, JMN, Torres, FTP、Pirotti, F. (2021)。スペクトル指数とSARデータを用いた計画的火災の効果の評価。ボレッティーノイタリア写真・地形学会誌、(2)、36-56。
ムーア、J.、ゴフィン、P.、ヴィーゼ、J.、マイヤー、M.(2021)。個人データを活用するインタビュー手法インタラクティブ、モバイル、ウェアラブル、ユビキタステクノロジーに関するACMの議事録、5(4)、1-28 。
Rykov, Y., Thach, TQ, Bojic, I., Christopoulos, G., & Car, J. (2021).ウェアラブルデバイスによるうつ病スクリーニングのためのデジタルバイオマーカー:機械学習モデルによる横断的研究. JMIR mHealthとuHealth、9(10)、e24872。
Hong, Y., Xin, Y., Martin, H., Bucher, D., & Raubal, M. (2021).個人の旅行行動の変化を検出するためのクラスタリングベースのフレームワーク第11回国際地理情報科学会議(GIScience 2021)-パートII 。
Grammenos, A.、Kalyvianaki, E.、Pietzuch, P.(2021)。Pronto: フェデレーテッドタスクスケジューリング. arXivプレプリントarXiv:2104.13429.
コーティアル、N.(2020)。心臓電気生理学の手順を支援するマルチモーダル画像の融合レンヌ大学博士論文。
ベックマン、WF、ヒメネス、M. Á. L.、Moerland、PD、Westerhoff、HV、およびVerschure、PJ(2020)。乳がん細胞におけるゲノムワイド転写バースト定量化のための4sUDRBシーケンシング. bioRxiv.
Olkhovskiy, M.、Müllerová, E.、Martínek, P. (2020)。1次元畳み込みニューラルネットワークを用いたインパルス信号の分類電気工学ジャーナル、71(6)、397-405 。
Gao, S.、Calderon, DP(2020)。げっ歯類の覚醒を評価するための立ち直り反射の強力な代替手段科学報告、10(1)、1-11 。
チェン、G.&ドン、W.(2020)。クロステクノロジー通信リンク上の反応型妨害と攻撃緩和ACMトランザクションズ・オン・センサー・ネットワークス、17(1)。
高橋 亮・福本 雅俊・韓 千恵・笹谷 剛・成末 雄志・河原 勇志 (2020).TelemetRing: 受動誘導テレメトリを使用したバッテリー不要のワイヤレスリング型キーボード第33回ACMユーザーインターフェースソフトウェアおよびテクノロジーシンポジウム議事録(pp. 1161-1168)。
Negus, MJ, Moore, MR, Oliver, JM, Cimpeanu, R. (2020).スプリング支持板への液滴衝突:解析とシミュレーション工学数学ジャーナル、128(3)。
Yin, C.(2020)。コロナウイルスSARS-CoV-2ゲノムの二塩基反復:進化論的意味. ArXiv e-print、以下からアクセス可能:出典: http://arxiv.org/pdf/2006.00280.pdf
Esnaola-Gonzalez, I.、Gómez-Omella, M.、Ferreiro, S.、Fernandez, I.、Lázaro, I.、García, E. (2020)。養鶏生産チェーンの強化に向けたIoTプラットフォームセンサー、20(6)、1549。
Gao, S.、Calderon, DP(2020)。皮質運動統合の継続的なレジメンは、麻酔からの覚醒時の覚醒レベルを調整する。. bioRxiv.
Cloud, B., Tarien, B., Liu, A., Shedd, T., Lin, X., Hubbard, M., ... & Moore, JK (2019).競技ボートの運動学的指標を推定するための適応型スマートフォンベースのセンサー融合. PloS1、14(12)。
Ceyssens, F., Carmona, MB, Kil, D., Deprez, M., Tooten, E., Nuttin, B., ... & Puers, R. (2019).0.06 mm²の溶解性マイクロニードルを挿入装置として使用し、細胞内断面のプローブによる慢性神経記録センサーとアクチュエータB:化学、 284、369-376。
Dons, E., Laeremans, M., Orjuela, JP, Avila-Palencia, I., de Nazelle, A., Nieuwenhuijsen, M., ... & Nawrot, T. (2019).大気汚染を引き起こす可能性が最も高い交通機関 日常生活における曝露のピーク: 2000日を超える個人モニタリングからの証拠大気環境、213、424- 432 。
Schaible BJ、Snook KR、Yin J.、et al. (2019)。2014 年 1 月から 2015 年 4 月までの 5 か国におけるポリオに関する Twitter での会話と英語のニュース メディアの報道パーマネンテジャーナル、 23、18-181 。
リマ、B.(2019)。触覚対応ロボット指先を使用した物体表面探査(オタワ大学博士論文)。
Lima, BMR、Ramos, LCS、de Oliveira, TEA、da Fonseca, VP、Petriu, EM (2019)。マルチモーダル触覚センサーと Z スコア ベースのピーク検出アルゴリズムを使用した心拍数検出. CMBES Proceedings、42 .
Lima, BMR、de Oliveira, TEA、da Fonseca, VP、Zhu, Q.、Goubran, M.、Groza, VZ、Petriu, EM (2019 年 6 月)。小型マルチモーダル触覚センサーを使用した心拍数検出2019 IEEE 国際医療計測および応用シンポジウム (MeMeA) (pp. 1-6)。IEEE。
Ting, C.、Field, R.、Quach, T.、Bauer, T. (2019)。圧縮ベースの分析を使用した一般化された境界検出ICASSP 2019 - 2019 IEEE 国際音響・音声・信号処理会議 (ICASSP)、ブライトン、イギリス、3522-3526。
キャリア、EE(2019)。離散線形システムの解法における圧縮の活用.イリノイ大学アーバナシャンペーン校博士論文。
Khandakar, A., Chowdhury, ME, Ahmed, R., Dhib, A., Mohammed, M., Al-Emadi, NA, & Michelson, D. (2019).運転中のドライバーの行動と携帯電話の使用を監視および制御するためのポータブルシステムセンサー、19(7)、1563。
Baskozos, G., Dawes, JM, Austin, JS, Antunes-Martins, A., McDermott, L., Clark, AJ, ... & Orengo, C. (2019).脊髄神経節における長鎖非コードRNA発現の包括的解析により、神経損傷後の細胞型特異性と調節不全が明らかになった.痛み、160(2)、463。
Cloud, B.、Tarien, B.、Crawford, R.、Moore, J. (2018)。競技ボートの運動学的指標を推定するための適応型スマートフォンベースのセンサー融合. engrXiv プレプリント.
ザイデル、TJ(2018)。細菌ベースのバイオセンシングのための電子インターフェースカリフォルニア大学バークレー校博士論文。
パーキンス、P.、ヒーバー、S.(2018)。Z スコアに基づくピーク検出アルゴリズムを使用したリボソーム休止部位の特定IEEE第 8 回国際バイオおよび医学科学における計算の進歩に関する会議 (ICCABS)、ISBN: 978-1-5386-8520-4。
ムーア、J.、ゴフィン、P.、マイヤー、M.、ランドリガン、P.、パトワリ、N.、スワード、K.、およびウィーズ、J.(2018)。空気質データの検知、注釈付け、視覚化による家庭内環境の管理インタラクティブ、モバイル、ウェアラブル、ユビキタステクノロジーに関するACMの議事録、2(3)、128 。
Lo, O., Buchanan, WJ, Griffiths, P., Macfarlane, R. (2018)、ブキャナン、WJ、グリフィス、P.、マクファーレン、R. (2018)、内部脅威検出の改善のための距離測定方法、セキュリティと通信ネットワーク、Vol. 2018、記事ID 5906368。
Apurupa, NV, Singh, P., Chakravarthy, S., Buduru, AB (2018)。インドのアパートにおける電力消費パターンの批判的研究博士論文、IIIT-デリー。
シレア、M.(2017)。感情的な音楽生成とそれがプレイヤー体験に与える影響博士論文、コペンハーゲンIT大学、デジタルデザイン。
Scirea, M.、Eklund, P.、Togelius, J.、および Risi, S. (2017)。原始即興:共進化する音楽即興に向けて.コンピュータサイエンスと電子工学(CEEC)、2017年、172-177。
Catalbas, MC, Cegovnik, T., Sodnik, J. および Gulten, A. (2017)。眼球運動に基づく運転者の疲労検知、第10回国際電気電子工学会議(ELECO)、913-917。
この回答のアルゴリズムを使用した他の作品
Bergamini, E. および E. Mourlon-Druol (2021)。ヨーロッパについて語る: 70年間のニュースアーカイブを探る. ワーキングペーパー 04/2021、ブリューゲル。
コックス、G.(2020)。測定信号のピーク検出.オンライン記事https://www.baeldung.com/cs/signal-peak-detection。
ライムンド、DW(2020)。SwitP: リアルタイム水泳分析のためのモバイル アプリケーション。.学期論文、ETHチューリッヒ。
ベルナルディ、D.(2019)。マルチモーダルジェスチャーによるスマートウォッチとモバイルデバイスのペアリングの実現可能性調査修士論文、アールト大学。
レメンズ、E.(2018)。統計的手法を用いたイベントログの外れ値検出、修士論文、アイントホーフェン大学。
ウィレムス、P.(2017)。高齢者向けの気分をコントロールした感情的な雰囲気、修士論文、トゥエンテ大学。
Ciocirdel, GD および Varga, M. (2016)。Wikipediaのページビューに基づく選挙予測プロジェクト論文、アムステルダム自由大学。
この回答からのアルゴリズムの他の応用
九尾オックスフォードナノポア直接RNAシーケンシング読み取りにおける非アデノシンポリ(A)残基を見つけるためのRパッケージ。拉麺。
Avo Audit dbt パッケージ、Avo Company (次世代分析ガバナンス) による。
OpenBCIシステムによる合成音声、SarahK01 より。
Python パッケージ: 機械学習金融研究所、De Prado, ML (2018)の研究に基づいています。金融機械学習の進歩ジョン・ワイリー・アンド・サンズ。
Adafruit CircuitPlayground ライブラリ、Adafruit ボード、Adafruit Industries 製。
歩数トラッカーアルゴリズム、Android アプリ、jeeshnair による。
R パッケージ: animaltracker、ジョー・チャンピオン、シーア・スキアント著。
他のピーク検出アルゴリズムへのリンク
このアルゴリズムを参照する方法:
Brakel, JPG van (2014)。「Z スコアを使用した堅牢なピーク検出アルゴリズム」。Stack Overflow。入手可能:https://stackoverflow.com/questions/22583391/peak-signal-detection-in-realtime-timeseries-data/22640362#22640362(バージョン: 2020-11-08)。
Bibtex @misc{brakel2014、author = {Brakel、JPG van}、title = {z スコアを使用した堅牢なピーク検出アルゴリズム}、url = {https://stackoverflow.com/questions/22583391/peak-signal-detection-in-realtime-timeseries-data/22640362#22640362}、language = {en}、year = {2014}、urldate = {2022-04-12}、journal = {Stack Overflow}、howpublished = {https://stackoverflow.com/questions/22583391/peak-signal-detection-in-realtime-timeseries-data/22640362#22640362}}
この関数をどこかで使用する場合は、上記の参照を使用して私をクレジットしてください。アルゴリズムについて質問がある場合は、以下のコメントに投稿するか、私に連絡してください。リンクトイン。