spatial-statistics について
spatial-statisticsは、空間的な集積、局所ホットスポット、点パターン、空間関係を検定する分析スキルです。妥当な推論を求める分析者向けに、重みの選択、感度確認、残差診断を案内します。
主な機能
- 01空間重みの選択と感度確認
- 02Global Moran's Iと局所LISA
- 03Getis-Ord Gi*ホットスポット分析
- 04点パターンとKDEの指針
- 05空間回帰の選択手順
- 06多重検定と残差診断
活用シーン
- 01地図上の値の集積傾向の検定
- 02局所クラスターとホットスポットの特定
- 03点パターンの誘引・反発の分析
- 04回帰における空間依存の診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ muend/ geoai-skills --skill spatial-statisticsインストール後、Claude Code で/spatial-statisticsを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlreferences/authoritative-sources.md
詳細
空間統計
目的: 「クラスター化しているか、どこで、なぜか」に対して、防御可能な推論で答えること。 核心となる原則: 空間データは独立性の仮定に違反するため、 標準的な統計は気づかないうちに有意性を過大評価します — ここでのすべての分析は 重みの設計から始まり、残差診断で終わります。
空間重み (W) — 分析とはすなわち重みである
下流のすべての結果は W に依存します。実質的な理由に基づいて選択し、 1つの代替案で感度チェックを実行してください:
| 重み | 使用する場面 |
|---|---|
| Queen/Rook 隣接 | 不規則なポリゴン (行政単位、区画) |
| K最近傍 | ポイント; 島が存在する場合 (隣接では接続されない) |
| 距離バンド | 既知の範囲を持つ物理的プロセス |
| カーネル (距離減衰) | 滑らかな影響、GWR スタイルの局所モデル |
from libpysal.weights import Queen
w = Queen.from_dataframe(gdf, use_index=True)
print(f"islands: {w.islands}") # unconnected units break stats — fix or document
w.transform = "r" # row-standardize (default for Moran/lag models)
常に報告する: 重みの種類、パラメータ、島の数、および 結果が代替の W でも維持されるかどうか。
グローバル → ローカル ワークフロー
- グローバル Moran's I (
esda.Moran、置換推論 ≥999) — 「何らかのクラスタリングがあるか?」に答えます。I、p_sim、および置換 分布を報告し、解析的 p ではありません。 - LISA / ローカル Moran (
esda.Moran_Local) — どこをマッピングするか: High-High、 Low-Low クラスター、High-Low/Low-High 外れ値。地図を色分けする前に 多重検定補正 (最低でも FDR) を行ってください — 未補正の LISA マップは クラスターを過大評価し、これはこの分野で最もよくある悪用です。 - Getis-Ord Gi* (
esda.G_Local、star=True) — 強度の ホット/コールドスポット (Moran クラスターとは別の問い — Gi* は 高値の集中を見つけ、LISA は類似性構造を見つけます)。 - 人口ベースの現象には、カウントではなく率を使用してください。上記の
いずれかの前に、小人口単位には経験的ベイズ平滑化 (
esda.smoothing) を 使用してください — 疎な単位の生の率はノイズです。
ポイントパターン
- 一次強度 (密度が変化する) と二次相互作用 (ポイントが引き合う/反発する)
を分離してください — KDE は前者を記述し、Ripley's K/L (
pointpats) は 後者を検定します。 - 調査地域に明らかな密度勾配 (人口、道路) がある場合は、常に不均一な 帰無仮説に対して検定してください。都市に対する CSR はストローマンです。
- KDE のバンド幅がストーリーを左右します: それを報告し、正当化し (Silverman/CV)、1つの代替案を示してください。
空間回帰の決定パス
まず OLS を実行し、次に診断してください — 空間モデルから始めないでください:
from spreg import OLS
ols = OLS(y, X, w=w, spat_diag=True, moran=True, name_y="price", name_x=xnames)
決定 (LM 検定による Anselin のルール): LM-Lag が有意で LM-Error が 非有意 → 空間ラグ (SAR); 逆 → 空間誤差 (SEM); 両方 → ロバスト LM バージョンを比較; どちらでもない → OLS が成立 (それを所見として報告してください)。 解釈の注意点: SAR では、係数は限界効果ではありません — 直接/間接 (スピルオーバー) 効果を報告してください。SEM では、空間構造は nuisance 相関であり、スピルオーバーのストーリーは許されません。
GWR/MGWR (mgwr): 関係が空間的に変動する可能性が高い場合。
バンド幅は AICc 探索による; 局所係数をマッピングする際は、
非有意性をマスクした局所 t 値とともにマッピングしてください; 予測変数が
異なるスケールで作用する場合は MGWR。GWR は探索的です — 局所係数に
対する因果的な言葉遣いは避けてください。
推論の誠実さ
- 可能な限り、解析的 p 値よりも置換 p 値を使用してください。
- 多重検定: n 個の局所検定 = n 個の単位; FDR 補正してください。
- MAUP (修正可能な面積単位問題): 単位の集約によって結果が 逆転する可能性があります — 集約レベルが選択肢である場合、1つの 代替案を検定し、開示してください。
- モデリング後の残差における空間的自己相関 = モデルがまだ間違っている; すべての最終モデルについて残差 Moran's I を報告してください。
- 相関 ≠ 因果はここでは二重に当てはまります: 空間的に交絡した 変数 (すべてが「海岸までの距離」と相関する) は、因果的主張の前に 明示的な識別戦略を要求します。
報告テンプレート
## Spatial analysis: <question>
- Units & n, variable(s), rate smoothing: <...>
- W: <type/params>, islands: <n>, sensitivity W: <type>
- Global: Moran's I = <> (p_perm = <>)
- Local: <k> significant clusters after FDR; map attached
- Model: <OLS/SAR/SEM/GWR> chosen because <LM diagnostics>
- Residual Moran's I: <> — <interpretation>
- Caveats: MAUP, W-sensitivity, causal limits
実行契約
- ワークフロー: 推論上の問いと分析単位を定義し、分布と率を確認し、空間重みを構築して正当化し、局所検定の前に大域検定を実行し、必要に応じてモデルを適合し、残差依存を診断し、不確実性を報告します。
- 決定ルール: 依存性と推論には空間統計を、サンプリングされた連続面の補間には地理統計を、標本外予測が主要な目的である場合には予測 ML を使用します。
- 検証プロトコル: 代替の重みと集約を検証し、妥当な並べ替え検定またはモデル推論を使用し、局所的な多重性を補正し、残差の Moran's I を確認し、関連と因果を区別します。
- 失敗モード: 恣意的な重みに対する推論的主張、島の無視、不安定な MAUP の結果、未補正の多重検定、残差自己相関、または裏付けのない因果的表現は差し控えます。
- 成果物: 分析可能な変数、重みの仕様、大域および局所の結果、補正済み有意性、診断マップ、モデルと残差のチェック、感度分析、および注意事項。
- ソースの鮮度: バージョンに敏感な統計 API やデフォルトを適用する前に、権威あるソースレジストリを参照してください。