"変化点" は、信号のなんらかの統計プロパティが突然変化するサンプルまたは時点です。対象プロパティは、信号の平均値、その分散、スペクトル特性などが考えられます。
信号の変化点を検出するために、findchangepts
はパラメトリックでグローバルな手法を採用します。関数は以下を実行します。
1 点を選択し、信号を 2 つのセクションに分割します。
各セクションの目的の統計プロパティの経験的推定値を計算します。
セクション内の各点で、このプロパティの経験的推定値との偏差を計測します。すべての点での偏差を足し合わせます。
セクション間の偏差を足し合わせて、残差誤差の合計を求めます。
残差誤差の合計が最小になるまで、分割点の位置を変化させます。
この手続きは、選択した統計が平均値であるときに最もはっきりします。その場合、findchangepts
は各セクションの "ベストな" 水平レベルからの残差誤差の合計を最小化します。信号 x1, x2, …, xN および次の部分列の平均と分散が与えられたと仮定します。
ここで、"二乗和" は次のようになります。
findchangepts
は、
が最小となるような k を求めます。結果は、一般化して他の統計を組み込むことができます。findchangepts
は、セクションの経験的推定 χ と偏差測定 Δ が与えられる場合、
が最小となるような k を求めます。
残差誤差を最小化することは対数尤度を最大化することと等価です。平均値が μ、分散が σ2 の標準偏差が与えられると、N 個の独立した観測値の対数尤度は
です。
'Statistic'
を 'mean'
として指定した場合、分散は固定になり、関数は直前に得たとおり
を使用します。
'Statistic'
を 'std'
として指定した場合、平均値は固定になり、関数は以下を使用します。
'Statistic'
を 'rms'
に指定した場合、総偏差は 'std'
と同じになりますが、平均値はゼロに設定されます。
'Statistic'
を 'linear'
として指定した場合、関数は、信号値とその値に近似する最小二乗線形予測の差の二乗和を合計偏差として使用します。この量は、"残差二乗和" または "SSE" と呼ばれます。xm, xm+1, …, xn での最適な近似線は次のとおりです。
また、SSE は次のとおりです。
多くの場合、対象信号は複数の変化点を持ちます。変化点の数が既知の場合、手続きの一般化は簡単です。変化点の数が不明の場合は、残差誤差にペナルティ項を追加しなければなりません。変化点が増えると常に残差誤差が少なくなり過適合になるからです。極端なケースでは、すべての点が変化点になり、残差誤差がゼロになります。findchangepts
は変化点の数によって線形に増大するペナルティ項を使用します。K 個の変化点が見つかった場合、関数は以下のように最小化します。
ここで k0 と kK はそれぞれ信号の最初と最後のサンプルです。
β と表記され 'MinThreshold'
で指定される比例定数は、各変化点で追加された固定ペナルティに対応します。findchangepts
は、残差誤差の減少がしきい値を満たさない場合は、さらなる変化点の追加を除外します。考えられるすべての変化を返すには、'MinThreshold'
をゼロに設定します。
使用されているしきい値がわからない場合、または信号の変化点数が大まかにしかわからない場合は、代わりに 'MaxNumChanges'
を指定します。このオプションは、関数が指定された値より少ない変化を検出するようになるまで、しきい値を徐々に増やします。
最小化そのものを実行するために、findchangepts
は、早い段階で放棄する動的プログラミングに基づく網羅的なアルゴリズムを使用します。