波形などの時系列データを解析する際、多くの場合フィルタリングやWavelet convolutionを行う。
この際注意しなければならないのが”Edge effect”と呼ばれるものである。
これはフィルタリング等を行う際に波形データの始点付近と終点付近に歪みが現れる現象である。
十分に長い時系列データを処理する際にはあまり問題にならないが、短い時系列データを扱う際にはEdge effectの範囲が割合として大きくなってしまい結果の信頼性が損なわれる。
その際にはどうすればいいのか?3つの考え方をメモ。
(当方信号処理の専門家ではないので参考程度にお願いします)
Reflection
その一つの方法が”Reflection”と呼ばれる方法らしい(以下動画参照)。
元の波形データをそっくりそのままコピーしたものを左右反転させ、それを前後に連結した上でフィルタリング等の解析を行う。その後、付け加えた部分を切り落とす。
そうすると始点と終点の前後にも元の信号の特性を保ったままデータを延長できるため、Edge effectを軽減できる。
発想はシンプルであり解析も簡単である。
ただしどの程度Edge effectを回避できているのか、またどの程度信頼性のある手法なのかはよくわからない。というのもこの動画の制作者以外の情報が見当たらないからだ。
論文等に用いる際には動画の制作者(MX Cohen)の著書
Analyzing Neural Time Series Data: Theory and Practice (The MIT Press)
を引用するのが良いか。
適切な実験を組む
あとは、そもそも実験計画の段階でなるべくEdge effectの影響を極力受けないようなものを組むことが望ましいと思われる(データ収集の時間窓を長くするなど)。
振動ではなく多峰性と捉える
他の方法として、波形データとして捉えている仮定を考え直すことが考えられる。
時系列データの振動特性を捉えようとすると、バンドパスフィルタだったりWavelet convolutionを行うことになる。
しかしそもそも時系列データが短い場合には、それが「振動である」という捉え方が適切でない場合がある。
むしろ、その時系列データに「複数のピークがある=多峰性がある」と捉えるほうが適切なことがある。
その多峰性の検定にはSilverman testなどの手法がある。
Rを使ってSilverman検定する解説記事(外部リンク)
Silverman検定についての分かりやすい日本語の解説論文(外部リンク)
詳細は上記リンクを参照。