一致性检验计算公式

深入解析 AHP 层次分析法 中的逻辑校验机制,掌握 CR 值、CI 值 与 RI 值 的精准计算方法,解决专家打分中的逻辑矛盾难题。

什么是一致性检验?

在进行多准则决策分析(MCDM)时,尤其是使用 AHP 层次分析法(Analytic Hierarchy Process)时,专家或决策者需要对不同方案进行两两比较,构建判断矩阵。然而,人类的思维往往存在主观性和局限性,导致给出的评分可能出现逻辑上的“循环矛盾”。


例如:若专家认为方案 A 比 B 重要(A>B),B 比 C 重要(B>C),按照逻辑传递性,A 理应比 C 更重要。但如果专家直接打分时,却认为 C 比 A 更重要,这就构成了逻辑不一致。为了量化这种不一致的程度,我们需要引入一致性检验计算公式。

⚠️ 核心意义: 只有通过一致性检验,证明判断矩阵的逻辑是自洽的,后续计算出的权重才具有参考价值。否则,得出的结论可能是荒谬的。

核心计算公式详解

要完成一致性检验,必须依次计算三个关键指标:CI(一致性指标)、RI(平均随机一致性指标)和CR(一致性比率)。

Step 1: 计算最大特征值
Step 2: 计算 CI 值
Step 3: 查表获取 RI 值
Step 4: 判定 CR 值

第一步:求解判断矩阵的最大特征值 (λ_max)

这是最繁琐的一步。设判断矩阵为 A,其阶数为 n。我们需要找到满足方程 Aw = λ_max w 的最大特征值 λ_max 及其对应的特征向量 w(即权重向量)。

在实际应用中,通常采用和积法或方根法来近似计算,无需使用复杂的线性代数软件,具体步骤如下:

  1. 将判断矩阵 A 的每一列归一化:
  2. 将归一化后的矩阵按行求和:
  3. 对 W 向量再次归一化得到权重向量 w。
  4. 计算 Aw,然后利用公式 求得最大特征值。

第二步:计算一致性指标 CI

一旦获得最大特征值,即可计算 CI 值。该指标反映了矩阵偏离完全一致性的程度。

其中:
  • λ_max:判断矩阵的最大特征值。
  • n:矩阵的阶数(即因素的数量)。

注意: 当矩阵完全一致时,,此时 。CI 值越大,不一致程度越严重。

第三步:查询平均随机一致性指标 RI

由于不同阶数的矩阵产生随机不一致的概率不同,我们需要一个基准值来进行修正,这个基准就是 RI(Random Index)。RI 是通过随机生成大量同阶矩阵并计算其平均 CI 值得到的。

矩阵阶数 n 1 2 3 4 5 6 7 8 9 10
RI 值 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49

注:当 n=1 或 n=2 时,判断矩阵永远是一致的,因此 RI=0。

第四步:计算一致性比率 CR 并判定

最后一步是将 CI 与 RI 相比,得到 CR 值。

判定标准:

  • 若 CR < 0.1:认为判断矩阵具有满意的一致性,计算结果有效。
  • 若 CR ≥ 0.1:认为判断矩阵未达到满意的一致性,必须返回重新调整矩阵中的元素值。

实战案例演示

假设我们要评估三个候选方案 A、B、C,构建了如下 3 阶判断矩阵:

表 1:某项目方案评价判断矩阵
方案 A B C
A 1 3 5
B 1/3 1 2
C 1/5 1/2 1

1. 计算权重向量 (w)

使用和积法:

  • 列归一化:
    第 1 列和:
    , ,
    (同理计算其他列)...
  • 行求和:


    (此处仅为示意,实际需精确计算)
  • 归一化得权重 w:

2. 计算最大特征值 (λ_max)

计算 :

Row 1: 10.633 + 30.264 + 50.103 = 0.633 + 0.792 + 0.515 = 1.940
Row 2: 0.3330.633 + 10.264 + 20.103 = 0.211 + 0.264 + 0.206 = 0.681
Row 3: 0.20.633 + 0.50.264 + 10.103 = 0.127 + 0.132 + 0.103 = 0.362
            

计算 分量:

  • 1:
  • 2:
  • 3:

求平均值得到

3. 计算 CI 与 CR

已知 ,查表得 。

  • CI:
  • CR:
✅ 结论: 因为 ,所以该判断矩阵通过了一致性检验,计算出的权重是可信的。

常见错误排查

现象一
CI 值为负数

这通常意味着计算过程中出现了严重的浮点数误差,或者输入的判断矩阵本身就不符合正互反矩阵的定义(如 )。请检查原始数据是否录入错误。

现象二
CR 值远大于 0.1

这说明专家的打分逻辑非常混乱。例如,A 比 B 强很多,B 比 C 强很多,但 C 却被认为比 A 强很多。此时不能强行使用结果,必须重新组织专家会议,指出逻辑矛盾点,要求修正打分。

现象三
RI 值查错

务必确认矩阵的阶数 n。如果是 4 个因素,必须查 n=4 对应的 RI 值(0.90),而不是默认的 0.58。阶数不同,容忍度完全不同。

Python代码实现

对于大规模矩阵,手动计算效率极低且容易出错。以下是基于 NumPy 库的一键计算脚本:

import numpy as np
def check_consistency(matrix):
    """
    计算判断矩阵的一致性检验
    :param matrix: 二维 numpy 数组
    :return: lambda_max, CI, RI, CR, is_pass
    """
    n = len(matrix)
    matrix = np.array(matrix, dtype=float)
    # 1. 计算权重 (使用特征值法)
    eigenvalues, eigenvectors = np.linalg.eig(matrix)
    # 取最大特征值及其对应的特征向量
    max_idx = np.argmax(np.real(eigenvalues))
    lambda_max = np.real(eigenvalues[max_idx])
    w = np.real(eigenvectors[:, max_idx])
    # 归一化权重
    w = w / np.sum(w)
    # 2. 计算 CI
    if n <= 2:
        CI = 0
    else:
        CI = (lambda_max - n) / (n - 1)
    # 3. 定义 RI 表
    ri_table = {1: 0.00, 2: 0.00, 3: 0.58, 4: 0.90, 5: 1.12,
                6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45, 10: 1.49}
    RI = ri_table.get(n, 1.49) # 默认取最大值
    # 4. 计算 CR
    CR = CI / RI if RI != 0 else 0
    return {
        "lambda_max": lambda_max,
        "weights": w.tolist(),
        "CI": CI,
        "RI": RI,
        "CR": CR,
        "is_pass": CR < 0.1
    }

示例调用

matrix_data = [[1, 3, 5], [1/3, 1, 2], [1/5, 1/2, 1]] result = check_consistency(matrix_data) print(f"最大特征值:{result['lambda_max']:.4f}") print(f"一致性比率 CR: {result['CR']:.4f}") print(f"检验结果:{'通过' if result['is_pass'] else '未通过'}")

网友们还关心

Q1: 为什么有时候 CR 值刚好卡在 0.1 附近?

A: 这种情况通常是因为打分过于接近临界状态。建议稍微调整矩阵中差异最大的那个元素,或者增加样本量(更多专家打分)来平滑数据。不要试图通过凑数字让 CR 刚好小于 0.1,那样会失去数据的真实性。


Q2: 除了 AHP,其他方法需要一致性检验吗?

A: 熵权法是基于客观数据变异程度的,不需要一致性检验。但TOPSIS 法、模糊综合评价法等如果涉及主观赋权(如结合 AHP 权重),则必须对主观部分进行一致性检验。


Q3: 如果无法通过检验,能否直接修改权重?

A: 绝对不可以!直接修改权重是造假行为。正确的做法是回到判断矩阵层面,找出逻辑矛盾的条目,要求专家重新审视并修正原始打分,直到 CR < 0.1 为止。

✨ 更多精彩
墨卷研习录
CopyRight@educfa.com.cn