根据scipy.stats文档中提到的内容,spearman排名相关性有两个array_like,定义为" ... arrays containing multiple variables and observations. Each represents a vector of observations of a single variable...&#34 ;. 但是,大多数实际例子如Spearman's rank correlation coefficient page of wikipedia计算两个基数变量之间的相关性,而不是两个有序变量。如果我想估计两个偏好顺序列表关闭多少,那么我的参数是什么? 例如,我们要求两个人在四个项目之间订购他们的偏好。我们为person_1设置了[Item_1,Item_3,Item_0,Item_2],为person_2设置了[Item_1,Item_3,Item_2,Item_0]。显然,如果这两个有序列表的相关系数接近1,则可以得出结论,它们具有相同的偏好。所以我们使用Spearman的秩相关系数。 但输入参数会改变相关系数;如果我们使用项目顺序相关应该是0.19:
>>> from scipy import stats
>>> stats.spearmanr([1,3,0,2],[1,3,2,0])
SpearmanrResult(correlation=0.19,pvalue=0.80)
但如果我们使用项目的等级列表,则相关性应为0.79:
from scipy import stats
>>> stats.spearmanr([2,0,3,1],[3,0,2,1])
SpearmanrResult(correlation=0.79, pvalue=0.20)
但对于一个基本变量来说并非如此,例如人的智商与每周在电视机前花费的小时数之间的相关性,这已在维基百科中进行了解释。这意味着无论我们使用什么(Xi,Yi)或(xi,yi),结果都是一样的(p = -0.17):
>>> from scipy import stats
>>> stats.spearmanr([86,97,99,100,101,103,106,110,112,113],[0,20,28,27,50,29,7,17,6,12])
SpearmanrResult(correlation=-0.17575757575757575, pvalue=0.62718834477648444)
>>> stats.spearmanr([1,2,3,4,5,6,7,8,9,10],[1,6,8,7,10,9,3,5,2,4])
SpearmanrResult(correlation=-0.17575757575757575, pvalue=0.62718834477648444)
答案 0 :(得分:0)
根据Spearman的等级相关系数定义,我们必须订购一个列表并为每个实例提供一个位置编号。因此,在第二个示例中可以看出,我们使用值列表或排名列表并不重要,但必须将两个实例列表考虑为一对实例列表并使用名称调用每个对。因此,在名义列表中,我们修复一个列表并在第二个列表中找到每个列表成员的等级,并将此等级放在相同的位置。
在这种情况下,我们必须找到每个人的项目排名列表,但具有相同的项目顺序。我们选择哪个项目订单并不重要。
[Item_0,Item_1,Item_2,Item_3]
person_1:[3,1,4,2]或[2,0,3,1]
person_2:[4,1,3,2]或[3,0,2,1]
>>> stats.spearmanr([3,1,4,2],[4,1,3,2])
SpearmanrResult(correlation=0.79999999999999993, pvalue=0.20000000000000007)
或:
[Item_1,Item_3,Item_0,Item_2]
person_1:[1,2,3,4]或[0,1,2,3]
person_2:[1,2,4,3]或[0,1,3,2]
>>> stats.spearmanr([1,2,3,4],[1,2,4,3])
SpearmanrResult(correlation=0.79999999999999993, pvalue=0.20000000000000007)