weightedtau#
- scipy.stats.weightedtau(x, y, rank=True, weigher=None, additive=True)[源代码][源代码]#
计算 Kendall’s :math:` au` 的加权版本。
加权 \(\tau\) 是 Kendall’s \(\tau\) 的加权版本,其中高权重的交换比低权重的交换更具影响力。默认参数计算的是该指数的加性双曲线版本,即 \(\tau_\mathrm h\),该版本已被证明在重要和不重要的元素之间提供了最佳平衡 [1]。
权重通过一个等级数组定义,该数组为每个元素分配一个非负等级(更高的重要性等级与更小的值相关联,例如,0 是可能的最高等级),以及一个基于等级为每个元素分配权重的权重函数。交换的权重是交换元素等级权重的总和或乘积。默认参数计算 \(\tau_\mathrm h\):等级为 \(r\) 和 \(s`(从零开始)的元素之间的交换具有权重 :math:`1/(r+1) + 1/(s+1)\)。
指定一个秩数组仅在你心中有一个外部重要性标准时才有意义。如果,像通常发生的那样,你没有心中特定的秩,加权的 :math:` au` 是通过使用按 (x, y) 和按 (y, x) 的递减字典序秩获得的值的平均值来定义的。这是默认参数下的行为。请注意,这里用于排序的约定(较低的值意味着较高的重要性)与SciPy统计函数中使用的约定相反。
- 参数:
- x, yarray_like
分数数组,形状相同。如果数组不是一维的,它们将被展平为一维。
- 等级类似数组的整数或布尔值,可选
每个元素分配一个非负的秩。如果为 None,将使用按 (x, y) 递减的字典序秩:秩较高的元素将是那些 x 值较大的元素,使用 y 值来打破平局(特别是,交换 x 和 y 将给出不同的结果)。如果为 False,元素的索引将直接用作秩。默认值为 True,在这种情况下,此函数返回使用按 (x, y) 和按 (y, x) 递减的字典序秩获得的值的平均值。
- 权重器可调用,可选
权重函数。必须将非负整数(零表示最重要的元素)映射到非负权重。默认值 None 提供双曲线加权,即排名 \(r\) 被映射到权重 \(1/(r+1)\)。
- 加法bool, 可选
如果为 True,交换的权重是通过加上交换元素的等级权重来计算的;否则,权重是相乘的。默认值为 True。
- 返回:
- res: 重要性结果
一个包含属性的对象:
- 统计浮动
加权 :math:` au` 相关指数。
- p值浮动
目前
np.nan
,由于统计量的空分布未知(即使在加性双曲情况下)。
参见
kendalltau
计算 Kendall 的 tau 系数。
spearmanr
计算斯皮尔曼等级相关系数。
theilslopes
计算一组点 (x, y) 的 Theil-Sen 估计量。
注释
此函数使用一个基于归并排序的 \(O(n \log n)\) 算法 [1],该算法是Knight算法在Kendall \(\tau\) [2] 上的加权扩展。通过将 additive 和 rank 设置为 False,它可以在无平局(即排列)的排名之间计算Shieh的加权 \(\tau\) [3],因为 [1] 中给出的定义是Shieh的推广。
NaN 被视为可能的最小分数。
Added in version 0.19.0.
参考文献
[2]W.R. Knight, “一种计算未分组数据肯德尔Tau系数的计算机方法”,《美国统计协会杂志》,第61卷,第314期,第1部分,第436-439页,1966年。
[3]Grace S. Shieh. “加权肯德尔τ统计量”,《统计与概率通讯》,第39卷,第1期,第17-24页,1998年。
示例
>>> import numpy as np >>> from scipy import stats >>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, 0] >>> res = stats.weightedtau(x, y) >>> res.statistic -0.56694968153682723 >>> res.pvalue nan >>> res = stats.weightedtau(x, y, additive=False) >>> res.statistic -0.62205716951801038
NaNs 被认为是可能的最小分数:
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, np.nan] >>> res = stats.weightedtau(x, y) >>> res.statistic -0.56694968153682723
这正是肯德尔的tau:
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, 0] >>> res = stats.weightedtau(x, y, weigher=lambda x: 1) >>> res.statistic -0.47140452079103173
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, 0] >>> stats.weightedtau(x, y, rank=None) SignificanceResult(statistic=-0.4157652301037516, pvalue=nan) >>> stats.weightedtau(y, x, rank=None) SignificanceResult(statistic=-0.7181341329699028, pvalue=nan)