weightedtau#
- scipy.stats.weightedtau(x, y, rank=True, weigher=None, additive=True, *, axis=None, nan_policy='propagate', keepdims=False)[source]#
计算 Kendall’s \(\tau\) 的加权版本。
加权 \(\tau\) 是 Kendall’s \(\tau\) 的加权版本,其中高权重的交换比低权重的交换更具影响力。默认参数计算指标的加性双曲版本 \(\tau_\mathrm h\),已证明它在重要和不重要的元素之间提供了最佳平衡 [1]。
加权通过一个秩数组定义,该数组为每个元素分配一个非负秩(更高的重要性秩与更小的值相关联,例如,0是可能的最高秩),以及一个加权函数,该函数根据秩为每个元素分配权重。然后,交换的权重是交换元素的秩的权重的总和或乘积。默认参数计算 \(\tau_\mathrm h\):秩为 \(r\) 和 \(s\) 的元素之间的交换(从零开始)的权重为 \(1/(r+1) + 1/(s+1)\)。
仅当您心中有一个外部重要性标准时,指定秩数组才有意义。如果像通常发生的那样,您心中没有特定的秩,则加权 \(\tau\) 是通过平均使用递减词典秩 x、 y) 和 ( y, x)。这是使用默认参数的行为。请注意,此处使用的排名约定(较低的值意味着更高的重要性)与其他 SciPy 统计函数使用的约定相反。
- 参数:
- x, y类数组
形状相同的得分数组。如果数组不是 1-D,它们将被展平为 1-D。
- rank整数型或布尔型类数组,可选
分配给每个元素的非负秩。 如果为 None,则将使用 ( x, y) 按降序排列的词典秩:秩较高的元素将是具有较大 x-值的元素,使用 y-值来打破平局(特别是,交换 x 和 y 将给出不同的结果)。如果为 False,则元素索引将直接用作秩。默认值为 True,在这种情况下,此函数返回使用 ( x, y) 和 ( y, x) 按降序排列的词典秩获得的值的平均值。
- weigher可调用对象,可选
加权函数。必须将非负整数(零表示最重要的元素)映射到非负权重。默认值 None 提供双曲加权,即,秩 \(r\) 映射到权重 \(1/(r+1)\)。
- additive布尔型,可选
如果为 True,则通过将交换元素的秩的权重相加来计算交换的权重;否则,将权重相乘。默认值为 True。
- axisint 或 None,默认值:None
如果为 int,则为计算统计量的输入的轴。输入的每个轴切片(例如,行)的统计量将出现在输出的相应元素中。如果
None
,则输入将在计算统计量之前被扁平化。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定义如何处理输入 NaN。
propagate
:如果在计算统计量的轴切片(例如,行)中存在 NaN,则输出的相应条目将为 NaN。omit
:在执行计算时将忽略 NaN。如果在计算统计量的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。raise
:如果存在 NaN,则将引发ValueError
。
- keepdims布尔型,默认值:False
如果设置为 True,则缩小的轴将作为大小为 1 的维度留在结果中。使用此选项,结果将正确地广播到输入数组。
- 返回值:
- res: SignificanceResult
包含属性的对象
- statistic浮点型
加权 \(\tau\) 相关性指标。
- pvalue浮点型
目前
np.nan
,因为统计量的零分布是未知的(即使在加性双曲情况下)。
另请参阅
kendalltau
计算 Kendall’s tau。
spearmanr
计算 Spearman 秩相关系数。
theilslopes
计算一组点 (x, y) 的 Theil-Sen 估计量。
注释
此函数使用 \(O(n \log n)\),基于归并排序的算法 [1],它是 Knight 的 Kendall’s \(\tau\) 算法的加权扩展 [2]。它可以通过将 additive 和 rank 设置为 False 来计算没有联系的排名(即,排列)之间的 Shieh 的加权 \(\tau\) [3],因为 [1] 中给出的定义是 Shieh 的概括。
NaN 被认为是可能的最小分数。
0.19.0 版本中新增。
从 SciPy 1.9 开始,
np.matrix
输入(不建议用于新代码)在执行计算之前转换为np.ndarray
。在这种情况下,输出将是标量或具有适当形状的np.ndarray
,而不是 2Dnp.matrix
。同样,虽然会忽略掩码数组的掩码元素,但输出将是标量或np.ndarray
,而不是具有mask=False
的掩码数组。参考
[1] (1,2,3)Sebastiano Vigna, “A weighted correlation index for rankings with ties”, Proceedings of the 24th international conference on World Wide Web, pp. 1166-1176, ACM, 2015。
[2]W.R. Knight, “A Computer Method for Calculating Kendall’s Tau with Ungrouped Data”, Journal of the American Statistical Association, Vol. 61, No. 314, Part 1, pp. 436-439, 1966。
[3]Grace S. Shieh. “A weighted Kendall’s tau statistic”, Statistics & Probability Letters, Vol. 39, No. 1, pp. 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
NaN 被认为是可能的最小分数
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, np.nan] >>> res = stats.weightedtau(x, y) >>> res.statistic -0.56694968153682723
这正是 Kendall’s 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)