変化ポイントの検出 (Change Point Detection) (時空間パターン マイニング)

サマリー

時系列の統計的特性が時空間キューブの各ロケーションで変化したときの時間ステップを検出します。

ツールでは、連続変数の平均値、標準偏差、またはリニア トレンドの変化や、カウント変数の平均値の変化を検出することができます。 各ロケーションの変化ポイントの数はツールによって判断するか、すべてのロケーションで使用する変化ポイントの数を定義することができます。 変化ポイントは、各時系列をセグメントに分割し、各セグメントの値の平均値、標準偏差、またはリニア トレンドが類似した値になるようにします。 変化ポイントは、新しい各セグメントの最初の時間ステップとして定義されるため、変化ポイントの数はセグメントの数よりも常に 1 つ少なくなります。

変化ポイントの検出ツールの詳細

変化ポイントの検出ツールの図

使用法

  • [方法] パラメーターが [変化ポイントの数を自動検出] に設定されている場合、[検出感度] パラメーターを使用して検出の感度を制御します。 感度の値が高いほど、各ロケーションでの変化ポイントが多くなります。 感度の選択は分析結果に大きく影響するため、複数の値を試して結果を比較することをお勧めします。

    検出感度の詳細

  • カウントを表す分析変数の場合、カウントの平均値の変化を検出するには、多くの場合、[変化タイプ] パラメーターの [カウント] オプションが最も適しています。 ただし、[平均シフト] オプションも、カウント データに対して同等以上の良い結果をもたらす場合があります。 これは、カウント変化タイプのモデルが、セグメントの分散がセグメントの平均値に等しいポアソン分布に各セグメントの値が従うことを前提としているためです。 一方、平均シフト変化タイプでは、各セグメントの値が正規分布することを前提としているため、平均値は値の分散よりも大きくなったり小さくなったりします。

    ポアソン分布では、ほとんどのカウントが平均値の平方根の 2 倍以内に収まります。 たとえば、平均値が 100 のポアソン分布の場合、約 95% のカウントが 80 〜 120 に分布します (2 x sqrt(100) = 20)。 平均値が 1,000,000 のポアソン分布の場合、ほとんどのカウントは 998,000 〜 1,002,000 に分布します (1,000,000 の平方根は 1,000 のため)。 平均値が 1,000,000 のような大きな値の場合、カウントの分布範囲は比較的狭く、ほとんどのカウントが平均値の 0.2% 以内に収まります。 一方、平均値が 100 のような小さな値の場合、平均値から最大 20% の変動が生じます。 平均値と比較して、ポアソン分布で想定されるよりもカウントの値が変動する場合、多くの時間ステップが変化ポイントとして検出される可能性があります。 これは、カウントが大きい場合には顕著です。 この場合、平均シフトを検出することをお勧めします。

  • このツールでは、時空間パターン マイニング ツールボックスのさまざまなツールで作成された netCDF ファイルを使用できます。

    時空間キューブの作成の詳細

  • [出力フィーチャ] パラメーター値は、最初と最後の変化ポイントの日付のフィールドとともに [コンテンツ] ウィンドウに追加され、各ロケーションで検出された変化ポイントの数に基づいてレンダリングされます。 フィーチャのポップアップには、時系列値、変化ポイント、および各変化ポイント間のセグメントの平均または標準偏差の推定を示すライン チャートが含まれます。

  • [出力フィーチャ] パラメーター値のレイヤー時間は、最初の変化ポイントの日付に基づいています。 タイム スライダーを使用して、最初の変化ポイントの日付に基づいてロケーションをフィルター処理できます。 レイヤー時間は、レイヤー プロパティで最後の変化ポイントの日付に変更できます。

  • 入力時空間キューブは分析結果で更新され、[表示テーマ] パラメーターの [時系列の変化ポイント] オプションを指定した [時空間キューブを 3D で視覚化 (Visualize Space Time Cube in 3D)] ツールで、結果の 3D 表示に使用できます。 この出力には、時空間キューブの時間ステップごとに 1 つのフィーチャが含まれる、時間ステップが変化ポイントであるかどうかを示すフィールドと、セグメントの平均または標準偏差の推定も含まれます。 時空間キューブを [時空間キューブを 2D で視覚化 (Visualize Space Time Cube in 2D)] ツールで使用すると、変化ポイント検出の出力フィーチャクラスが再作成されます。

  • このツールは、異なるプロセシング コアで別々のロケーションを解析する並列処理をサポートしており、デフォルトで利用可能なプロセッサの 50 パーセントを使用します。 プロセッサの数を増減するには、並列処理ファクター環境を使用します。

パラメーター

ラベル説明データ タイプ
入力時空間キューブ

解析対象の変数を含む時空間キューブ。 時空間キューブのファイル拡張子は「*.nc」です。時空間キューブは、時空間パターン マイニング ツールボックスのさまざまなツールを使用して作成されます。

File
分析変数

各ロケーションの時系列値を含む時空間キューブの数値変数。

String
出力フィーチャ

変化ポイント検出の結果を含む出力フィーチャクラス。 レイヤーには、各ロケーションで検出された変化ポイントの数が表示され、時系列値、変化ポイント、および各セグメントの平均または標準偏差の推定を示すポップアップ ライン チャートが含まれます。

Feature Class
変化タイプ
(オプション)

検出される変化のタイプを指定します。 各オプションは、各セグメントで一定と見なされている時系列の統計的特性を指定します。 値は、時系列の変化ポイントごとに新しい定数値に変化します。

  • 平均シフト平均値のシフトが検出されます。 これがデフォルトです。
  • 標準偏差標準偏差の変化が検出されます。
  • 傾斜 (リニア トレンド)傾斜 (リニア トレンド) の変化が検出されます。
  • カウントカウント データの平均値の変化が検出されます。
String
方法
(オプション)

変化ポイントの数を自動的に検出するか、すべてのロケーションで使用する変化ポイントの数を定義するかを指定します。

  • 変化ポイント数の自動検出 (PELT)変化ポイントの数が自動的に検出されます。 検出の感度は [検出感度] パラメーターで定義されます。 これがデフォルトです。
  • 定義済みの変化ポイントの数 (SegNeigh)変化ポイントの数は、[変化ポイントの数] パラメーターで定義されます。
String
変化ポイントの数
(オプション)

各ロケーションで検出される変化ポイントの数。 デフォルトは 1 です。

Long
検出感度
(オプション)

検出の感度を定義する 0 ~ 1 の数値。 値が大きいほど、各ロケーションで検出される変化ポイントの数が多くなります。 デフォルトは 0.5 です。

Double
セグメントの最小長
(オプション)

各セグメント内の時間ステップの最小数。 変化ポイントは、各時系列をセグメントに分割し、各セグメントは少なくともこの数の時間ステップを持つようにします。 平均値、標準偏差、カウントの変化の場合、デフォルトは 1 です (この場合、すべての時間ステップを変化ポイントにできます)。 傾斜 (リニア トレンド) の変化の場合、ラインのフィッティングに少なくとも 2 つの値が必要であるため、デフォルトは 2 です。 値は、時系列の時間ステップ数の半分より小さい必要があります。

Long

arcpy.stpm.ChangePointDetection(in_cube, analysis_variable, output_features, {change_type}, {method}, {num_change_points}, {sensitivity}, {min_seg_len})
名前説明データ タイプ
in_cube

解析対象の変数を含む時空間キューブ。 時空間キューブのファイル拡張子は「*.nc」です。時空間キューブは、時空間パターン マイニング ツールボックスのさまざまなツールを使用して作成されます。

File
analysis_variable

各ロケーションの時系列値を含む時空間キューブの数値変数。

String
output_features

変化ポイント検出の結果を含む出力フィーチャクラス。 レイヤーには、各ロケーションで検出された変化ポイントの数が表示され、時系列値、変化ポイント、および各セグメントの平均または標準偏差の推定を示すポップアップ ライン チャートが含まれます。

Feature Class
change_type
(オプション)

検出される変化のタイプを指定します。 各オプションは、各セグメントで一定と見なされている時系列の統計的特性を指定します。 値は、時系列の変化ポイントごとに新しい定数値に変化します。

  • MEAN平均値のシフトが検出されます。 これがデフォルトです。
  • STANDARD_DEVIATION標準偏差の変化が検出されます。
  • SLOPE傾斜 (リニア トレンド) の変化が検出されます。
  • COUNTカウント データの平均値の変化が検出されます。
String
method
(オプション)

変化ポイントの数を自動的に検出するか、すべてのロケーションで使用する変化ポイントの数を定義するかを指定します。

  • AUTO_DETECT変化ポイントの数が自動的に検出されます。 検出の感度は sensitivity パラメーターで定義されます。 これがデフォルトです。
  • DEFINED_NUMBER変化ポイントの数は、num_change_points パラメーターで定義されます。
String
num_change_points
(オプション)

各ロケーションで検出される変化ポイントの数。 デフォルトは 1 です。

Long
sensitivity
(オプション)

検出の感度を定義する 0 ~ 1 の数値。 値が大きいほど、各ロケーションで検出される変化ポイントの数が多くなります。 デフォルトは 0.5 です。

Double
min_seg_len
(オプション)

各セグメント内の時間ステップの最小数。 変化ポイントは、各時系列をセグメントに分割し、各セグメントは少なくともこの数の時間ステップを持つようにします。 平均値、標準偏差、カウントの変化の場合、デフォルトは 1 です (この場合、すべての時間ステップを変化ポイントにできます)。 傾斜 (リニア トレンド) の変化の場合、ラインのフィッティングに少なくとも 2 つの値が必要であるため、デフォルトは 2 です。 値は、時系列の時間ステップ数の半分より小さい必要があります。

Long

コードのサンプル

ChangePointDetection の例 1 (Python ウィンドウ)

次の Python スクリプトは、ChangePointDetection 関数の使用方法を示しています。

import arcpy
arcpy.env.workspace = "C:/Analysis"

# Automatically detect changes in population counts
arcpy.stpm.ChangePointDetection("Population.nc", "Pop_NONE_ZEROS", 
                            "Analysis.gdb/Population_Change_Points", 
                            "COUNT", "AUTO_DETECT", "", 0.5, 1)
ChangePointDetection の例 2 (スタンドアロン スクリプト)

次の Python スクリプトは、ChangePointDetection 関数の使用方法を示しています。

# Detect changes in air temperature.

# Import system modules.
import arcpy

# Set property to overwrite existing output.
arcpy.env.overwriteOutput = True

# Set workspace.
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace

# Detect the largest mean shift of temperature measurements.
arcpy.stpm.ChangePointDetection("Air_Temp.nc", "MAX_DEGREES_F", 
                            "Analysis.gdb/Temperature_Change_Points", 
                            "MEAN", "DEFINED_NUMBER", 1, "", 3)

# Create a feature class visualizing the change point results in a 3D scene view.
arcpy.stpm.VisualizeSpaceTimeCube3D("Air_Temp.nc", "Pop_NONE_ZEROS", 
                                    "VALUE", "Analysis.gdb/ForecastsFC")

ライセンス情報

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック