mcpField
M
mcda-suitability-analysis

mcda-suitability-analysis

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

mcda-suitability-analysis について

mcda-suitability-analysisは、選定基準を明示した適地マップを作るための空間分析スキルです。評価指標を標準化し、制約と要因を分け、結果の安定性を示す感度分析を必須とします。

主な機能

  1. 01連続要因と二値制約の分離
  2. 02ラスタの整合と評価指標の標準化
  3. 03AHPによる重み計算と整合性確認
  4. 04WLCまたはOWAによる指標の集約
  5. 05重み変動とシナリオの感度分析

活用シーン

  1. 01候補地の空間的な適性評価
  2. 02異なる関係者の重み付けシナリオの比較
  3. 03重みの変化に敏感な地域の特定
  4. 04制約、重み、制限事項を記した成果物の作成

インストール

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

$npx skills add https://github.com/muend/geoai-skills --skill mcda-suitability-analysis

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
authoritative-sources.md
scripts/
ahp_weights.py

詳細

MCDA と適地分析

目的: 重み、スケール、前提が明示的で一貫しており、ストレステスト済みの適地マップを作成すること。感度分析のない適地マップは、凡例付きの意見にすぎません。

ワークフロー

  1. 構造化: 目的 → 基準(要因) → 制約。制約は二値マスク(法的除外、水域、傾斜 > しきい値)であり、最後に乗算で適用します。要因は連続値であり、重み付けします。両者は分けておいてください — 制約を極端に高い重みの要因としてエンコードするのは典型的な誤りで、禁止区域が「許容可能」とスコア付けされてしまいます。
  2. 基準レイヤー: 各要因を共通グリッド上のラスターとして扱います(同じ CRS、範囲、セルサイズ、スナップ)。カテゴリカルレイヤーは最近傍で、連続値はバイリニアでリサンプリングし、それぞれを文書化します。
  3. 標準化: 共通の適地スケール(0-1 または 0-255)へ:
    • 単調な「多いほど良い/悪い」には線形 min-max。
    • 適地が飽和する場合はファジィメンバーシップ(制御点付きのシグモイド/線形)— 制御点はドメイン知識から正当化します。
    • カテゴリカルレイヤー: 明示的な再分類テーブルをユーザーに提示します。 方向の確認: すべてのレイヤーについて、生の値が高いことが適地の高さを意味するのか低さを意味するのかを確認します(傾斜: 低い=良い、道路からの距離: 通常は低い=良い)。方向のバグは最終マップまで目に見えずに生き残ります。
  4. 重み(以下 AHP、または根拠を伴う直接法/順位法)。
  5. 集約: デフォルトは重み付き線形結合(WLC)。意思決定者のリスク態度(AND 的 vs OR 的)が重要になる場合は OWA。
  6. 制約マスクを乗算し、結果を分類し(等間隔または分位 — どちらをなぜ使うかを明示)、感度分析を行い、既知の良好/不良地点があればそれに対して検証します。

一貫性を強制する AHP

Saaty の 1-9 スケールによる一対比較。重みは主固有ベクトルから求めます。整合比(CR)は < 0.10 でなければならず、そうでなければ行列は修正のために差し戻します。scripts/ahp_weights.py を実行すると、逆数比較行列から重み + CR を計算します(逆数性を検証し、λ_max を報告します)。

実践: 比較は言語的アンカー(「やや重要」= 3)を用いて一対ずつ引き出します。複数の専門家がいる場合は、重みを計算する前に幾何平均で判断を集約します。成果物には完全な行列、重み、λ_max、CR を報告します。CR ≥ 0.10 の場合は、最も一貫性のない三つ組を特定し、専門家に再検討を求めます — 数字を黙って調整してはいけません。

集約

suit = np.zeros_like(factors[0], dtype="float32")
for w_i, f in zip(weights, factors):   # factors already standardized 0-1
    suit += w_i * f
suit *= constraint_mask                 # binary 0/1, applied last

OWA 変種: セルごとに行の値をソートし、順序重みを適用します — 完全な AND(min)から完全な OR(max)までの連続体。ステークホルダーがリスク許容度で意見が割れる場合に使用し、2〜3 のシナリオを提示します。

感度分析 — 必須

わずかな重みの変化で結果が反転するなら、それは結果ではありません:

  • 一度に一つ: 各重みを ±20% 摂動(再正規化)し、再計算し、適地クラスが変化する面積の % と安定性マップ(摂動を通じてクラスが決して変化しないセル)を報告します。
  • シナリオ: 異なるステークホルダーの優先順位から 2〜3 の代替重みセットを作成し、並べて提示します。
  • モンテカルロの予算がある場合: AHP ベクトルの周りのディリクレ分布から重みをサンプリングします。セルごとの「高度に適地」の確率は、単一のマップよりはるかに強力な成果物です。

成果物の基準

適地マップ(分類済み + 連続)、制約マスクマップ、CR 付きの重みテーブル、基準ごとの標準化関数(方向付き)、感度/安定性の要約、および制限事項の段落(データの鮮度、解像度、省略した基準)。カートグラフィーは cartography-geoviz にルーティングし、ネットワークアクセスの基準は network-accessibility-analysis から取得します。

落とし穴チェックリスト

  • 基準の方向性の反転(静かなる破壊者 — 距離ベースの要素は必ず再確認してください)。
  • リサンプリング規則を宣言せずに解像度を混在させる。
  • CR を無視する、または報告しない。
  • 制約を重みとして混ぜ込む → 禁止区域が中程度の適合度として評価される。
  • 分位数で分類したうえで、それを絶対的な適合性として読む。
  • 感度分析がなく、単一のマップが真実として提示される。

実行契約

  • ワークフロー: 意思決定とステークホルダーを定義する。制約と要素を分離する。基準を標準化する。重みを引き出して検証する。集約する。感度をテストする。不確実性を伝達する。
  • 意思決定ルール: 透明な基準順位付けサーフェスには MCDA を、経路制約のあるアクセスにはネットワーク分析を、離散的な配置や容量の意思決定が支配的な場合には最適化を用います。
  • 検証プロトコル: 基準の方向性と整合性、AHP の一貫性、制約の実施、重みとしきい値の摂動、および安定領域と脆弱領域を確認します。
  • 失敗モード: 基準が同じ構成概念を二重計上している場合、重みの出所が不明な場合、制約が補償に漏れ出している場合、または妥当な摂動の下で順位が崩壊する場合には、モデルを棄却します。
  • 成果物: 連続的および分類された適合性マップ、制約、基準の変換、重みと整合比、感度分析の結果、および限界。
  • ソースの鮮度: 手法や実装 API を適用する前に 信頼できるソースレジストリ を参照し、確認日を記録してください。

コメント