mcpField
C
carto-spatial-autocorrelation

carto-spatial-autocorrelation

github.com/cartodbデータ・データベース653 回インストール1 週間前に更新
リポジトリ

carto-spatial-autocorrelation について

carto-spatial-autocorrelation は、CARTO ワークフローで Moran's I を計算し、空間的な集積・分散・ランダム性を調べ、地点を分類する方法を案内します。近傍範囲や距離減衰を設定でき、空間データ分析に利用できます。

主な機能

  1. 01局所 Moran's I と有意性の計算
  2. 02HH・HL・LH・LL による地点分類
  3. 03H3 または Quadbin 空間インデックスの利用
  4. 04近傍サイズと距離減衰の設定
  5. 05有意な領域の抽出と結果保存

活用シーン

  1. 01類似値の空間クラスターの特定
  2. 02高低値の空間的外れ値の発見
  3. 03ポイント・オブ・インタレスト分布の分析
  4. 04近傍設定ごとの結果比較

MCP 対応

このスキルは CARTO ワークフローの構築方法を案内します。MCP サーバー接続時は `create_workflow`、`validate_workflow`、`run_workflow` などのツールを利用でき、CLI も選択できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cartodb/agent-skills --skill carto-spatial-autocorrelation

インストール後、Claude Code で/carto-spatial-autocorrelationを入力して読み込まれたか確認します。

詳細

Moran の I による空間的自己相関

Moran の I を使用して空間的自己相関を測定し、変数がクラスター化、分散、またはランダムのいずれを示すかを判定するとともに、各位置を HH/HL/LH/LL の象限に分類する CARTO Workflows を構築します。

前提条件:開発プロセス、JSON 構造、検証コマンドについては carto-create-workflow を読み込んでください。このドキュメントでは、両方のアクセス方法(接続時は MCP サーバーの create_workflow、validate_workflow、run_workflow などのワークフローツール、そうでない場合は carto workflows CLI、および carto-basics/references/access-paths.md のルーティングシグナル)を扱います。

Moran の I と Getis-Ord Gi の使い分け*:

  • Moran の I:「クラスター化が見られるか」を判定し、クラスターの種類(HH、HL、LH、LL)に分類するとともに、空間的外れ値(HL、LH)を特定します。
  • Getis-Ord Gi*:「ホットスポット/コールドスポットはどこか」を特定し、クラスター化の大きさ(z スコア)を測定します。

手順

Moran の I ワークフローは、次のパイプラインに従います。

Source Data -> (Filter) -> Spatial Indexing (H3) -> Aggregation -> Moran's I -> (Filter Significant) -> Save
ステップ 1:ソースデータを読み込む

native.gettablebyname を使用します。入力テーブルには通常、ポイントジオメトリまたは事前にインデックス化されたグリッドデータが含まれます。

成功条件:ノードが、ジオメトリ列(例:geom)または既存の空間インデックス列を含むテーブルを出力します。

ステップ 2:フィルタリングする(必要な場合)

native.wheresimplified または native.where を使用して、データセットを絞り込みます(例:カテゴリ、日付範囲、null 以外の値でフィルタリングします)。

成功条件:出力には、分析に関連するサブセットのみが含まれます。

ステップ 3:空間インデックスを作成する

native.h3frompoint を使用して、ポイントジオメトリを H3 セルに変換します。

解像度の目安 -- 解像度が高いほどセルが小さくなり、より局所的なパターンを捉えられます。

解像度セルサイズ用途
H3 res 7辺の長さ:約5 km地区/都市レベルのパターン
H3 res 8辺の長さ:約2 km近隣レベル
H3 res 9辺の長さ:約500m街路レベル(Berlin POI チュートリアルで使用)

成功条件:すべての行に空間インデックス列(例:h3)があります。

ステップ 4:セルごとに集計する

native.groupby を使用して、セルごとに1行となる数値を含む結果を作成します。

  • グループ化の対象:空間インデックス列(h3)
  • 集計:geoid,count(または value_col,sum/value_col,avg)

成功条件:出力には、数値列(例:geoid_count)を含む、一意なセルごとにちょうど1行が含まれます。

ステップ 5:Moran の I を実行する

native.moransi を次の設定で使用します。

入力説明デフォルト
indexcolH3/Quadbin インデックスを含む列h3
valuecol自己相関を検定する数値列geoid_count
sizeK リング近傍の半径(ホップ数)3
decay空間ウェイトの距離減衰関数uniform

減衰オプション:uniform、inverse、inverse_square、exponential。

  • uniform:K リング内のすべての近傍に等しいウェイトを設定します。
  • exponential:距離に応じてウェイトが指数関数的に減少します(Berlin POI チュートリアルで使用)。

K リングのサイズ:大きくすると近傍範囲が広がり、全体的なパターンが滑らかになります。小さくすると、より局所的な評価になります。近傍サイズの選択は結果に大きく影響します。

成功条件:出力には、すべてのセルについて index、morans_i、p_value、quadrant 列が含まれます。(Snowflake ではこれらが大文字で表示されることについては、「注意点」の Provider の大文字小文字に関する注記を参照してください。)

ステップ 6:有意な結果をフィルタリングする(推奨)

native.where を使用して、統計的に有意なセルのみを残します。象限分類は、有意なセルに対してのみ意味があります。

よく使われるフィルター:

  • p_value < 0.05 -- 有意なセルすべて(信頼度95%)
  • p_value < 0.05 AND quadrant = 'HH' -- 高値クラスターのみ
  • p_value < 0.05 AND (quadrant = 'HL' OR quadrant = 'LH') -- 空間的外れ値のみ

成功条件:統計的に意味のある空間パターンを持つセルのみが残ります。

ステップ 7:保存する

native.saveastable を使用して結果を保存します。H3/Quadbin 列は、ジオメトリに変換しなくても CARTO Builder で直接可視化できます。

成功条件:検証済みのワークフローは、create_workflow(MCP)または carto workflows create(CLI)を使用してアップロードできます。


出力列

列意味
index空間インデックスのセル ID(H3 または Quadbin)
morans_iローカル Moran's I 値 — 正の値は近傍が類似していること、負の値は近傍が異なることを示します
p_value統計的有意性 — 値が小さいほど信頼度が高くなります
quadrantクラスター分類:HH、HL、LH、または LL
結果の解釈

グローバル Moran's I(全体的なパターン):

  • > 0 = 空間的クラスター化(類似した値が近接しています)
  • < 0 = 空間的分散(異なる値が近接しています)
  • 0 付近 = 空間的ランダム性

ローカル象限(セルごとの分類):

象限意味解釈
HH高い値が高い値に囲まれていますクラスターの中心
LL低い値が低い値に囲まれています低値クラスター
HL高い値が低い値に囲まれています空間的外れ値(高い異常値)
LH低い値が高い値に囲まれています空間的外れ値(低い異常値)

注意点

  • プロバイダーの大文字・小文字表記と SQL 方言。 このスキルでは列名を小文字で記載しています(BigQuery / Databricks / Postgres / Redshift の規約)。Snowflake では、引用符で囲まれていない識別子は大文字で表示されます。式では H3、INDEX、MORANS_I、P_VALUE、QUADRANT、GEOID_COUNT を参照してください。大文字・小文字表記のルールと SQL 方言の同等表現については、carto-create-workflow/references/providers/<provider>.md を参照してください。
  • Moran's I コンポーネントには Analytics Toolbox が必要です。オフライン検証では AT の場所を解決できないため、実行前にリモートで検証してください。MCP 経由で validate_workflow method: verify を実行するか、CLI で carto workflows verify-remote --connection <conn> を実行します。
  • 出力列の名前は h3 や quadbin ではなく index です。元のデータと結合する必要がある場合は、名前を変更してください(例:native.renamecolumn を使用)。
  • valuecol は数値である必要があります。フィーチャーをカウントする場合、グループ化のステップでカウント列を生成する必要があります。未加工のインデックス列を値として渡さないでください。
  • 解像度が高すぎる状態で対象領域が広いと、セル数が非常に多くなり、処理が遅くなったり、メモリ制限に達したりする可能性があります。まず適度な解像度から始め、調整してください。
  • Moran's I は近傍の定義に敏感です。k リングのサイズと減衰関数の選択は、どちらも結果に大きく影響します。選択内容を記録し、代替案のテストも検討してください。
  • 象限分類が意味を持つのは、統計的に有意なセルのみです。象限を解釈する前に、必ず p_value でフィルタリングしてください。有意でないセルには、偶然どの象限ラベルも表示される可能性があります。
  • 減衰の入力パラメーター名は kernel ではなく decay です。不明な場合は、コンポーネントのスキーマを確認してください。

参照テンプレート

リソース説明
BQ チュートリアルベルリンの POI 位置の空間的自己相関を計算する方法(BigQuery)
SF チュートリアルSnowflake 向けの同じチュートリアル
ワークフローテンプレート「ポイント・オブ・インタレスト位置の空間的自己相関の計算」(CARTO Workspace で利用可能)

よくあるバリエーション

バリエーション方法
インデックス付け済みデータデータに H3 / Quadbin 列がすでにある場合は、ステップ 3 を省略します
ポイントの代わりにポリゴンを入力native.h3frompoint の代わりに native.h3polyfill を使用します
完全なグリッド(隙間なし)まず対象領域の境界をポリフィルし、その後データで拡充します(ホットスポット分析と同じ方法)
Getis-Ord と組み合わせる同じ集計済みグリッドに両方の分析を実行し、結果を結合してより詳しく分析します
外れ値のみをフィルタリングHL と LH の象限を残し、異常な位置を見つけます

コメント