scipy.stats.

somersd#

scipy.stats.somersd(x, y=None, alternative='two-sided')[源代码]#

计算 Somers’ D,一种非对称的顺序关联度量。

与 Kendall’s \(\tau\) 类似,Somers’ \(D\) 是衡量两个排序之间对应关系的指标。这两个统计量都考虑了两个排序 \(X\)\(Y\) 中一致对和不一致对的数量之差,并且都进行了归一化,使得接近 1 的值表示强一致性,接近 -1 的值表示强不一致性。它们的不同之处在于如何进行归一化。为了显示关系,Somers’ \(D\) 可以用 Kendall’s \(\tau_a\) 定义为:

\[D(Y|X) = \frac{\tau_a(X, Y)}{\tau_a(X, X)}\]

假设第一个排序 \(X\)\(r\) 个不同的等级,第二个排序 \(Y\)\(s\) 个不同的等级。这两个 \(n\) 个排序的列表也可以看作一个 \(r \times s\) 列联表,其中元素 \(i, j\) 是在排序 \(X\) 中等级为 \(i\) 且在排序 \(Y\) 中等级为 \(j\) 的等级对的数量。因此,somersd 也允许将输入数据作为单个 2D 列联表而不是两个单独的 1D 排序提供。

请注意,Somers’ \(D\) 的定义是不对称的:一般来说,\(D(Y|X) \neq D(X|Y)\)somersd(x, y) 计算 Somers’ \(D(Y|X)\): “行”变量 \(X\) 被视为自变量,“列”变量 \(Y\) 被视为因变量。对于 Somers’ \(D(X|Y)\),交换输入列表或转置输入表。

参数:
xarray_like

等级的 1D 数组,被视为(行)自变量。 或者,一个 2D 列联表。

yarray_like, 可选

如果 x 是等级的 1D 数组,则 y 是相同长度的等级的 1D 数组,被视为(列)因变量。 如果 x 是 2D 数组,则忽略 y

alternative{‘two-sided’, ‘less’, ‘greater’}, 可选

定义备择假设。默认值为 ‘two-sided’。以下选项可用: * ‘two-sided’:等级相关性非零 * ‘less’:等级相关性为负(小于零) * ‘greater’:等级相关性为正(大于零)

返回:
resSomersDResult

一个 SomersDResult 对象,包含以下字段

statisticfloat

Somers’ \(D\) 统计量。

pvaluefloat

假设检验的 p 值,其零假设是不存在关联,\(D=0\)。有关更多信息,请参阅注释。

table2D 数组

由排序 xy 形成的列联表(如果 x 是 2D 数组,则为提供的列联表)

另请参阅

kendalltau

计算 Kendall’s tau,另一种相关性度量。

weightedtau

计算 Kendall’s tau 的加权版本。

spearmanr

计算 Spearman 等级相关系数。

pearsonr

计算 Pearson 相关系数。

注释

此函数遵循 [2][3] 的列联表方法。p 值是基于零假设 \(D=0\) 下检验统计量分布的渐近近似计算的。

从理论上讲,基于 Kendall’s \(tau\) 和 Somers’ \(D\) 的假设检验应该是相同的。但是,kendalltau 返回的 p 值是基于 \(X\)\(Y\) 之间独立性 的零假设(即,从中采样 \(X\)\(Y\) 中的对的总体包含所有可能对的相同数量),这比此处使用的零假设 \(D=0\) 更具体。如果需要独立性零假设,可以使用 kendalltau 返回的 p 值以及 somersd 返回的统计量,反之亦然。有关更多信息,请参阅 [2]

列联表按照 SAS 和 R 使用的惯例格式化:提供的第一个排序 (x) 是“行”变量,提供的第二个排序 (y) 是“列”变量。这与 Somers 原始论文 [1] 的惯例相反。

参考文献

[1]

Robert H. Somers, “A New Asymmetric Measure of Association for Ordinal Variables”, American Sociological Review, Vol. 27, No. 6, pp. 799–811, 1962.

[2] (1,2)

Morton B. Brown and Jacqueline K. Benedetti, “Sampling Behavior of Tests for Correlation in Two-Way Contingency Tables”, Journal of the American Statistical Association Vol. 72, No. 358, pp. 309–315, 1977.

[3]

SAS Institute, Inc., “The FREQ Procedure (Book Excerpt)”, SAS/STAT 9.2 User’s Guide, Second Edition, SAS Publishing, 2009.

[4]

Laerd Statistics, “Somers’ d using SPSS Statistics”, SPSS Statistics Tutorials and Statistical Guides, https://statistics.laerd.com/spss-tutorials/somers-d-using-spss-statistics.php, 访问时间:2020 年 7 月 31 日。

示例

我们计算 [4] 中给出的示例的 Somers’ D,其中连锁酒店的所有者试图确定酒店房间清洁度和客户满意度之间的关联。自变量(酒店房间清洁度)按顺序等级进行排名:“低于平均水平 (1)”、“平均水平 (2)” 或“高于平均水平 (3)”。因变量(客户满意度)在第二个等级上排名:“非常不满意 (1)”、“中度不满意 (2)”、“既不满意也不不满意 (3)”、“中度满意 (4)” 或“非常满意 (5)”。189 位客户回复了调查,结果被放入一个列联表中,其中酒店房间清洁度作为“行”变量,客户满意度作为“列”变量。

27

25

14

7

0

7

14

18

35

12

1

3

2

7

17

例如,27 位客户将其房间的清洁度评为“低于平均水平 (1)”,对应的满意度为“非常不满意 (1)”。我们按如下方式执行分析。

>>> from scipy.stats import somersd
>>> table = [[27, 25, 14, 7, 0], [7, 14, 18, 35, 12], [1, 3, 2, 7, 17]]
>>> res = somersd(table)
>>> res.statistic
0.6032766111513396
>>> res.pvalue
1.0007091191074533e-27

Somers’ D 统计量的值约为 0.6,表明样本中房间清洁度和客户满意度之间存在正相关。p 值非常小,表明在零假设下(即,整个总体(我们从中抽取了 189 位客户的样本)的统计量为零),观察到如此极端统计量的概率非常小。这支持了备择假设,即总体 Somers’ D 的真实值非零。