極値点を取得するプログラム (R言語)

時間変化による実験データやシミュレーションデータが得られたとき、増加→減少または減少→増加するような変化点は重要な時間のひとつである。この変化点を時系列データから検出するためには、3つのデータ点から増加→減少、減少→増加となる点を探せばよい。しかし、この方法だと時系列データ全体から見て、ほとんど変化が見られない場合でも検出される可能性がある。例えば、取得するデータの時間間隔によって、実験における測定時のゆらぎやシミュレーションによる誤差などの微小変化が取得されることがある。

そこで、ある一定以上の値(閾値)を基準として変化したときだけの極値点を得る。下左図の赤い点が閾値=20%以上変化した場合を極値点としたとき。下右図の赤い点が閾値=2%以上変化した場合を極値点としたとき。

*閾値:(最大値-最小値)×閾値=極値点間で変化したと判断する変化量

下図のように、状況によって変化したと考える点は異なることがある。

Github: https://github.com/kntrinoue/extremepoints