scipy.stats.weightedtau¶
- scipy.stats.weightedtau(x, y, rank=True, weigher=None, additive=True)[源代码]¶
计算肯德尔公式的加权版本 \(\tau\) 。
有权重的 \(\tau\) 是肯德尔的加权版本 \(\tau\) 其中,高权重的交易比低权重的交易更具影响力。默认参数计算指数的相加双曲线版本, \(\tau_\mathrm h\) ,这已被证明在重要和不重要元素之间提供了最佳平衡 [1].
通过向每个元素分配非负排名的秩数组(较高的重要性排名与较小的值相关联,例如,0是可能的最高排名)和基于排名向每个元素分配权重的加权函数来定义加权。因此,交换的权重是交换的元素的等级的权重的总和或乘积。计算默认参数 \(\tau_\mathrm h\) :具有排名的元素之间的交换 \(r\) 和 \(s\) (从零开始)具有权重 \(1/(r+1) + 1/(s+1)\) 。
只有在考虑到重要的外部标准时,指定秩数组才有意义。如果像通常发生的那样,您没有考虑到特定的级别,那么加权的 \(\tau\) 是通过将使用递减词典编纂排名获得的值按以下方式平均来定义的 (x , y )和由 (y , x )。这是使用默认参数时的行为。请注意,此处用于排序的约定(较低的值意味着较高的重要性)与其他SciPy统计函数使用的约定相反。
- 参数
- x, yarray_like
分数数组,形状相同。如果数组不是一维的,它们将被展平为一维。
- rank整型或布尔型的array_like,可选
分配给每个元素的非负秩。如果该值为NONE,则按以下方式递减的词典编纂排名 (x , y )将被使用:排名较高的元素将是那些具有较大值的元素 x -值,使用 y -中断关系的值(特别是交换 x 和 y 将产生不同的结果)。如果为false,则元素索引将直接用作排名。缺省值为True,在这种情况下,此函数将返回使用字典编纂排名递减方式获得的值的平均值 (x , y )和由 (y , x )。
- weigher可调用,可选
称重功能。必须将非负整数(零表示最重要的元素)映射到非负权重。默认值NONE提供双曲线权重,即等级 \(r\) 映射到权重 \(1/(r+1)\) 。
- additive布尔值,可选
如果为True,则通过将交换元素的秩的权重相加来计算交换的权重;否则,将权重相乘。默认值为True。
- 退货
- correlation浮动
有权重的 \(\tau\) 相关指数。
- pvalue浮动
目前
np.nan
,因为空统计是未知的(即使在加性双曲线的情况下也是如此)。
参见
kendalltau
计算肯德尔的τ。
spearmanr
计算Spearman秩相关系数。
theilslopes
计算一组点(x,y)的Theil-Sen估计量。
注意事项
此函数使用 \(O(n \log n)\) ,基于合并排序的算法 [1] 这是Kendall的Knight算法的加权扩展 \(\tau\) [2]. 它可以计算谢氏加权 \(\tau\) [3] 在没有平局(即,排列)的排名之间通过设置 additive 和 rank 设置为false,如 [1] 是谢家华的推广。
NANS被认为是可能的最小分数。
0.19.0 新版功能.
参考文献
- 1(1,2,3)
Sebastiano Vigna,“并列排名的加权相关指数”,第24届万维网国际会议论文集,第1166-1176页,ACM,2015年。
- 2
W.R.Knight,“用非分组数据计算Kendall‘s Tau的计算机方法”,“美国统计协会杂志”,第61卷,第314期,第1部分,第436-439页,1966年。
- 3
格蕾丝·S·谢。“加权Kendall的τ统计量”,“统计与概率通讯”,第39卷,第1期,第17-24页,1998年。
示例
>>> from scipy import stats >>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, 0] >>> tau, p_value = stats.weightedtau(x, y) >>> tau -0.56694968153682723 >>> p_value nan >>> tau, p_value = stats.weightedtau(x, y, additive=False) >>> tau -0.62205716951801038
NAN被认为是可能的最小分数:
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, np.nan] >>> tau, _ = stats.weightedtau(x, y) >>> tau -0.56694968153682723
这正是肯德尔的牛排:
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, 0] >>> tau, _ = stats.weightedtau(x, y, weigher=lambda x: 1) >>> tau -0.47140452079103173
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, 0] >>> stats.weightedtau(x, y, rank=None) WeightedTauResult(correlation=-0.4157652301037516, pvalue=nan) >>> stats.weightedtau(y, x, rank=None) WeightedTauResult(correlation=-0.7181341329699028, pvalue=nan)