xrspatial.mcda.weights.ahp_weights#
- xrspatial.mcda.weights.ahp_weights(criteria: list[str], comparisons: dict[tuple[str, str], float]) tuple[dict[str, float], ConsistencyResult][source]#
Derive criterion weights from pairwise comparisons using AHP.
Uses the standard Saaty eigenvector method. Input pairwise comparisons on a 1-9 scale (or reciprocals). The function builds the full comparison matrix, computes the principal eigenvector for weights, and derives the consistency ratio.
- Parameters:
criteria (list of str) – Criterion names in order.
comparisons (dict) – Pairwise comparisons as
{(criterion_a, criterion_b): value}. Only provide each pair once; the reciprocal is inferred. Values follow the Saaty scale (1 = equal, 9 = extreme preference of a over b, 1/9 = extreme preference of b over a).
- Returns:
weights (dict of str to float) – Normalized weights summing to 1.0.
consistency (ConsistencyResult) – Consistency ratio and related metrics.
is_consistentis True when ratio < 0.10.
- Raises:
ValueError – If the criteria list has fewer than 2 items or contains duplicates, or if a comparison is invalid (unknown criterion, self-comparison, or a non-positive or non-finite value).
- Warns:
UserWarning – If fewer than
n * (n - 1) / 2pairwise comparisons are provided. Missing pairs default to 1 (equal importance).