通过成对比较分配权重 (分析)

摘要

通过成对比较一组输入变量,计算它们的相对权重。

了解有关“通过成对比较分配权重”工具工作原理的详细信息

使用情况

  • 此工具会基于输入的变量创建变量对。 对每一变量对进行评估,确定哪个变量更重要,以及重要的程度。 该工具根据变量对的评估结果,生成一个比较矩阵。 每个变量的相对权重将从比较矩阵中计算得出。

  • 输入对比变量参数可以接受任意名称。 这些名称可以代表栅格或要素图层、字段或者其他需要比较的变量。 最少需要两个变量,最多允许九个。

  • 地理处理窗格中使用该工具,与在 Python 中使用存在一些差异。 在地理处理窗格中,变量对的创建基于输入对比变量参数。 单击比较变量并计算权重按钮,打开成对比较矩阵窗口。 该窗口会显示变量对,并在每一对旁边显示一个滑块。 通过调整滑块,指定每一对变量中哪个更重要,以及重要的程度。 调整滑块时,比较矩阵会同步更新。

  • 这些比较采用 Thomas Saaty 开发的 1 到 9 评估级别 (Saaty, 2008)。 这些评估级别的具体定义和每个值的解释,请参考下表。

    重要性强度定义说明

    1

    同等重要

    两种活动对目标的贡献相同。

    2

    较弱或轻微

    3

    中等重要

    经验和判断表明,此活动略优于另一项。

    4

    中等偏上

    5

    强烈重要

    经验和判断表明,此活动明显优于另一项。

    6

    强烈偏上

    7

    极其强烈或已证实重要

    此活动显著优于另一项,并在实践中得到充分验证。

    8

    极其、极其强烈

    9

    极端重要

    支持一种活动胜过另一种活动的证据具有尽可能最高的确定性。

    该评估级别中的数值是乘数。 在成对比较中,如果一个变量的重要性是另一个变量的两倍,则将滑块移动到 2,并靠近更重要的变量。 需要注意的是,这并不意味着该变量的最终权重会是另一个变量的两倍。 该乘数仅适用于当前的成对比较。

  • 成对比较矩阵参数通过两个相互作用的表格控件来创建比较矩阵。 每次通过移动滑块进行比较时,比较矩阵表中的值都会更新,并且权重会重新计算。 默认情况下,所有比较评估的初始值都设置为 1。

    将滑块拖动到接近目标值的位置,然后单击滑块条并将其移至指定值,进行微调。 每次单击滑块条,滑块的数值会以 0.1 的幅度增减。

  • Python 中,可以使用表格或文本编辑器(或者基于该工具之前的运行结果)创建一个文件或表,并将结果文件作为 comparison_matrix 参数值输入。

    comparison_matrix 值支持的文件格式包括地理数据库表、dBASE(.dbf 文件)和逗号分隔文件(.csv.txt)。

    以下是一个使用表格编辑器创建的,不含权重的比较矩阵示例:

    变量Dist_Roads高程土地利用坡向

    Dist_Roads

    1

    0.333

    3

    1

    高程

    3

    1

    0.2

    3

    土地利用

    0.333

    5

    1

    7

    坡向

    1

    0.333

    0.143

    1

    有关带权重和不带权重的比较矩阵的更多示例,请参阅输入比较矩阵格式

  • 要验证成对评估的一致性,请单击成对比较矩阵窗口中“比较矩阵”下方的一致性按钮。 一致性比率 (CR) 将显示在比较矩阵下方。 CR 应低于 0.1。

    如果 CR 大于 0.1,则 CR 值和三对最不一致的变量对会以红色突出显示。 您可以调整这些不一致变量对的评估值,提高比较结果的一致性。

  • Python 中,变量通过 input_variables 参数指定。 成对比较在 comparison_matrix 参数中定义。 您可以直接指定变量对,以及它们的评估结果。 或者,您可以输入包含有效比较矩阵的任何文件,该矩阵可以由表格、文本编辑器创建,也可以是该工具的输出表。

    有关有效的输入比较矩阵格式,请参阅输入比较矩阵格式

  • 输出表参数值包含输入变量的计算权重,并且可以选择包含成对比较矩阵。

    有效的输出表类型包括地理数据库表、dBASE (.dbf) 文件和逗号分隔文件(.csv.txt)。 默认情况下,输出表将是地理数据库工作空间中的一个表。 如果输出表位于文件工作空间中,则默认情况下,输出表将是 dBASE 表。

    以下示例展示了选中向输出添加比较矩阵参数时输出表的内容。

    变量Dist_Roads高程土地利用坡向权重

    Dist_Roads

    1

    0.333

    3

    1

    0.253

    高程

    3

    1

    0.2

    3

    0.252

    土地利用

    0.333

    5

    1

    7

    0.407

    坡向

    1

    0.333

    0.143

    1

    0.088

    有关输出表格式(包括带权重和不带权重)的更多示例,请参阅输出表格式

  • 向输出添加比较矩阵参数用于指定输出表是否包含成对比较矩阵。 选中此项后,输出表将包含成对比较矩阵和计算的权重。

  • Saaty, T. L. 2008. "Decision making with the analytic hierarchy process". International Journal of Services Sciences, 1(1), 83-98.

参数

标注说明数据类型
输入对比变量

需要比较的变量名称。 可以提供任何名称。

最少需要两个变量,最多允许九个。

String
输出表

输出表的名称,该表将包含输入变量的计算权重。 如果选中向输出添加比较矩阵参数,则输出表还会包含成对比较矩阵。

Table
向输出添加比较矩阵
(可选)

指定输出表参数值是否包含成对比较矩阵。

  • 选中 - 输出表将包含成对比较矩阵和计算的权重。 这是默认设置。
  • 未选中 - 输出表仅包含计算的权重。
Boolean
成对比较矩阵
(可选)

用于计算权重的成对比较矩阵。

使用成对比较矩阵窗口中的滑块,确定每一对变量中哪个更重要,以及重要的程度。

Pairwise Weights Table

arcpy.analysis.AssignWeightsByPairwiseComparison(input_variables, out_table, {add_comparison_matrix}, {comparison_matrix})
名称说明数据类型
input_variables
[input_variables,...]

需要比较的变量名称。 可以提供任何名称。

最少需要两个变量,最多允许九个。

String
out_table

输出表的名称,该表将包含输入变量的计算权重。 如果 add_comparison_matrix 参数值为 ADD_MATRIX,则输出表还会包含成对比较矩阵。

Table
add_comparison_matrix
(可选)

指定 out_table 参数值是否包含成对比较矩阵。

  • ADD_MATRIX输出表将包含成对比较矩阵和计算的权重。 这是默认设置。
  • WEIGHTS_ONLY输出表仅包含计算的权重。
Boolean
comparison_matrix
(可选)

用于计算权重的成对比较矩阵。

通过以下方法之一来定义成对比较:

  • 提供包含有效比较矩阵的文件。
  • 指定变量名称及其比较关系。

该文件可以是地理数据库表、dBASE (.dbf) 文件或逗号分隔文件(.csv.txt)。

Pairwise Weights Table

代码示例

AssignWeightsByPairwiseComparison 示例 1(Python 窗口)

本示例演示了如何在 Python 窗口中使用此函数。

import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.analysis.AssignWeightsByPairwiseComparison("elev;landuse;dist_road;dist_line","output_weights","ADD_MATRIX","Variables elev landuse 0.333; elev dist_road 2.200; elev dist_line 2.70; landuse dist_road 1; landuse dist_line 1; dist_road dist_line 1" )
AssignWeightsByPairwiseComparison 示例 2(独立脚本)

以下示例演示了如何通过直接在比较矩阵中输入成对比较关系来计算三个变量的权重。

# Name: AssignWeightsbyPairwiseComparison.py
# Description: Calculates the weights for three variables using the
#              pairwise comparsion method.

# Import system module
import arcpy

# Set workspace environment
arcpy.env.workspace = "C:/data"

# Set local variables 
input_variables = "elev; landuse; dist_road"
outputTable = "outputweights.csv"
add_comparison_matrix = "WEIGHTS_ONLY"
comparison_matrix = "input_matrix.txt"
 
 
# Run Assign Weights By Pairwise Comparison
arcpy.analysis.AssignWeightsByPairwiseComparison(input_variables, outputTable, add_comparison_matrix, comparison_matrix)

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题