weightedtau#
- scipy.stats.weightedtau(x, y, rank=True, weigher=None, additive=True)[源代码]#
计算 Kendall 的 \(\tau\) 的加权版本。
加权 \(\tau\) 是 Kendall 的 \(\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。
- 返回:
- res:SignificanceResult
包含属性的对象
- statistic浮点数
加权 \(\tau\) 相关性指数。
- pvalue浮点数
目前为
np.nan
,因为统计量的零分布未知(即使在加性双曲情况下)。
另请参阅
kendalltau
计算 Kendall 的 tau。
spearmanr
计算 Spearman 秩相关系数。
theilslopes
计算一组点 (x, y) 的 Theil-Sen 估计量。
注释
此函数使用 \(O(n \log n)\) 基于归并排序的算法 [1],它是 Kendall 的 \(\tau\) 的 Knight 算法的加权扩展 [2]。它可以通过将 additive 和 rank 设置为 False 来计算排名之间没有平局(即排列)的 Shieh 的加权 \(\tau\) [3],因为 [1] 中给出的定义是 Shieh 的定义的一种概括。
NaN 被认为可能的最小分数。
在 0.19.0 版本中添加。
参考资料
[2]W.R. Knight,“用于计算未分组数据的 Kendall 的 Tau 的计算机方法”,美国统计协会杂志,第 61 卷,第 314 期,第 1 部分,第 436-439 页,1966 年。
[3]Grace S. Shieh。“加权的 Kendall 的 tau 统计量”,统计与概率快报,第 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
NaN 被认为可能的最小分数
>>> x = [12, 2, 1, 12, 2] >>> y = [1, 4, 7, 1, np.nan] >>> res = stats.weightedtau(x, y) >>> res.statistic -0.56694968153682723
这正是 Kendall 的 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)