時系列の相互相関 (Time Series Cross Correlation) (時空間パターン マイニング)

サマリー

時空間キューブに格納された 2 つの時系列間のさまざまなタイム ラグにおける相互相関を計算します。

相互相関を計算するには、それぞれの時系列の対応する値をペアリングして、Pearson の相関係数を計算します。 その結果、2 番目の時系列が 1 時間ステップだけシフトされて、新しい相関が計算されます。 このシフトは、指定した最大時間ステップ数まで繰り返されます。 最も強い相関があるタイム ラグ (シフト) は、一方の時系列の変化ともう一方の時系列の応答の間に生じる遅延 (広告支出と営業収益間の遅延など) の推定を示します。 時系列からトレンドをフィルターおよび削除することで、変数間に統計的に有意な依存関係があるか検定できます。 また、空間近傍を計算に含めて、2 つの時系列間に空間的な関係を組み込むこともできます。

時系列の相互相関ツールの詳細

時系列の相互相関ツールの図
2 つの時系列間の相互相関は、時空間キューブのすべての位置で、さまざまなタイム ラグにおいて計算されます。

使用法

  • タイム ラグ値の符号 (正または負) は、一次分析変数を基準とした二次分析変数のシフトとして解釈されます。 たとえば、タイム ラグ値 5 は、二次変数が順方向 (時間軸の右側) に 5 時間ステップ シフトされてから、相互相関が計算されることを意味します。 最も強い相関があるタイム ラグが正の場合、これは、二次分析変数の値の変化が、一次分析変数の変化より前に生じていることを意味します。 同様に、タイム ラグ値 -3 は、2 番目の時系列が逆方向 (時間軸の左側) に 3 時間ステップ シフトされることを意味します。 最も強い相関があるタイム ラグが負の場合、これは、一次分析変数の変化が、二次分析変数の変化より前に生じていることを意味します。

    タイム ラグの詳細

  • ツールの主な出力は、位置ごとのすべてのタイム ラグにおける相互相関結果を含むフィーチャクラスです。 マップでは、出力フィーチャの異なるフィールドからの 6 つのレイヤーを含むグループ レイヤーが追加されます。これらのレイヤーは、最も強い相関 (最も強い正、最も強い負、最も強い絶対値) の 3 つのレイヤーと最も強い各相関での関連するタイム ラグの 3 つのレイヤーです。 これらのレイヤーを使用して、どの位置に最も強い相関が存在したかや、どのタイム ラグで相関が発生したかをすばやく識別できます。

    必要に応じて、出力フィーチャ上にポップアップ チャートを作成し、それぞれの位置でのすべてのラグにおける相関を集約して視覚化できます。 さらに、タイム ラグごとに位置間の個々の相関をすべて含む出力テーブルを作成することもできます。

    ツール出力の詳細

  • それぞれの位置の近傍を使用して相互相関を計算するには、[計算に含める空間近傍] パラメーターを使用します。 これは、近傍の位置の時系列が、遠く離れた位置の時系列よりも類似性が高いトレンドがある場合に適しています。 近傍が使用される場合、位置の相互相関は、フォーカル位置の一次変数とその位置の各近傍 (その位置自体を含む) の二次変数の間にある相関の加重平均になります。 たとえば、位置に 5 つの近傍が存在する場合、その位置の相互相関は 6 つの相関 (フォーカル位置の一次変数とフォーカル位置の二次変数間の相関、フォーカル位置の一次変数と 1 つ目の近傍の二次変数間の相関、フォーカル位置の一次変数と 2 つ目の近傍の二次変数間の相関など) の加重平均になります。 [空間近傍加重方法] パラメーターは、加重平均に使用される重みを指定します。

  • ラグごとに相互相関の統計的有意性を検定するには、[トレンドのフィルターと削除] パラメーターをオンにする必要があります。 オンの場合は、すべての位置のすべてのラグにおける p 値と 95 パーセントの信頼区間が計算されます。 さらに、有意性検定は、(複数の相関の加重平均ではなく) 2 つの時系列間のペアワイズ相関に対してのみ実行できるため、空間近傍を計算に含める場合は、出力ペアワイズ相関テーブルにのみ、p 値と信頼区間が含まれます。 近傍が含まれない場合は、出力フィーチャと出力ラグ相関テーブルに p 値および信頼区間フィールドが含まれます。

    注意:

    統計的有意性検定は各位置のタイム ラグごとに独立して実行され、複数の仮説検定に相関はありません。 特定の p 値または信頼区間の有意性を解釈する際には十分に注意してください。

    トレンドの削除と自己相関のフィルターの詳細

  • 一次分析変数と二次分析変数の両方に同じ分析変数を入力できます (これは自己相関分析と呼ばれます)。 ただし、タイム ラグ値が 0 である (シフトされない) 場合、時系列は常にそれ自体と完全に相関しているため、結果の解釈が困難なことがあります。 出力フィーチャおよび相関テーブルにはすべてのタイム ラグの相関結果が含まれるので、タイム ラグ 0 の結果をフィルターするか、選択解除できます。

パラメーター

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

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

File
一次分析変数

一次変数の時系列の値を含む、時空間キューブの数値変数。

String
二次分析変数

二次分析変数を含む、時空間キューブの数値変数。 タイム ラグを使用すると、二次分析変数が、一次分析変数を基準としてシフトされます。

String
出力フィーチャ

すべての位置のすべてのタイム ラグにおける相互相関を含む出力フィーチャ。 出力には、最も強い相関 (正、負、絶対) のフィールドとすべてのタイム ラグの相関のフィールドも含まれます。 トレンドをフィルターして削除し、かつ近傍を使用しない場合は、すべての相互相関の p 値と 95 パーセントの信頼区間のフィールドが出力に含まれます。

Feature Class
時系列ポップアップの有効化
(オプション)

各出力フィーチャのポップアップで、相互相関結果を示す時系列チャートを作成するかどうかを指定します。 時系列ポップアップは、シェープファイル出力ではサポートされていません。

  • オン - 出力フィーチャクラスの時系列チャートが作成されます。
  • オフ - 時系列チャートは作成されません。 これがデフォルトです。
Boolean
最大タイム ラグ
(オプション)

二次分析変数のシフトに使用される最大タイム ラグ数。 最大数に達するまでタイム ラグ値ごとに相互相関が計算されます。 タイム ラグが負の場合も正の値を指定します。たとえば、このパラメーターに 10 を指定し、タイム ラグ方向での二次変数のシフトが両方向の場合、-10 から 10 までのすべてのタイム ラグにおける相互相関が計算されます。 値が指定されないと、時系列の長さに基づいて値が求められます。 タイム ラグのない時系列間の生の相関のみを計算するには、値 0 を指定します。

Long
二次変数のラグ方向
(オプション)

タイム ラグの方向を指定します。 二次変数は時間の順方向 (一時変数を基準とする)、時間の逆方法、または両方向にシフトできます。

  • 二次変数を両方向にシフト二次分析変数は両方向にシフトされます。 たとえば、最大タイム ラグが 5 の場合、-5 から 5 までのすべてのタイム ラグにおける相関が計算されます。 これがデフォルトです。
  • 二次変数を時間の順方向にシフト二次分析変数は時間の順方向 (時間軸の右側) にシフトされます。 たとえば、最大タイム ラグが 5 の場合、0 から 5 までのすべてのタイム ラグにおける相関が計算されます。 このオプションは、二次分析変数の変化が、一次分析変数の変化より前に生じている場合に適しています。
  • 二次変数を時間の逆方向にシフト二次分析変数は時間の逆方向 (時間軸の左側) にシフトされます。 たとえば、最大タイム ラグが 5 の場合、-5 から 0 までのすべてのタイム ラグにおける相関が計算されます。 このオプションは、一次分析変数の変化が、二次分析変数の変化より前に生じている場合に適しています。
String
計算に含める空間近傍
(オプション)

計算に使用される各位置の近傍を指定します。 近傍が使用される場合、位置の相互相関は、フォーカル位置の一次変数とその位置の各近傍 (その位置自体を含む) の二次変数の間にある相関の加重平均になります。

  • 近傍なし空間近傍は計算に含められません。
  • 距離バンド各位置から指定の距離内にある位置が近傍として計算に含められます。
  • K 近傍指定の数の最近接位置が近傍として計算に含められます。
  • 隣接エッジのみエッジを共有するポリゴンが近傍として含められます (ルーク型隣接)。
  • 隣接エッジ コーナーエッジまたは角を共有するポリゴンが近傍として含められます (クイーン型隣接)。
String
空間近傍数
(オプション)

近傍として計算に含められる最近接位置の数。

Long
距離バンド
(オプション)

この距離内のすべての位置が近傍として含められます。 値を指定しない場合、値は処理中に見積もられ、ジオプロセシング メッセージとして含められます。 指定した距離内に 1,000 以上の近傍が含まれる場合、最も近い 1,000 個の位置のみが近傍として含められます。 ポリゴンの場合、重心間の距離を使用して近傍が求められます。

Linear Unit
空間近傍加重方法
(オプション)

相関の計算時に空間近傍に適用される加重スキーマを指定します。 重みは、フォーカル フィーチャとそれぞれの近傍の間にある相関の加重平均を計算するときに使用されます。

  • 同じ重み各近傍が均等に重み付けされます (非加重)。 これがデフォルトです。
  • Bisquare カーネル近傍は、Bisquare カーネルを使用して加重されます。
  • Gaussian カーネル近傍は、Gaussian カーネルを使用して加重されます。
String
トレンドのフィルターと削除
(オプション)

トレンド、季節性、および自己相関を一次分析変数から削除して、二次分析変数のフィルターに使用するかどうかを指定します。

  • オン - トレンド、季節性、および自己相関が削除されます。
  • オフ - 時系列の値は変更されません。 これがデフォルトです。
Boolean
出力ラグ相関テーブル
(オプション)

位置ごとのすべてのタイム ラグの相関を含むテーブル。

Table
出力ペアワイズ相関テーブル
(オプション)

すべてのタイム ラグにおける各位置と各近傍間のペアワイズ相関を含むテーブル。

Table

派生した出力

ラベル説明データ タイプ
出力レイヤー グループ

出力レイヤーのグループ レイヤー。

Group Layer

arcpy.stpm.TimeSeriesCrossCorrelation(in_cube, analysis_variable_1, analysis_variable_2, output_features, {enable_pop_ups}, {max_lag}, {lag_direction}, {neighborhood_type}, {num_nbrs}, {distance_band}, {spatial_weights}, {filter_option}, {out_corr_table}, {out_pair_table})
名前説明データ タイプ
in_cube

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

File
analysis_variable_1

一次変数の時系列の値を含む、時空間キューブの数値変数。

String
analysis_variable_2

二次分析変数を含む、時空間キューブの数値変数。 タイム ラグを使用すると、二次分析変数が、一次分析変数を基準としてシフトされます。

String
output_features

すべての位置のすべてのタイム ラグにおける相互相関を含む出力フィーチャ。 出力には、最も強い相関 (正、負、絶対) のフィールドとすべてのタイム ラグの相関のフィールドも含まれます。 トレンドをフィルターして削除し、かつ近傍を使用しない場合は、すべての相互相関の p 値と 95 パーセントの信頼区間のフィールドが出力に含まれます。

Feature Class
enable_pop_ups
(オプション)

各出力フィーチャのポップアップで、相互相関結果を示す時系列チャートを作成するかどうかを指定します。 時系列ポップアップは、シェープファイル出力ではサポートされていません。

  • CREATE_POPUP出力フィーチャクラスの時系列チャートが作成されます。
  • NO_POPUP時系列チャートは作成されません。 これがデフォルトです。
Boolean
max_lag
(オプション)

二次分析変数のシフトに使用される最大タイム ラグ数。 最大数に達するまでタイム ラグ値ごとに相互相関が計算されます。 タイム ラグが負の場合も正の値を指定します。たとえば、このパラメーターに 10 を指定し、タイム ラグ方向での二次変数のシフトが両方向の場合、-10 から 10 までのすべてのタイム ラグにおける相互相関が計算されます。 値が指定されないと、時系列の長さに基づいて値が求められます。 タイム ラグのない時系列間の生の相関のみを計算するには、値 0 を指定します。

Long
lag_direction
(オプション)

タイム ラグの方向を指定します。 二次変数は時間の順方向 (一時変数を基準とする)、時間の逆方法、または両方向にシフトできます。

  • BOTH二次分析変数は両方向にシフトされます。 たとえば、最大タイム ラグが 5 の場合、-5 から 5 までのすべてのタイム ラグにおける相関が計算されます。 これがデフォルトです。
  • FORWARD二次分析変数は時間の順方向 (時間軸の右側) にシフトされます。 たとえば、最大タイム ラグが 5 の場合、0 から 5 までのすべてのタイム ラグにおける相関が計算されます。 このオプションは、二次分析変数の変化が、一次分析変数の変化より前に生じている場合に適しています。
  • BACKWARD二次分析変数は時間の逆方向 (時間軸の左側) にシフトされます。 たとえば、最大タイム ラグが 5 の場合、-5 から 0 までのすべてのタイム ラグにおける相関が計算されます。 このオプションは、一次分析変数の変化が、二次分析変数の変化より前に生じている場合に適しています。
String
neighborhood_type
(オプション)

計算に使用される各位置の近傍を指定します。 近傍が使用される場合、位置の相互相関は、フォーカル位置の一次変数とその位置の各近傍 (その位置自体を含む) の二次変数の間にある相関の加重平均になります。

  • NO_NBRS空間近傍は計算に含められません。
  • FIXED_DISTANCE各位置から指定の距離内にある位置が近傍として計算に含められます。
  • K_NEAREST_NEIGHBORS指定の数の最近接位置が近傍として計算に含められます。
  • CONTIGUITY_EDGES_ONLYエッジを共有するポリゴンが近傍として含められます (ルーク型隣接)。
  • CONTIGUITY_EDGES_CORNERSエッジまたは角を共有するポリゴンが近傍として含められます (クイーン型隣接)。
String
num_nbrs
(オプション)

近傍として計算に含められる最近接位置の数。

Long
distance_band
(オプション)

この距離内のすべての位置が近傍として含められます。 値を指定しない場合、値は処理中に見積もられ、ジオプロセシング メッセージとして含められます。 指定した距離内に 1,000 以上の近傍が含まれる場合、最も近い 1,000 個の位置のみが近傍として含められます。 ポリゴンの場合、重心間の距離を使用して近傍が求められます。

Linear Unit
spatial_weights
(オプション)

相関の計算時に空間近傍に適用される加重スキーマを指定します。 重みは、フォーカル フィーチャとそれぞれの近傍の間にある相関の加重平均を計算するときに使用されます。

  • EQUAL各近傍が均等に重み付けされます (非加重)。 これがデフォルトです。
  • BISQUARE近傍は、Bisquare カーネルを使用して加重されます。
  • GAUSSIAN近傍は、Gaussian カーネルを使用して加重されます。
String
filter_option
(オプション)

トレンド、季節性、および自己相関を一次分析変数から削除して、二次分析変数のフィルターに使用するかどうかを指定します。

  • FILTERトレンド、季節性、および自己相関が削除されます。
  • NO_FILTER時系列の値は変更されません。 これがデフォルトです。
Boolean
out_corr_table
(オプション)

位置ごとのすべてのタイム ラグの相関を含むテーブル。

Table
out_pair_table
(オプション)

すべてのタイム ラグにおける各位置と各近傍間のペアワイズ相関を含むテーブル。

Table

派生した出力

名前説明データ タイプ
output_layer_group

出力レイヤーのグループ レイヤー。

Group Layer

コードのサンプル

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

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

import arcpy
arcpy.stpm.TimeSeriesCrossCorrelation(
    in_cube=r"c:\data\Sales.nc",
    analysis_variable_1="MARKETING",
    analysis_variable_2="REVENUE",
    output_features=r"CrossCorrResults",
    enable_pop_ups="NO_POPUP",
    max_lag=10,
    lag_direction="BOTH",
    neighborhood_type="K_NEAREST_NEIGHBORS",
    num_nbrs=8,
    distance_band=None,
    spatial_weights="EQUAL",
    filter_option="FILTER",
    out_corr_table=r"LagCorrTable",
    out_pair_table=r"PairCorrTable"
)
TimeSeriesCrossCorrelation の例 2 (スタンドアロン スクリプト)

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

# Estimate the time lag between infection and 
# hospitalization for seasonal influenza.

# Import required modules.
import arcpy

# Set the workspace.
arcpy.env.workspace = "c:/data/data.gdb"

# Run Time Series Cross Correlation
# Use neighbors and calculate p-values
try:
    arcpy.stats.CausalInferenceAnalysis(
        in_cube=r"c:\data\FluData.nc",
        analysis_variable_1="FLU_CASES",
        analysis_variable_2="HOSPITALIZATIONS",
        output_features=r"CrossCorrResults",
        enable_pop_ups="POPUP",
        max_lag=10,
        lag_direction="BOTH",
        neighborhood_type="K_NEAREST_NEIGHBORS",
        num_nbrs=8,
        distance_band=None,
        spatial_weights="BISQUARE",
        filter_option="FILTER",
        out_corr_table=r"LagCorrTable",
        out_pair_table=r"PairCorrTable"
    )
except arcpy.ExecuteError:
    # If an error occurred when running the tool, print the error message.
    print(arcpy.GetMessages())

ライセンス情報

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

関連トピック