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.结果解析
因为肯德尔系数,所以六位教师评定结果具有很高的一致性。
网友评论