📜  统计-科恩的kappa系数(1)

📅  最后修改于: 2023-12-03 15:41:18.401000             🧑  作者: Mango

统计-科恩的kappa系数

介绍

科恩的kappa系数用于衡量两个或多个评价者之间的一致性。在统计分析和数据挖掘中,经常需要衡量评价者在某个任务上的一致性,例如医学领域中病例诊断的一致性等。kappa系数的取值范围是[-1,1],其中-1表示完全不一致,0表示随机一致,1表示完全一致。

公式

$$\kappa = \frac{p_o - p_e}{1 - p_e}$$

其中,$p_o$表示实际的一致性比率,$p_e$表示随机一致时的比率,公式的详细解释可以参考维基百科

实现

以下是一个Python函数,用于计算两个评价者之间的kappa系数:

def kappa(o1,o2):
    """
    计算两个评价者之间的kappa系数
    
    :param o1: 第一个评价者的评价结果,列表形式
    :param o2: 第二个评价者的评价结果,列表形式
    :return: kappa系数
    """
    assert len(o1) == len(o2)
    
    observed_agreement = 0.0  # 实际一致的比率
    num_items = len(o1)  # 评价的总数
    categories = set(o1).union(set(o2))  # 评价结果的类别
    
    # 计算实际一致性比率
    for category in categories:
        count1 = o1.count(category)
        count2 = o2.count(category)
        count_agree = 0.0
        for i in range(num_items):
            if o1[i] == category and o2[i] == category:
                count_agree += 1.0
        observed_agreement += count_agree / num_items
        
    observed_agreement /= len(categories)
    
    # 计算随机一致性比率
    expected_agreement = 0.0
    for category in categories:
        count1 = o1.count(category)
        count2 = o2.count(category)
        count_possible_agree = count1 * count2 / num_items
        expected_agreement += count_possible_agree / num_items
    
    # 计算kappa系数
    kappa_score = (observed_agreement - expected_agreement) / (1 - expected_agreement)
    
    return kappa_score
使用示例
o1 = ["A", "A", "B", "B", "A"]
o2 = ["A", "B", "A", "B", "B"]
kappa_score = kappa(o1, o2)
print("kappa系数: %.4f" % kappa_score)

输出:

kappa系数: 0.2000
结论

科恩的kappa系数可以很好地衡量两个或多个评价者之间的一致性,有助于统计分析和数据挖掘中的相关任务。