空間コロケーション分析
空間コロケーションは、同じ空間レイヤーと、多くの場合異なる空間レイヤーからの異なるクラスの点フィーチャ間の関係を測定および分析します。
典型的な例は、McDonaldやChipotleなどの異なるレストランが共存しているかどうかを判断することです。 McDonaldのレストランが地下鉄の駅やショッピング・センターとコロケーションされているか、人口密度や収入レベルとどのように関係しているかを特定するには、さらなる分析が必要です。 これらは、サイト選択、サイト最適化、およびコストの最小化において企業を支援します。
コロケーション解析は、ローカル・コロケーション量(LCLQ)統計を使用して、点フィーチャの2つのカテゴリ(AとB)間の近接パターンを測定するツールです。 関心カテゴリ(カテゴリA)の機能ごとに、そのLCLQスコアが計算されます。
- LCLQスコアが1より大きいカテゴリAのポイントは、近所のカテゴリBのポイントを持つ可能性が高くなります(ランダムではありません)。
- LCLQスコアが1未満であるカテゴリAのポイントは、近所にカテゴリBのポイントを持つ可能性が(ランダムよりも)低くなります。
- LCLQスコアが1である点は、近傍内のカテゴリの割合が、研究領域全体のカテゴリの割合を表すことを示します。
LCLQスコアは、フィーチャ・ポイントが共存、隔離、または未定義のいずれであるかを示します。 次の表に、考えられるシナリオを示します。
LCLQタイプ | 説明 |
---|---|
コロケート - 重要 | LCLQスコアが1 より大きく、p値が0.05 より小さいか、p値がNone です。
|
コロケート - 重要でない | LCLQスコアが1 より大きく、p値が0.05 以上です。
|
独立 - 重要 | LCLQスコアは、0.05 より小さいp値またはNone のp値を持つ1 以下です。
|
独立 - 重要でない | LCLQスコアは、0.05 以上のp値を持つ1 以下です。
|
未定義 | フィーチャ・ポイントには、ネイバー・カテゴリのネイバーがありませんでした。 |
コロケーション関係は対称ではありません。 カテゴリAとカテゴリBを比較するときに計算されるLCLQスコアは、カテゴリBとカテゴリAを比較するときに計算されるLCLQスコアとは異なります。
次の表に、コロケーション分析の実行に必要なパラメータの一部を示します。
パラメータ | 説明 |
---|---|
feature_data |
ポイント機能を持つデータ。 |
spatial_weights_definition |
近隣のロケーション間の関係を定義します。 隣人から情報を取得する必要があります。 |
interest_category |
対象カテゴリのフィールドと値を示す2つの値。 interest_category およびneighbor_category パラメータが定義されている場合、コロケーション分析は、feature_data で指定されたデータからこれらの値を使用して実行されます。
|
neighbor_category |
隣接するカテゴリのフィールドと値を示す2つの値。 |
neighbor_feature_data |
定義されている場合、interest_category およびneighbor_category パラメータは無視されます。 関心のあるカテゴリはfeature_data のポイント機能ですが、他のカテゴリはこのパラメータで定義されたポイント機能です。
|
n_permutations |
コロケーションの四分位数スコアの重要度レベルの計算に使用される順列の数。 None の場合、重要度レベルは計算されず、None が返されます。 順列数を増やすと、処理時間も長くなります。
|
is_time_window_analysis |
時間ウィンドウ分析が必要かどうかを示すブール・パラメータ。 |
interest_time_window |
対象カテゴリのフィールドstart-time およびend-time を示します。
|
neighbor_time_widow |
隣接するカテゴリのフィールドstart-time およびend-time を示します。
|
コロケーション分析の結果は、Pandas DataFrame
と次の列で構成されます:
列 | 説明 |
---|---|
row_index |
対象となるカテゴリを含むDataFrame 内の監視の索引。
|
lclq |
LCLQスコア。 |
t_stat |
LCLQスコアに関連付けられたt統計。 |
p_value |
LCLQスコアに関連付けられたp値で、LCLQスコアの重要度レベルを示します。 |
lclq_type |
コロケーション・タイプ(前の表を参照)。 |
詳細は、「Oracle Spatial AI Python APIリファレンス」のspatial_colocation_analysis関数を参照してください。
次の例では、schools
SpatialDataFrame
を使用して、データをSpatialDataFrame
の2つのインスタンスに分割 - X
およびY
。2つの異なるクラスを表し、2つのクラス間のコロケーション分析を実行します。 コロケーション分析では隣接するロケーションを使用してLCLQスコアを計算するため、空間重みを定義する必要があります。
from oraclesai.weights import KernelBasedWeightsDefinition
from oraclesai.preprocessing import spatial_train_test_split
from oraclesai.analysis import spatial_colocation_analysis
# Split the data to create two different classes.
X, Y, _, _, _, _ = spatial_train_test_split(schools, y="", test_size=0.3, random_state=32)
# Define spatial weights
spatial_weights_definition = KernelBasedWeightsDefinition(k=25, fixed=False, function="gaussian")
# Execute colocation analysis between the two classes
colocation_analysis = spatial_colocation_analysis(X, spatial_weights_definition, neighbor_feature_data=Y, n_permutations=20)
# Print the result
print(colocation_analysis[:10])
前述のコードは、LCLQスコアおよび重要度レベルを含む、Xの最初の10個の観測のコロケーション分析の結果を出力します。
row_index lclq t_stat p_value lclq_type
0 2 1.054835 NaN NaN COLOCATED_SIGNIFICANT
1 3 0.948375 4.358899 0.000338 ISOLATED_SIGNIFICANT
2 4 0.944819 4.358899 0.000338 ISOLATED_SIGNIFICANT
3 6 1.113996 4.358899 0.000338 COLOCATED_SIGNIFICANT
4 7 1.013247 NaN NaN COLOCATED_SIGNIFICANT
5 9 0.999595 -4.358899 0.000338 ISOLATED_SIGNIFICANT
6 10 1.078993 -4.358899 0.000338 COLOCATED_SIGNIFICANT
7 11 1.012721 NaN NaN COLOCATED_SIGNIFICANT
8 14 0.978001 4.358899 0.000338 ISOLATED_SIGNIFICANT
9 20 0.961042 -4.358899 0.000338 ISOLATED_SIGNIFICANT