美文网首页
numpy计算肯德尔相关系数

numpy计算肯德尔相关系数

作者: 一路向后 | 来源:发表于2021-06-16 22:42 被阅读0次

1.问题描述

某校开展学生小论文比赛,请六位教师对六篇入选论文评定获奖等级,结果如下表所示,试计算六位教师评定结果的肯德尔系数。

教师评级
A 3 1 2 5 4 6
B 2 1 3 4 5 6
C 3 2 1 5 4 6
D 4 1 2 6 3 5
E 3 1 2 6 4 5
F 4 2 1 5 3 6

2.源码实现

import numpy as np
from collections import Counter

def getT(A):
        T = []

        for a in A:
                C = Counter(a)
                E = list(C.keys())
                F = list(C.values())
                G = np.arange(0, len(E))
                u = 0
                for b in G:
                        if(F[b] > 1):
                                u += (F[b]**3 - F[b])
                T.append(u)

        return np.array(T)

A = np.array([[3, 1, 2, 5, 4, 6],
                [2, 1, 3, 4, 5, 6],
                [3, 2, 1, 5, 4, 6],
                [4, 1, 2, 6, 3, 5],
                [3, 1, 2, 6, 4, 5],
                [4, 2, 1, 5, 3, 6]]);

k = len(A)
n = len(A[0])
R = A.sum(axis=0)
S = np.square(R).sum() - np.square(R.sum()) / n
T = getT(A)
W = 12 * S / (np.square(k) * (n**3 - n) - k * T.sum())

print(W)

3.运行及其结果

$ python3 example.py
0.866666666667

4.结果解析

因为肯德尔系数W=0.86667,所以六位教师评定结果具有很高的一致性。

相关文章

网友评论

      本文标题:numpy计算肯德尔相关系数

      本文链接:https://www.haomeiwen.com/subject/ruxqyltx.html