mcpField
C
carto-gwr

carto-gwr

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

carto-gwr について

carto-gwr は、地理的加重回帰を使う CARTO Workflows の構築を支援するスキルです。データ準備やモデル設定から、場所ごとの係数の保存までを案内します。

主な機能

  1. 01ソースデータから GWR ワークフローを構築
  2. 02空間セル単位でデータを索引化・集計
  3. 03カーネルと近傍範囲を設定
  4. 04局所係数と適合指標を算出
  5. 05地図表示向けに結果を保存

活用シーン

  1. 01地域ごとの予測変数の影響を比較
  2. 02局所回帰係数を地図に表示
  3. 03モデルの残差と局所適合度を確認

MCP 対応

MCP サーバー接続時に create_workflow、validate_workflow、run_workflow などの CARTO ワークフローツールを使う手順を案内します。直接 GWR を実行する MCP ツールは提供しません。

インストール

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

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

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

詳細

地理的加重回帰(GWR)

GWR を使用して、従属変数と 1 つ以上の独立変数の間で空間的に変化する関係をモデル化する CARTO ワークフローを構築します。調査エリア全体で係数が 1 セットとなるグローバル回帰とは異なり、GWR では空間単位ごとに局所係数が算出され、空間によって関係性がどのように変化するかがわかります。例:「寝室数が価格に与える影響は、ダウンタウンでは 5 万ドルですが、郊外では 2 万ドルにすぎません。」

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


手順

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

Source Data -> (Filter) -> Spatial Indexing (H3/Quadbin) -> Aggregation (dependent + independent vars per cell) -> GWR -> Save
ステップ 1:ソースデータの読み込み

native.gettablebyname を使用します。入力テーブルには、数値の従属変数が少なくとも 1 つと、数値の独立変数(予測変数)が 1 つ以上含まれている必要があります。

成功条件:ノードから、必要な数値列を含むテーブルが出力されます。

ステップ 2:フィルター処理(必要な場合)

native.wheresimplified または native.where を使用して、データセットを絞り込みます(例:キー列の NULL 値の削除、カテゴリや日付範囲によるフィルター処理)。

成功条件:出力には、従属変数とすべての独立変数について、有効な非 NULL 値を持つ行のみが含まれます。

ステップ 3:空間インデックスの付与

データにすでにインデックスが付与されていない場合は、ポイントジオメトリを空間インデックスセルに変換します。

  • H3 には native.h3frompoint
  • Quadbin には native.quadbinfromgeopoint

データに H3 または Quadbin 列がすでに含まれている場合(事前集計済みのデータセットでは一般的です)は、このステップを省略してください。

解像度の目安:

解像度セルサイズ用途
H3 res 7辺の長さ:約 5 km都市レベルの関係性
H3 res 8辺の長さ:約 2 km近隣レベル
H3 res 9辺の長さ:約 500m街路レベル(密度の高いデータが必要)

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

ステップ 4:セルごとの集計

native.groupby を使用して、セルごとに 1 行となるように、従属変数とすべての独立変数を集計します。

  • グループ化:空間インデックス列(h3)
  • 集計:price,avg,bedrooms,avg,bathrooms,avg(実際の列に合わせて変更してください)

従属変数は、用途に応じて avg または sum で集計します。独立変数は通常、平均をとります。

成功条件:出力には一意のセルごとに 1 行のみが含まれ、目的変数とすべての予測変数の数値列が含まれます。

ステップ 5:GWR の実行

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

入力説明デフォルト
index_columnH3/Quadbin インデックスを含む列h3
label_columnモデル化する目的変数/従属変数(数値である必要があります)-
features_columns予測変数/独立変数の列(文字列の配列)-
kernel_function近傍の重み付け関数gaussian
kring_distanceK-ring サイズ(ホップ数で表す近傍半径)3
fit_intercept切片項を当てはめるかどうかtrue

カーネルのオプション:gaussian(推奨 — 距離に応じて滑らかに減衰)、uniform、triangular、quadratic、quartic。

K-ring サイズ:近傍の半径を制御します。

  • 小さすぎる場合(1~2):係数にノイズが生じ、不安定になります。
  • 大きすぎる場合(5 以上):過度に平滑化され、グローバル回帰に近づきます。
  • バランスの取れたデフォルトとして、まず 3 を使用してください。

成功条件:出力にはセルごとの列として、index、intercept、各独立変数の係数列、r_squared、residual が含まれます(Gotchas のプロバイダーによる大文字・小文字表記の注記を参照してください。Snowflake ではこれらが大文字で表示されます)。

ステップ 6:保存

native.saveastable を使用して結果を保存します。空間インデックス列は CARTO Builder で直接可視化できます。係数列で地図をスタイル設定して、空間的な変動を示す係数マップを作成します。

成功:create_workflow(MCP)または carto workflows create(CLI)でアップロードできる、有効なワークフローです。


出力列

列意味
index空間インデックスのセル ID(H3 または Quadbin)
interceptローカル切片項
<variable_name>各独立変数のローカル係数
r_squaredローカルモデルの適合度(0~1)。値が高いほど、ローカルでの説明力が高いことを示します
residual観測値と予測値の差

注意点

  • プロバイダーごとの大文字・小文字の違いと SQL 方言。 このスキルでは、列名を小文字で記載しています(BigQuery/Databricks/Postgres/Redshift の規則)。Snowflake では、引用符で囲まれていない識別子は大文字で表示されるため、式では H3、INDEX、PRICE、R_SQUARED、INTERCEPT などを参照してください。大文字・小文字の規則と SQL 方言の相違点については、carto-create-workflow/references/providers/<provider>.md を参照してください。
  • GWR コンポーネントには Analytics Toolbox が必要です。オフライン検証(MCP 経由の validate_workflow、または carto workflows validate)では AT の場所を解決できません。実行前に、CLI 専用の carto workflows verify-remote --connection <conn> で確認してください。
  • 従属変数は連続値の数値である必要があります。カテゴリ型の目的変数には、分類など別の方法が必要です。
  • いずれかの変数(従属変数または独立変数)に NULL 値があるセルは、モデルから除外されます。GWR の実行前に NULL を事前にフィルタリングするか、補完してください。
  • 独立変数間の多重共線性は、結果の品質を低下させます。2 つの予測変数(例:bedrooms と total_rooms)の相関が非常に高い場合は、片方を削除するか、統合してください。似た変数を複数含める前に、相関を確認してください。
  • セルごとの r_squared は、ローカルモデルの適合度を示します。多くのセルで値が非常に低い場合は、重要な予測変数がモデルに含まれていない可能性があります。
  • features_columns 入力は列名の配列(例:["bedrooms", "bathrooms"])であり、カンマ区切りの文字列ではありません。
  • 出力列の名前は元の空間インデックス列名ではなく、index です。元データに結合し直す場合は、native.renamecolumn で名前を変更してください。
  • 高解像度ではデータが疎になるため、信頼性の低い係数が得られる可能性があります。高い解像度を選ぶ前に、すべての変数のデータが十分なセルにあることを確認してください。

参考テンプレート

リソース説明
BQ チュートリアル:Airbnb リスティング価格(GWR)BigQuery のステップごとの解説:ベルリンの Airbnb 価格とベッドルーム数・バスルーム数の分析、H3 解像度 7、kring 3、Gaussian カーネル
SF チュートリアル:Airbnb リスティング価格(GWR)Snowflake のステップごとの解説:同じ分析を Snowflake 向けに調整

ワークフローテンプレート(CARTO Workspace で利用可能):「データ内のローカルな空間的関係をモデル化するための地理的加重回帰(GWR)の適用」

使用例:ロサンゼルスの Airbnb 評価を分析します。Data Observatory の社会人口統計データで拡張したうえで、overall_rating と value_review、cleanliness、location の関係をモデル化します。H3 解像度 7、kring 3、Gaussian カーネルを使用します。


よくあるバリエーション

バリエーション方法
事前集計データ(すでにセルごとに1行)ステップ3〜4を省略し、直接GWRに進みます
Data ObservatoryでエンリッチメントGWRの前にnative.enrichgridを追加し、社会人口統計学的な予測変数を含めます
係数の比較結果を保存し、Builderを使って係数列ごとに個別に地図をスタイル設定します
モデル適合度によるフィルタリングGWRの後にnative.whereを追加し、r_squared > 0.5(または別のしきい値)を満たすセルのみを残します
ホットスポット分析との組み合わせまずGWRを実行し、次に残差をGetis-Ordの入力として使い、過大予測または過小予測のクラスターを特定します

コメント