scipy.stats.

somersd#

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

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

与 Kendall 的 \(\tau\) 类似,Somers’ \(D\) 也是衡量两个排序之间对应关系的指标。 这两个统计量都考虑了两个排序 \(X\)\(Y\) 中一致对和不一致对的数量之差,并且都经过标准化,使得接近 1 的值表示强一致性,接近 -1 的值表示强不一致性。 它们的不同之处在于它们如何被标准化。 为了显示这种关系,Somers’ \(D\) 可以用 Kendall 的 \(\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 也允许输入数据作为单个二维列联表而不是两个单独的一维排序来提供。

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

参数:
xarray_like

一维排序数组,被视为(行)自变量。 或者,一个二维列联表。

yarray_like, optional

如果 x 是一个一维排序数组,则 y 是一个相同长度的一维排序数组,被视为(列)因变量。 如果 x 是二维数组,则忽略 y

alternative{‘two-sided’, ‘less’, ‘greater’}, optional

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

返回:
resSomersDResult

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

statisticfloat

Somers’ \(D\) 统计量。

pvaluefloat

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

table2D array

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

参见

kendalltau

计算 Kendall 的 tau,另一个相关性度量。

weightedtau

计算 Kendall 的 tau 的加权版本。

spearmanr

计算斯皮尔曼等级相关系数。

pearsonr

计算皮尔逊相关系数。

注释

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

理论上,基于 Kendall 的 \(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, Accessed July 31, 2020.

示例

我们计算 [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 的真实值为非零的备择假设。