Method1排名:
用户ID:[301,597,414,477,57,369,206,535,590,418]
rank:[1、2、3、4、5、6、7、8、9、10]
Method2排名:
用户ID:[301、477、19、120、75、57、597、160、577、369]
rank:[1、2、3、4、5、6、7、8、9、10]然后,我使用scipy.stats.spearmanr应用了Spearman的等级相关性:
from scipy.stats import spearmanr
method1 = [301, 597, 414, 477, 57, 369, 206, 535, 590, 418]
method2 = [301, 477, 19, 120, 75, 57, 597, 160, 577, 369]
coef, _ = spearmanr(method1, method2)
print(f"Spearman coefficient: {coef}")
Spearman coefficient: 0.2727
手动计算: 要验证,我使用两个列表之间的共同用户手动计算ρ。
用户id
rank(方法1)
rank(方法2)(d_i = r_1 -r_2)(d_i^2)
。 | 为什么我的手动计算不正确?我在处理失踪用户或排名的方式上是错误的吗? | 我感谢有关我的手动方法不正确的任何指导以及scipy.stats.spearmanr在内部处理排名。 |
测量您正在通过一些其他条件来传递按排序顺序排列顺序的ID列表
在两个列表之间进行重复的外观
估计等级之间的相关系数。
它没有。它正在计算您提供的数字的相关系数。
我认为您需要通过它:
x = [1, 2, 4, 5, 6]
y = [1, 7, 2, 6, 10]